在 EKS 叢集上部署 Windows 節點 - Amazon EKS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 EKS 叢集上部署 Windows 節點

部署之前 Windows 節點,請注意下列考量事項。

  • 您可以透過 HostProcess Pod 在 Windows 節點上使用主機聯網。如需詳細資訊,請參閱中的建立 Windows HostProcessPod Kubernetes 文件中)。

  • Amazon EKS 叢集必須包含一或多個 Linux 或 Fargate 節點以執行核心系統 Pods 只在 上執行 Linux,例如,CoreDNS.

  • kubeletkube-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 支援

  1. 如果您的叢集中沒有 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" } ] }

    如果已連接政策 (如上一個輸出所示),請略過下一個步驟。

  2. AmazonEKSVPCResource 控制器受管政策連接至您的 Amazon EKS 叢集 IAM 角色。Replace (取代) eksClusterRole 您的叢集角色名稱。

    aws iam attach-role-policy \ --role-name eksClusterRole \ --policy-arn arn:aws: iam::aws:policy/AmazonEKSVPCResourceController
  3. 建立名為 的檔案 vpc-resource-controller-configmap.yaml 具有下列內容。

    apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-windows-ipam: "true"
  4. ConfigMap 套用至您的叢集。

    kubectl apply -f vpc-resource-controller-configmap.yaml
  5. 確認您的 aws-authConfigMap包含執行個體角色的映射 Windows 節點,以包含 RBAC eks: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 節點