新增 Windows worker 節點

特性狀態: Kubernetes v1.18 [beta]

本頁面解釋瞭如何將 Windows 工作節點新增到 kubeadm 叢集。

準備工作

  • 具有管理訪問許可權的正在執行的 Windows Server 2022(或更高版本)例項。
  • 一個正在執行的 kubeadm 叢集,該叢集透過 kubeadm init 建立並遵循了文件 使用 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)