添加 Windows worker 节点

特性状态: Kubernetes v1.18 [beta]

本页面解释了如何将 Windows 工作节点添加到 kubeadm 集群。

准备工作

添加 Windows worker 节点

对每台机器执行以下操作:

  1. 在机器上打开一个 PowerShell 会话。
  2. 确保您是管理员或特权用户。

然后按照下面概述的步骤进行操作。

安装 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 的其他信息

如果您没有令牌,可以通过在控制平面节点上运行以下命令来获取:

# 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

默认情况下,节点加入令牌在 24 小时后过期。如果您在当前令牌过期后将节点加入集群,您可以通过在控制平面节点上运行以下命令来创建新令牌:

# 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 需要比仅仅在清单文件上运行 kubectl apply 更多的步骤。此外,运行在控制平面节点上的 CNI 插件必须准备好支持运行在 Windows 工作节点上的 CNI 插件。

目前只有少数 CNI 插件支持 Windows。下面您可以找到它们的单独设置说明:

安装适用于 Windows 的 kubectl(可选)

请参阅 在 Windows 上安装和设置 kubectl

下一步

本页面上的项目引用了提供 Kubernetes 所需功能的第三方产品或项目。Kubernetes 项目作者不负责这些第三方产品或项目。有关更多详细信息,请参阅 CNCF 网站指南

在提议添加额外第三方链接的更改之前,你应该阅读内容指南

上次修改于 2024 年 9 月 13 日太平洋标准时间下午 6:00:将 Windows 节点支持标记为 Beta (08a178b414)