協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 EKS 叢集上部署 Windows 節點
了解如何啟用及管理對 Amazon EKS 叢集的 Windows 支援,以便同時執行 Linux 容器與 Windows 容器。
考量事項
部署 Windows 工作節點之前,請注意下列考量事項。
-
EKS 自動模式不支援 Windows 節點
-
您可以透過
HostProcessPod 在 Windows 節點上使用主機聯網。如需詳細資訊,請參閱 Kubernetes 文件中的建立 Windows HostProcessPod。 -
Amazon EKS 叢集必須包含一或多個 Linux 或 Fargate 節點,才能執行只在 Linux 上執行的核心系統 Pod,例如 CoreDNS。
-
kubelet和kube-proxy事件日誌會重新導向至EKS Windows事件日誌,且其限制會設定為 200 MB。 -
您不能對在 Windows 節點上執行 Pod 使用指派安全群組給個別 Pod。
-
您不能將自訂聯網與 Windows 節點搭配使用。
-
您不能將
IPv6與 Windows 節點搭配使用。 -
Windows 節點支援每個節點一個彈性網路介面。依預設,每個 Windows 節點可以執行的 Pod 數量,等於節點執行個體類型的每個彈性網路介面可用的 IP 位址數量減去一。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的每個執行個體類型每個網路介面的 IP 位址。
-
在 Amazon EKS 叢集中,具有負載平衡器的單一服務最多可支援 1024 個後端 Pod。每個 Pod 都有自己的唯一 IP 地址。自 OS Build 17763.2746
起的 Windows Server 更新 後,過去的 64 個 Pod 限制已不存在。 -
Windows 容器不支援 Fargate 上的 Amazon EKS Pod。
-
Windows 作為主機的作業系統時,您不能使用 Amazon EKS 混合節點。
-
無法從
vpc-resource-controllerPod 擷取日誌。您先前在將控制器部署到資料平面時可以這麼做。 -
在將
IPv4地址指派給新的 Pod 之前,有一段冷卻期間。這可以防止流量因kube-proxy規則過時而流動到具有相同IPv4地址的較舊 Pod。 -
在 GitHub 上管理控制器的來源。若要對控制器做出貢獻或提出問題,請造訪 GitHub 上的專案
。 -
為 Windows 受管節點群組指定自訂 AMI ID 時,請將
eks:kube-proxy-windows新增至您的 AWS IAM Authenticator 組態映射。如需詳細資訊,請參閱指定 AMI ID 時的限制和條件。 -
若保留您的可用 IPv4 位址對於子網路非常重要,請參閱 EKS 最佳實務指南 - Windows 網路 IP 位址管理
來獲取指引。 -
EKS 存取項目考量
-
若搭配 Windows 節點使用存取項目,需要使用類型
EC2_WINDOWS。如需詳細資訊,請參閱建立存取項目。如需建立適用於 Windows 節點的存取項目:
aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws: iam::111122223333:role/<role-name> --type EC2_Windows
-
先決條件
-
現有的叢集。
-
叢集必須至少有一個 (建議至少有兩個) Linux 節點或 Fargate Pod,才能執行 CoreDNS。如果啟用舊式 Windows 支援,則必須使用 Linux 節點 (不能使用 Fargate Pod) 來執行 CoreDNS。
-
現有的 Amazon EKS 叢集 IAM 角色。
啟用 Windows 支援
-
如果叢集中沒有 Amazon Linux 節點,並且使用 Pod 的安全群組,請跳至下一個步驟。否則,請確認
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" } ] }如果已連接政策 (如上一個輸出所示),請略過下一個步驟。
-
連接 AmazonEKSVPCResourceController 受管政策至您的 Amazon EKS 叢集 IAM 角色。使用叢集角色名稱取代
eksClusterRole。aws iam attach-role-policy \ --role-name eksClusterRole \ --policy-arn arn:aws: iam::aws:policy/AmazonEKSVPCResourceController -
更新 VPC CNI ConfigMap 以啟用 Windows IPAM。請注意,若使用 Helm Chart 在叢集上安裝 VPC CNI,或作為 Amazon EKS 附加元件,可能無法直接修改 ConfigMap。若要了解設定 Amazon EKS 附加元件的相關資訊,請參閱 確定您可為 Amazon EKS 附加元件自訂的欄位。
-
使用下列內容,建立名為
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-authconfigmap:-
請確認您的
aws-authConfigMap包含 Windows 節點執行個體角色的映射,以包含eks:kube-proxy-windowsRBAC 許可群組。您可以透過執行以下命令來驗證。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-authConfigMap的詳細資訊,請參閱 將 aws-authConfigMap 套用至您的叢集。
-
-
若叢集的驗證模式已設定為停用
aws-authconfigmap,則您可使用 EKS 存取項目。建立新的節點角色,以便與 Windows 執行個體配合使用,並且 EKS 將自動建立類型為EC2_WINDOWS的存取項目。
部署 Windows Pod
在將 Pod 部署到叢集時,您需要指定在執行混合節點類型時所使用的作業系統。
對於 Linux Pod,請在清單檔案中使用下列節點選取器文字。
nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64
對於 Windows Pod,請在清單檔案中使用下列節點選取器文字。
nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64
您可以部署範例應用程式來查看正在使用的節點選擇器。
在 Windows 節點上支援更多數量的 Pod
在 Amazon EKS 中,每個 Pod 都會從您的 VPC 配置一個 IPv4 地址。因此,即使有足夠的資源可以在節點上執行更多 Pod,您能部署到節點的 Pod 數量也會受到可用 IP 位址的限制。由於 Windows 節點僅支援一個彈性網路介面,因此依預設,Windows 節點上可用 IP 地址的數量上限為:
Number of private IPv4 addresses for each interface on the node - 1
一個 IP 位址用作網路介面的主要 IP 位址,因此無法將其配置給 Pod。
您可以啟用 IP 字首委派,在 Windows 節點上啟用更多數量的 Pod。此功能可讓您將 /28 IPv4 字首指派給主要網路介面,而不是指派次要 IPv4 位址。而指派 IP 字首會將節點上可用 IPv4 地址的數量上限增加到:
(Number of private IPv4 addresses assigned to the interface attached to the node - 1) * 16
由於可用 IP 位址的數量大幅增加,可用的 IP 位址不應限制您擴展節點上 Pod 數量的能力。如需詳細資訊,請參閱將更多 IP 位址指派給具有字首的 Amazon EKS 節點。