新增 Windows worker 節點
Kubernetes v1.18 [beta]
本頁面解釋瞭如何將 Windows 工作節點新增到 kubeadm 叢集。
準備工作
- 具有管理訪問許可權的正在執行的 Windows Server 2022(或更高版本)例項。
- 一個正在執行的 kubeadm 叢集,該叢集透過
kubeadm init
建立並遵循了文件 使用 kubeadm 建立叢集 中的步驟。
新增 Windows worker 節點
注意
為了方便將 Windows 工作節點新增到叢集,使用了來自倉庫 https://sigs.k8s.io/sig-windows-tools 的 PowerShell 指令碼。對每臺機器執行以下操作:
- 在機器上開啟一個 PowerShell 會話。
- 確保您是管理員或特權使用者。
然後按照下面概述的步驟進行操作。
安裝 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 的其他資訊
注意
要為<control-plane-host>:<control-plane-port>
指定 IPv6 元組,IPv6 地址必須用方括號括起來,例如:[2001:db8::101]:2073
。如果您沒有令牌,可以透過在控制平面節點上執行以下命令來獲取:
# 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(可選)
下一步
- 請參閱如何 新增 Linux 工作節點。
本頁面上的專案引用了提供 Kubernetes 所需功能的第三方產品或專案。Kubernetes 專案作者不負責這些第三方產品或專案。有關更多詳細資訊,請參閱 CNCF 網站指南。
在提議新增額外第三方連結的更改之前,你應該閱讀內容指南。