本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 EKS 叢集上部署 Windows 節點
部署之前 Windows 節點,請注意下列考量事項。
-
您可以透過
HostProcess
Pod 在 Windows 節點上使用主機聯網。如需詳細資訊,請參閱中的建立 Windows HostProcessPodKubernetes 文件中)。 -
Amazon EKS 叢集必須包含一或多個 Linux 或 Fargate 節點以執行核心系統 Pods 只在 上執行 Linux,例如,CoreDNS.
-
kubelet
和kube-proxy
事件日誌會重新導向至EKS Windows
事件日誌,並設定為 200 MB 限制。 -
您無法使用 將安全群組指派給具有 的個別 Pod Pods 在 上執行 Windows 節點。
-
您無法搭配 使用自訂聯網 Windows 節點。
-
您無法
IPv6
搭配 使用 Windows 節點。 -
Windows 節點支援每個節點一個彈性網路介面。根據預設,Pods 您可以根據 執行 Windows 節點等於節點執行個體類型的每個彈性網路介面可用的 IP 地址數量減去一個。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的每個執行個體類型的每個網路介面 IP 地址。
-
在 Amazon EKS 叢集中,具有負載平衡器的單一服務最多可以支援 1024 個後端 Pods。 每個 Pod 有自己的唯一 IP 地址。上一個限制為 64 Pods 從作業系統建置 17763.2746
開始的 Windows Server 更新 之後, 不再是這種情況。 -
Amazon EKS 不支援 Windows 容器 Pods 在 Fargate 上。
-
您無法從 Pod
vpc-resource-controller
擷取日誌。您先前在將控制器部署到資料平面時可以這麼做。 -
在將
IPv4
地址指派給新的 Pod 之前,有一段冷卻期間。這可以防止流量因kube-proxy
規則過時而流動到具有相同IPv4
地址的較舊 Pod。 -
控制器的來源受 管理 GitHub。 若要對控制器做出貢獻或提交問題,請造訪 上的專案
GitHub. -
指定 的自訂 AMI ID 時 Windows 受管節點群組,
eks:kube-proxy-windows
新增至您的 AWS IAM Authenticator 組態映射。如需詳細資訊,請參閱指定 AMI ID 時的限制和條件。 -
如果保留可用的 IPv4 地址對於子網路至關重要,請參閱 EKS 最佳實務指南 - Windows Networking IP 地址管理
以取得指引。 -
現有的叢集。叢集必須執行其中一個 Kubernetes 下表列出的版本和平台版本。任何 Kubernetes 和 平台版本也支援高於列出的版本。
Kubernetes 版本 平台版本 1.31
eks.4
1.30
eks.2
1.29
eks.1
1.28
eks.1
1.27
eks.1
1.26
eks.1
1.25
eks.1
1.24
eks.2
-
您的叢集必須至少有一個 (我們建議至少兩個) Linux 節點或 Fargate Pod 執行 CoreDNS。 如果您啟用舊版 Windows 支援,您必須使用 Linux 節點 (您無法使用 Fargate Pod) 以執行 CoreDNS.
-
現有的 Amazon EKS 叢集 IAM 角色。
Enable Windows 支援
-
如果您的叢集中沒有 Amazon Linux 節點,並使用 的安全群組 Pods,請跳至下一個步驟。否則,請確認
AmazonEKSVPCResourceController
受管政策會連接至叢集角色。Replace (取代)eksClusterRole
您的叢集角色名稱。aws iam list-attached-role-policies --role-name eksClusterRole
範例輸出如下。
{ "AttachedPolicies": [ { "PolicyName": "AmazonEKSClusterPolicy", "PolicyArn": "arn:aws: iam::aws:policy/AmazonEKSClusterPolicy" }, { "PolicyName": "AmazonEKSVPCResourceController", "PolicyArn": "arn:aws: iam::aws:policy/AmazonEKSVPCResourceController" } ] }
如果已連接政策 (如上一個輸出所示),請略過下一個步驟。
-
將 AmazonEKSVPCResource 控制器受管政策連接至您的 Amazon EKS 叢集 IAM 角色。Replace (取代)
eksClusterRole
您的叢集角色名稱。aws iam attach-role-policy \ --role-name eksClusterRole \ --policy-arn arn:aws: iam::aws:policy/AmazonEKSVPCResourceController
-
建立名為 的檔案
vpc-resource-controller-configmap.yaml
具有下列內容。apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-windows-ipam: "true"
-
將
ConfigMap
套用至您的叢集。kubectl apply -f vpc-resource-controller-configmap.yaml
-
確認您的
aws-auth
ConfigMap
包含執行個體角色的映射 Windows 節點,以包含 RBACeks:kube-proxy-windows
許可群組。您可以透過執行以下命令來驗證。kubectl get configmap aws-auth -n kube-system -o yaml
範例輸出如下。
apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows # This group is required for Windows DNS resolution to work rolearn: arn:aws: iam::111122223333:role/eksNodeRole username: system:node:{{EC2PrivateDNSName}} [...]
您應該會在群組下看到
eks:kube-proxy-windows
列出。如果未指定群組,您需要更新ConfigMap
或建立 以包含所需的群組。如需aws-auth
ConfigMap
的詳細資訊,請參閱 將 aws-authConfigMap 套用至您的叢集。
部署 Windows Pod
當您將 Pod 部署至叢集時,您需要指定在執行節點類型混合時所使用的作業系統。
用於 Linux Pods,請在您的資訊清單中使用以下節點選取器文字。
nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64
用於 Windows Pods,請在您的資訊清單中使用以下節點選取器文字。
nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64
您可以部署範例應用程式來查看正在使用的節點選擇器。
支援更高版本 Pod Windows 節點上的密度
在 Amazon EKS 中,每個 Pod 從 VPC 配置IPv4
地址。因此,Pods 您可以部署到節點的 受到可用 IP 地址的限制,即使有足夠的資源可以執行更多 Pods 在節點上。由於 Windows 節點僅支援一個彈性網路介面,因此依預設,Windows 節點上可用 IP 地址的數量上限為:
Number of private IPv4 addresses for each interface on the node - 1
一個 IP 地址用作網路介面的主要 IP 地址,因此無法將其配置給 Pods.
您可以啟用更高的 Pod 啟用 IP 字首委派,以降低 Windows 節點的密度。此功能可讓您將 /28
IPv4
字首指派給主要網路介面,而不是指派次要 IPv4
位址。而指派 IP 字首會將節點上可用 IPv4
地址的數量上限增加到:
(Number of private IPv4 addresses assigned to the interface attached to the node - 1) * 16
由於可用 IP 地址的數量大幅增加,可用的 IP 地址不應限制您擴展 Pods 節點上的 。如需詳細資訊,請參閱使用字首將更多 IP 地址指派給 Amazon EKS 節點。