新增 Windows 工作節點
Kubernetes v1.18 [beta]
此頁面說明如何將 Windows 工作節點新增到 kubeadm 叢集。
開始之前
- 一個正在運行的 Windows Server 2022 (或更高版本) 執行個體,並具有管理員存取權限。
- 一個由
kubeadm init
建立且遵循文件 使用 kubeadm 建立叢集 中步驟運行的 kubeadm 叢集。
新增 Windows 工作節點
注意
為了方便將 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.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 的其他資訊
注意
若要為<control-plane-host>:<control-plane-port>
指定 IPv6 元組,IPv6 位址必須用方括號括起來,例如:[2001:db8::101]:2073
。如果您沒有 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 (選用)
下一步
- 請參閱如何 新增 Linux 工作節點。
此頁面上的項目參考了第三方產品或專案,這些產品或專案提供了 Kubernetes 所需的功能。 Kubernetes 專案作者不對這些第三方產品或專案負責。 有關更多詳細資訊,請參閱 CNCF 網站指南。
在提議新增額外第三方連結的變更之前,您應該先閱讀內容指南。