新增 Windows 工作節點

功能狀態: Kubernetes v1.18 [beta]

此頁面說明如何將 Windows 工作節點新增到 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 的其他資訊

如果您沒有 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 (選用)

請參閱 在 Windows 上安裝和設定 kubectl

下一步

此頁面上的項目參考了第三方產品或專案,這些產品或專案提供了 Kubernetes 所需的功能。 Kubernetes 專案作者不對這些第三方產品或專案負責。 有關更多詳細資訊,請參閱 CNCF 網站指南

在提議新增額外第三方連結的變更之前,您應該先閱讀內容指南

上次修改時間為 2024 年 9 月 13 日下午 6:00 PST:將 Windows 節點支援標記為 Beta 版 (08a178b414)