添加 Windows 工作节点
Kubernetes v1.18 [beta]
本页解释如何向 kubeadm 集群添加 Windows 工作节点。
开始之前
- 一个已安装 Windows Server 2022 (或更高版本) 实例并具有管理员访问权限的机器。
- 一个运行中的 kubeadm 集群,该集群通过
kubeadm init
创建,并遵循文档 使用 kubeadm 创建集群 中的步骤。
添加 Windows 工作节点
注意
为了方便向集群添加 Windows 工作节点,使用了来自 https://sigs.k8s.io/sig-windows-tools 仓库的 PowerShell 脚本。对每台机器执行以下操作
- 在机器上打开 PowerShell 会话。
- 确保你是 Administrator 或具有特权的用户。
然后继续执行下面列出的步骤。
安装 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.33
- 如果需要,调整
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
。如果你没有 token,可以通过在控制平面节点上运行以下命令获取:
# Run this on a control plane node
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
默认情况下,节点加入 token 会在 24 小时后过期。如果你在当前 token 过期后将节点加入集群,可以通过在控制平面节点上运行以下命令创建一个新的 token:
# Run this on a control plane node
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 比仅仅在 manifest 文件上运行 kubectl apply
需要更多步骤。此外,运行在控制平面节点上的 CNI 插件必须准备好支持运行在 Windows 工作节点上的 CNI 插件。
目前只有少数 CNI 插件支持 Windows。下面你可以找到它们的单独安装说明:
安装 Windows 版 kubectl (可选)
下一步
- 参见如何 添加 Linux 工作节点。
本页上的项目引用了提供 Kubernetes 所需功能的第三方产品或项目。Kubernetes 项目作者对这些第三方产品或项目不负责。有关更多详细信息,请参阅 CNCF 网站指南。
在提议添加额外第三方链接的更改之前,你应该阅读 内容指南。