本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Windows 工作者節點
從 1.14 版開始,Amazon EKS 支援允許執行 Windows 容器的 Windows 節點。除了具有 Windows 節點之外,叢集中的 Linux 節點也必須執行 CoreDNS,因為 Microsoft 尚不支援主機網路模式。因此,Windows EKS 叢集將是 Windows 節點和至少一個 Linux 節點的混合。Linux 節點對叢集的運作至關重要,因此,對於生產級叢集,建議至少有兩個適用於 HA 的 t2.large Linux 節點。
注意
您不再需要在 Linux 工作者節點上安裝 VPC 資源控制器,即可在 2021 年 10 月 22 日之後建立的 EKS 叢集中執行 Windows 工作負載。您可以透過 ConfigMap 設定在 EKS 控制平面上啟用 Windows IP 地址管理 (詳細資訊請參閱 link:eks/latest/userguide/windows-support.html)。eksctl 會在建立 Windows 節點群組時自動修補 ConfigMap 以啟用 Windows IP 地址管理。
使用 Windows 支援建立新的叢集
組態檔案語法允許在單一命令中使用 Windows 支援建立功能完整的叢集:
# cluster.yaml
# An example of ClusterConfig containing Windows and Linux node groups to support Windows workloads
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: windows-cluster
region: us-west-2
nodeGroups:
- name: windows-ng
amiFamily: WindowsServer2019FullContainer
minSize: 2
maxSize: 3
managedNodeGroups:
- name: linux-ng
instanceType: t2.large
minSize: 2
maxSize: 3
- name: windows-managed-ng
amiFamily: WindowsServer2019FullContainer
minSize: 2
maxSize: 3
eksctl create cluster -f cluster.yaml
若要使用 Windows 未受管節點群組建立新叢集而不使用組態檔案,請發出下列命令:
eksctl create cluster --managed=false --name=windows-cluster --node-ami-family=WindowsServer2019CoreContainer
將 Windows 支援新增至現有的 Linux 叢集
若要在具有 Linux 節點 (AmazonLinux2 AMI 系列) 的現有叢集上啟用執行 Windows 工作負載,您需要新增 Windows 節點群組。
新增對 Windows 受管節點群組的支援 (--managed=true 或省略旗標)。
eksctl create nodegroup --managed=false --cluster=existing-cluster --node-ami-family=WindowsServer2019CoreContainer eksctl create nodegroup --cluster=existing-cluster --node-ami-family=WindowsServer2019CoreContainer
為了確保工作負載排程在正確的作業系統上,它們必須具有nodeSelector目標鎖定其必須在其上執行的作業系統:
# Targeting Windows nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64
# Targeting Linux nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64
如果您使用的叢集早於 1.19 kubernetes.io/os和 kubernetes.io/arch標籤,則需要beta.kubernetes.io/arch分別以 beta.kubernetes.io/os和 取代。