部署網際網路存取受限的私有叢集 - Amazon EKS

協助改善此頁面

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

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

部署網際網路存取受限的私有叢集

本主題說明如何部署部署在 上的 Amazon EKS叢集 AWS 雲端,但沒有傳出網際網路存取權。如果您在 上有本機叢集 AWS Outposts,請參閱 在 AWS Outposts 上建立 Amazon Linux 節點,而非本主題。

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

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

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

  • 自我管理 Linux 以及 Windows 節點必須在啟動之前包含下列引導引數。這些引數會繞過 Amazon EKS Introspection,不需要EKSAPI從 內部存取 AmazonVPC。

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

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

      範例輸出如下。

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

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

      傳回的輸出是長字串。

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

    • 用於 Linux 節點:

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

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

    • 用於 Windows 節點:

      注意

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

      -APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority

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

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

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

  • 叢集的VPC子網路必須具有VPC您 AWS 服務 Pods 需要 的存取權。如需詳細資訊,請參閱使用介面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 Logs com.amazonaws。region-code.logs
    AWS Security Token Service (使用 服務帳戶IAM的角色時需要) com.amazonaws。region-code.sts
考量事項
  • 任何自我管理節點都必須部署到具有所需VPC介面端點的子網路。如果您建立受管節點群組,VPC介面端點安全群組必須允許子網路CIDR的 ,或者必須將建立的節點安全群組新增至VPC介面端點安全群組。

  • 如果您的 Pods 使用 Amazon EFS磁碟區,接著在部署 之前使用 Amazon 存放彈性檔案系統 EFS,必須變更驅動程式的 kustomization.yaml 檔案,以將容器映像設定為使用 AWS 區域 與 Amazon EKS叢集相同的映像。

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

    控制器支援具有 IP 目標的 Network Load Balancer,這些目標與 Fargate 一起使用。如需詳細資訊,請參閱 Route 應用程式和 HTTP 流量 Application Load Balancers建立 Network Load Balancer

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

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