添加 Windows 工作节点

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

本页介绍如何将 Linux 工作节点添加到 kubeadm 集群。

准备开始

  • 一个正在运行的 Windows Server 2022 (或更高版本)实例,且具备管理权限。
  • 一个正在运行的、由 kubeadm init 命令创建的集群,且集群的创建遵循 使用 kubeadm 创建集群 文档中所给的步骤。

添加 Windows 工作节点

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

  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.32
  • 根据需要调整 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 的附加信息

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

# 在控制平面节点上运行此命令
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 (可选)

参见 在 Windows 上安装和设置 kubectl

接下来

参见如何 添加 Linux 工作节点

本页面中的条目引用了第三方产品或项目,这些产品(项目)提供了 Kubernetes 所需的功能。Kubernetes 项目的开发人员不对这些第三方产品(项目)负责。请参阅CNCF 网站指南了解更多细节。

在提交更改建议,向本页添加新的第三方链接之前,你应该先阅读内容指南。

最后修改 December 15, 2024 at 6:24 PM PST: Merge pull request #49087 from Arhell/es-link (2c4497f)