私有叢集要求 - Amazon EKS

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

私有叢集要求

本主題說明如何部署在上部署但無法存取輸出網際網路的 Amazon EKS 叢集。 AWS 雲端如果您已開啟本機叢集 AWS Outposts,請參閱啟動 Outpost 上自我管理的 Amazon Linux 節點,而非本主題。

如果您不熟悉 Amazon EKS 聯網,請參閱探究 Amazon EKS 工作節點之叢集網路的奧秘。如果您的叢集沒有對外網際網路存取,則其必須符合下列需求:

  • 您的叢集必須從 VPC 中的容器登錄檔中提取映像。您可以在 VPC 中建立 Amazon Elastic Container Registry,並將容器映像複製到其中,以供節點提取。如需詳細資訊,請參閱 將容器映像從一個儲存庫複製到另一個儲存庫

  • 您的叢集必須啟用端點私有存取。這對節點向叢集端點註冊而言是必要的。端點公有存取權限並非必要。如需詳細資訊,請參閱 Amazon EKS 叢集端點存取控制

  • 自我管理 Linux 和 Windows 節點在啟動之前必須包含下列引導引數。這些引數會略過 Amazon EKS 自我檢查,並且不需要從 VPC 內存取 Amazon EKS API。

    1. 使用下列命令判斷叢集端點的值。使用您叢集的名稱取代 my-cluster

      aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text

      範例輸出如下。

      https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
    2. 使用下列命令判斷叢集憑證授權單位的值。使用您叢集的名稱取代 my-cluster

      aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text

      傳回的輸出是長字串。

    3. 將下列命令中的 cluster-endpointcertificate-authority 取代為先前命令輸出中傳回的值。如需有關在啟動自我管理節點時指定引導參數的詳細資訊,請參閱 啟動自我管理的 Amazon Linux 節點正在啟動自我管理的 Windows 節點

    • 適用於 Linux 節點:

      --apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority

      如需其他引數,請參閱 GitHub 上的 Bootstrap 指令碼

    • 適用於 Windows 節點:

      注意

      如果您使用的是自訂服務 CIDR,則需要使用 -ServiceCIDR 參數來對其進行指定。否則,叢集中 Pods 的 DNS 解析將會失敗。

      -APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority

      如需其他引數,請參閱 引導指令碼組態參數

  • 您的叢集 aws-auth ConfigMap 必須從 VPC 建立。若要進一步了解如何建立項目並將項目新增至 aws-auth ConfigMap,請在終端機中輸入 eksctl create iamidentitymapping --help。如果您的伺服器上不存在 ConfigMap,則 eksctl 會在您使用命令新增身分映射時建立它。

  • 為服務帳戶設定 IAM 角色的 Pods 會從 AWS Security Token Service (AWS STS) API 呼叫取得憑證。如果沒有輸出網際網路存取,則必須在 VPC 中建立並使用 AWS STS VPC 端點。預設情況下,大多數 AWS v1 SDK 都使用全域 AWS STS 端點 (sts.amazonaws.com),該端點不使用 AWS STS VPC 端點。若要使用 AWS STS VPC 端點,您可能需要將 SDK 設定為使用地區 AWS STS 端點 (sts.region-code.amazonaws.com)。如需詳細資訊,請參閱 設定服務帳戶的 AWS Security Token Service 端點

  • 您叢集的 VPC 子網路必須具有您的 AWS 服務 需要存取的任何 Pods 的 VPC 介面端點。如需詳細資訊,請參閱使用介面 VPC 端點存取 AWS 服務。下表列出了一些常用的服務和端點。如需完整的端點清單,請參閱《AWS PrivateLink 指南》https://docs.aws.amazon.com/vpc/latest/privatelink/中的與 AWS PrivateLink整合的AWS 服務

    服務 端點
    Amazon EC2 com.amazonaws.region-code.ec2
    Amazon Elastic Container Registry (用於提取容器映像) com.amazonaws.region-code.ecr.api、com.amazonaws.region-code.ecr.dkr 和 com.amazonaws.region-code.s3
    Application Load Balancer 與 Network Load Balancer com.amazonaws.region-code.elasticloadbalancing
    AWS X-Ray com.amazonaws.region-code.xray
    Amazon CloudWatch 日誌 com.amazonaws.region-code.logs
    AWS Security Token Service (在服務帳戶使用 IAM 角色時需要) com.amazonaws.region-code.sts
考量事項
  • 任何自我管理節點都必須部署至具有您所需 VPC 介面端點的子網路。如果您建立受管節點群組,VPC 介面端點安全群組必須允許子網路的 CIDR,或者您必須將建立的節點安全群組新增至 VPC 介面端點安全群組。

  • 如果您Pods使用 Amazon EFS 磁碟區,則必須先變更驅動程式的庫存化 .yaml 檔案Amazon EFS CSI 驅動程式,才能將容器映像設定為使用與 Amazon EKS 叢集相同 AWS 區域 的容器映像。

  • 您可以使用AWS Load Balancer Controller將 AWS 應用程式負載平衡器 (ALB) 和網路負載平衡器部署到私人叢集。部署時,您應使用命令列旗標enable-shieldenable-wafenable-wafv2 設定為 false。不支援透過傳入物件的主機名稱進行憑證探索。這是因為控制器需要連線 AWS Certificate Manager,而該控制器沒有 VPC 介面端點。

    控制器支援具有 IP 目標的 Network Load Balancer,這些目標與 Fargate 一起使用。如需詳細資訊,請參閱 Amazon EKS 上的應用程式負載平衡建立 Network Load Balancer

  • 支援 Cluster Autoscaler。部署 Cluster Autoscaler Pods 時,請確保命令列包含 --aws-use-static-instance-list=true。如需詳細資訊,請參閱 GitHub 上的使用靜態執行個體清單。工作者節點 VPC 還必須包含 VPC 端點和自動調度資源的 AWS STS VPC 端點。

  • 某些容器軟體產品使用 API 呼叫來存取 AWS Marketplace Metering Service 來監視使用情況。私有叢集不允許這些呼叫,因此您無法將這些容器類型用於私有叢集。