協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
部署 Windows EKS 叢集上的節點
部署之前 Windows 節點,請注意下列考量事項。
考量事項
-
您可以透過
HostProcess
Pod 在 Windows 節點上使用主機聯網。如需詳細資訊,請參閱建立 WindowsHostProcess
Pod在 中 Kubernetes 文件中)。 -
Amazon EKS叢集必須包含一或多個 Linux 或 Fargate 節點以執行核心系統 Pods 只在 上執行 Linux,例如,CoreDNS.
-
kubelet
和kube-proxy
事件日誌會重新導向至EKS
Windows 事件日誌 和 設定為 200 MB 限制。 -
您無法將安全群組指派至個別 pods搭配 使用 Pods 在 上執行 Windows 節點。
-
您無法搭配 使用自訂網路 Windows 節點。
-
您無法
IPv6
搭配 使用 Windows 節點。 -
Windows 節點支援每個節點一個彈性網路介面。根據預設,Pods 您可以根據 執行 Windows 節點等於節點執行個體類型的每個彈性網路介面可用的 IP 地址數量減去 1。如需詳細資訊,請參閱 Amazon EC2使用者指南 中的每個執行個體類型的每個網路介面 IP 地址。
-
在 Amazon EKS叢集中,具有負載平衡器的單一服務最多可以支援 1024 個後端 Pods。 每個 Pod 具有自己的唯一 IP 地址。先前的限制為 64 Pods 從 OS Build 17763.2746
開始的 Windows Server 更新 之後, 不再是這種情況。 -
Amazon 不支援 Windows 容器 EKS Pods 在 Fargate 上。
-
無法從
vpc-resource-controller
Pod 擷取日誌。您先前在將控制器部署到資料平面時可以這麼做。 -
在將
IPv4
地址指派給新的 Pod 之前,有一段冷卻期間。這可以防止流量因kube-proxy
規則過時而流動到具有相同IPv4
地址的較舊 Pod。 -
控制器的來源受 管理 GitHub。 若要為控制器貢獻或提交問題,請造訪 上的專案
GitHub. -
指定 的自訂 AMI ID 時 Windows 受管節點群組,
eks:kube-proxy-windows
新增至您的 AWS IAM驗證器組態映射。如需詳細資訊,請參閱指定 AMI ID 時的限制和條件。 -
如果保留可用IPv4地址對於子網路至關重要,請參閱EKS最佳實務指南 - Windows Networking IP Address Management
以取得指引。
必要條件
-
現有的叢集。叢集必須執行其中一個 Kubernetes 下表列出的版本和平台版本。任何 Kubernetes 和 平台版本也支援高於列出的版本。
Kubernetes version 平台版本 1.31 eks.1 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.
Enable Windows 支援
若要啟用 Windows 叢集支援
-
如果您的叢集中沒有 Amazon Linux 節點,並使用 的安全群組 Pods,請跳至下一個步驟。否則,請確認
AmazonEKSVPCResourceController
受管政策會連接至叢集角色。使用您的叢集角色名稱取代
。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" } ] }
如果已連接政策 (如上一個輸出所示),請略過下一個步驟。
-
將 mazonEKSVPCResourceA Controller 受管政策連接至您的 Amazon EKS 群集IAM角色。使用您的叢集角色名稱取代
。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 節點以包含eks:kube-proxy-windows
RBAC許可群組。您可以透過執行以下命令來驗證。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 從 配置IPv4
地址VPC。因此,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 節點上的 。如需詳細資訊,請參閱為具有前置字元的 Amazon EKS 節點指派更多 IP 地址。