協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
部署網際網路存取受到限制的私有叢集
本主題說明如何在沒有對外網際網路存取的情況下部署 Amazon EKS 叢集,該叢集在 AWS Cloud 上部署。若您在 AWS Outposts 上具有本機叢集,請參閱 在 AWS Outpost 上建立 Amazon Linux 節點,而非本主題。
如果您不熟悉 Amazon EKS 聯網,請參閱探究 Amazon EKS 工作節點之叢集網路的奧秘
叢集架構要求
-
叢集必須從 VPC 中的容器登錄檔中提取映像。您可以在 VPC 中建立 Amazon Elastic Container Registry,並將容器映像複製到其中,以供節點提取。如需詳細資訊,請參閱 將容器映像從一個儲存庫複製到另一個儲存庫。
-
您的叢集必須啟用端點私有存取。這對節點向叢集端點註冊而言是必要的。端點公有存取權限並非必要。如需詳細資訊,請參閱 叢集 API 伺服器端點。
節點要求
-
自我管理 Linux 與 Windows 節點在啟動之前必須包含下列引導引數。這些引數會略過 Amazon EKS 自我檢查,並且不需要從 VPC 內存取 Amazon EKS API。
-
使用下列命令判斷叢集端點的值。使用您叢集的名稱取代
my-cluster。aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text範例輸出如下。
https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com -
使用下列命令判斷叢集憑證授權單位的值。使用您叢集的名稱取代
my-cluster。aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text傳回的輸出是長字串。
-
將下列命令中的
cluster-endpoint與certificate-authority取代為先前命令輸出中傳回的值。如需有關在啟動自我管理節點時指定引導參數的詳細資訊,請參閱 建立自我管理的 Amazon Linux 節點 和 建立自我管理的 Microsoft Windows 節點。-
對於 Linux 節點:
--apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority如需其他引數,請參閱 GitHub 上的 Bootstrap 指令碼
。 -
對於 Windows 節點:
注意
如果您使用的是自訂服務 CIDR,則需要使用
-ServiceCIDR參數來對其進行指定。否則,叢集中 Pod 的 DNS 解析將會失敗。-APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority如需其他引數,請參閱 引導指令碼組態參數。
-
-
-
您的叢集
aws-authConfigMap必須從 VPC 建立。若要進一步了解如何建立項目並將項目新增至aws-authConfigMap,請在終端機中輸入eksctl create iamidentitymapping --help。如果您的伺服器上不存在ConfigMap,則eksctl會在您使用命令新增身分映射時建立它。
Pod 要求
-
Pod 身分識別 - 透過 EKS Pod 身分識別設定的 Pod 會從 EKS 驗證 API 獲取憑證。如果沒有傳出網際網路存取權,則必須針對 EKS 驗證 API 建立並使用 VPC 端點:
com.amazonaws.region-code.eks-auth。若要了解 EKS 與 EKS 驗證 VPC 端點的相關詳細資訊,請參閱 使用 AWS PrivateLink 存取 Amazon EKS。 -
IRSA - 針對服務帳戶設定 IAM 角色的 Pod 會從 AWS Security Token Service (AWS STS) API 呼叫獲取憑證。如果沒有對外網際網路存取,則必須在 VPC 中建立並使用 AWS STS VPC 端點。大部分 AWS
v1SDK 預設會使用全域 AWS STS 端點 (sts.amazonaws.com),其不使用 AWS STS VPC 端點。若要使用 AWS STS VPC 端點,可能需要設定 SDK 使用區域 AWS STS 端點 (sts.)。如需詳細資訊,請參閱 為服務帳戶設定 AWS Security Token Service 端點。region-code.amazonaws.com -
您叢集的 VPC 子網路必須具有您的 Pod 需要存取的任何 AWS 服務的 VPC 介面端點。如需詳細資訊,請參閱使用介面 VPC 端點存取 AWS 服務。下表列出了一些常用的服務和端點。如需完整的端點清單,請參閱 AWS PrivateLink 指南中的與 AWS PrivateLink 整合的 AWS 服務。
建議針對 VPC 端點啟用私有 DNS 名稱,這樣一來,工作負載就能繼續使用公有 AWS 服務端點且不會發生問題。
服務 端點 Amazon EC2
com.amazonaws.
region-code.ec2Amazon Elastic Container Registry (用於提取容器映像)
com.amazonaws.
region-code.ecr.api、com.amazonaws.region-code.ecr.dkr 和 com.amazonaws.region-code.s3Amazon Application Load Balancer 與 Network Load Balancer
com.amazonaws.
region-code.elasticloadbalancing(選用) AWS X-Ray (需要用於將追蹤傳送至 AWS X-Ray)
com.amazonaws.
region-code.xray(選用) Amazon SSM (需要用於 SSM 代理程式以處理節點管理任務。SSH 的替代方案)
com.amazonaws.
region-code.ssmAmazon CloudWatch Logs (需要用於將節點與 Pod 日誌傳送至 Amazon CloudWatch Logs)
com.amazonaws.
region-code.logsAWS Security Token Service (使用服務帳戶 IAM 角色時需要)
com.amazonaws.
region-code.stsAmazon EKS 驗證 (使用 Pod 身分識別關聯時需要)
com.amazonaws.
region-code.eks-authAmazon EKS
com.amazonaws.
region-code.eks -
任何自我管理節點都必須部署至具有您所需 VPC 介面端點的子網路。如果您建立受管節點群組,VPC 介面端點安全群組必須允許子網路的 CIDR,或者您必須將建立的節點安全群組新增至 VPC 介面端點安全群組。
-
EFS 儲存 - 若 Pod 使用 Amazon EFS 磁碟區,則在部署透過 Amazon EFS 存放彈性檔案系統之前,必須變更驅動程式的 kustomization.yaml
檔案,來設定容器映像使用與 Amazon EKS 叢集相同的 AWS 區域。 -
Route53 不支援 AWS PrivateLink。您不能透過私有 Amazon EKS 叢集來管理 Route53 DNS 記錄。這樣做會影響 Kubernetes external-dns
。 -
若使用 EKS 最佳化 AMI,您應啟用如上方資料表所示
ec2端點。或者,您可手動設定節點 DNS 名稱。最佳化 AMI 藉助 EC2 API 來自動設定節點 DNS 名稱。 -
您可以使用 AWS Load Balancer 控制器,將 AWS Application Load Balancers (ALB) 與 Network Load Balancer 部署至您的私有叢集。部署時,您應使用命令列旗標
將 enable-shield、enable-waf和enable-wafv2設定為 false。不支援透過傳入物件的主機名稱進行憑證探索。這是因為控制器需要連上不具備 VPC 介面端點的 AWS Certificate Manager。 控制器支援具有 IP 目標的 Network Load Balancer,這些目標與 Fargate 一起使用。如需詳細資訊,請參閱透過 Application Load Balancer 路由應用程式與 HTTP 流量及建立 Network Load Balancer。
-
支援 Cluster Autoscaler
。部署 Cluster Autoscaler Pod 時,請確保命令列包含 --aws-use-static-instance-list=true。如需詳細資訊,請參閱 GitHub 上的使用靜態執行個體清單。工作節點 VPC 也必須包含 AWS STS VPC 端點和自動擴展 VPC 端點。 -
某些容器軟體產品使用 API 呼叫來存取用於監控用量的 AWS Marketplace Metering 服務。私有叢集不允許這些呼叫,因此您無法將這些容器類型用於私有叢集。