協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格的 GitHub 上的編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
部署 Windows 工作節點之前,請注意下列考量事項。
-
EKS Auto Mode 不支援 Windows 節點
-
您可以透過
HostProcess
Pod 在 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 開始的 Windows Server 更新
之後,先前限制為 64 個 Pod。 17763.2746 -
Fargate 上的 Amazon EKS Pod 不支援 Windows 容器。
-
您無法將 Amazon EKS 混合節點與 Windows 搭配使用,做為主機的作業系統。
-
您無法從 Pod
vpc-resource-controller
擷取日誌。您先前在將控制器部署到資料平面時可以這麼做。 -
在將
IPv4
地址指派給新的 Pod 之前,有一段冷卻期間。這可以防止流量因kube-proxy
規則過時而流動到具有相同IPv4
地址的較舊 Pod。 -
在 GitHub 上管理控制器的來源。若要對控制器做出貢獻或提出問題,請造訪 GitHub 上的專案
。 -
為 Windows 受管節點群組指定自訂 AMI ID 時,請將
eks:kube-proxy-windows
新增至您的 AWS IAM Authenticator 組態映射。如需詳細資訊,請參閱指定 AMI ID 時的限制和條件。 -
如果保留可用的 IPv4 地址對您的子網路至關重要,請參閱 EKS 最佳實務指南 - Windows 網路 IP 地址管理
以取得指引。 -
現有的叢集。
-
您的叢集必須至少有一個 (我們建議至少兩個) 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-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 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 數量受到可用 IP 地址的限制,即使有足夠的資源可在節點上執行更多 Pod。由於 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 節點。