添加 Windows 工作节点
Kubernetes v1.18 [beta]
本页介绍如何将 Linux 工作节点添加到 kubeadm 集群。
准备开始
- 一个正在运行的 Windows Server 2022 (或更高版本)实例,且具备管理权限。
- 一个正在运行的、由
kubeadm init
命令创建的集群,且集群的创建遵循 使用 kubeadm 创建集群 文档中所给的步骤。
添加 Windows 工作节点
说明:
为了方便将 Windows 工作节点添加到集群,下面会用到代码仓库 https://sigs.k8s.io/sig-windows-tools 里的 PowerShell 脚本。
对每台机器执行以下操作:
- 在机器上打开一个 PowerShell 会话。
- 确保你是管理员或具有特权的用户。
然后继续执行下面的步骤。
安装 Containerd
要安装 Containerd,首先运行以下命令:
curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/hostprocess/Install-Containerd.ps1
然后运行以下命令,但要首先将 CONTAINERD_VERSION
替换为
Containerd 仓库 中的最新发布版本。
版本号不能带有前缀 v
。例如,使用 1.7.22
而不是 v1.7.22
:
.\Install-Containerd.ps1 -ContainerDVersion CONTAINERD_VERSION
- 根据需要调整
Install-Containerd.ps1
的所有其他参数,例如netAdapterName
。 - 如果你的机器不支持 Hyper-V,且无法托管 Hyper-V 的隔离容器,
请设置
skipHypervisorSupportCheck
。 - 如果你要更改
Install-Containerd.ps1
中的可选参数CNIBinPath
和/或CNIConfigPath
,则需要配置已安装的 Windows CNI 插件,使之与这里的值匹配。
安装 kubeadm 和 kubelet
运行以下命令安装 kubeadm 和 kubelet:
curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/hostprocess/PrepareNode.ps1
.\PrepareNode.ps1 -KubernetesVersion v1.34
- 根据需要调整
PrepareNode.ps1
中的参数KubernetesVersion
。
运行 kubeadm join
运行 kubeadm init
所输出的命令。例如:
kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>
kubeadm join 的附加信息
说明:
要为 <control-plane-host>:<control-plane-port>
指定一个 IPv6 元组,
IPv6 地址必须用方括号括起来,例如:[2001:db8::101]:2073
。
如果你没有令牌,可以在控制平面节点上运行以下命令来获取:
# 在控制平面节点上运行此命令
sudo kubeadm token list
命令输出同以下内容类似:
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
8ewj1p.9r9hcjoqgajrj4gi 23h 2018-06-12T02:51:28Z authentication, The default bootstrap system:
signing token generated by bootstrappers:
'kubeadm init'. kubeadm:
default-node-token
默认情况下,节点加入令牌会在 24 小时后过期。当前令牌过期后,如果想把节点加入集群, 可以在控制平面节点上运行以下命令来创建新令牌:
# 在控制平面节点上运行此命令
sudo kubeadm token create
命令输出同以下内容类似:
5didvk.d09sbcov8ph2amjw
如果你没有 --discovery-token-ca-cert-hash
的具体值,可以在控制平面节点上运行以下命令来获取:
sudo cat /etc/kubernetes/pki/ca.crt | openssl x509 -pubkey | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'
命令输出同以下内容类似:
8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78
kubeadm join
命令的输出应该同以下内容类似:
[preflight] Running pre-flight checks
... (log output of join workflow) ...
Node join complete:
* Certificate signing request sent to control-plane and response
received.
* Kubelet informed of new secure connection details.
Run 'kubectl get nodes' on control-plane to see this machine join.
几秒钟后,你应该在 kubectl get nodes
的输出中看到该节点。
(例如,可以在控制平面节点上运行 kubectl
)。
网络配置
在混合了 Linux 和 Windows 节点的集群中,CNI 设置所需的步骤不仅仅是对清单文件运行
kubectl apply
。此外,运行在控制平面节点上的 CNI 插件必须能够支持在 Windows 工作节点上
运行的 CNI 插件。
目前只有少数 CNI 插件支持 Windows。以下是它们各自的设置说明:
在 Windows 上安装 kubectl (可选)
接下来
参见如何 添加 Linux 工作节点。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.