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

協助改善此頁面

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

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

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

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

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

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

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

  • 自我管理 Linux 和 Windows 節點在啟動之前必須包含下列引導引數。這些參數繞過 Amazon 內EKS省,不需要EKSAPI從. VPC

    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 上的 Bootstrap 指令碼

    • 適用於 Windows 節點:

      注意

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

      -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 呼叫取得認證。如果沒有對外網際網路存取,您必須在VPC. AWS STS 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子網路必須具有任何您Pods需要存取 AWS 服務 的VPC介面端點。如需詳細資訊,請參閱使用介面VPC端點存取 AWS 服務。下表列出了一些常用的服務和端點。如需完整的端點清單,請參閱《AWS PrivateLink 指南》https://docs.aws.amazon.com/vpc/latest/privatelink/中的與 AWS PrivateLink整合的AWS 服務

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

  • 如果您Pods使用 Amazon EFS 卷,則在部署之前透過 Amazon 儲存彈性檔案系統 EFS,必須更改驅動程序的 kustomization.yaml 文件,以將容器映像設置為與 Amazon 集群相同。 AWS 區域 EKS

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

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

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

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