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

協助改善此頁面

想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。

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

部署 Windows EKS 叢集上的節點

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

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

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

  • kubeletkube-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.

  • 現有 Amazon EKS 群集IAM角色

Enable Windows 支援

若要啟用 Windows 叢集支援
  1. 如果您的叢集中沒有 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" } ] }

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

  2. mazonEKSVPCResourceA Controller 受管政策連接至您的 Amazon EKS 群集IAM角色。使用您的叢集角色名稱取代 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 節點以包含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-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 地址