

 **協助改進此頁面** 

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

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

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

# 部署網際網路存取受到限制的私有叢集
<a name="private-clusters"></a>

本主題說明如何部署部署在 AWS 雲端上，但沒有傳出網際網路存取權的 Amazon EKS 叢集。如果您在 AWS Outposts 上有本機叢集，請參閱 [在 AWS Outpost 上建立 Amazon Linux 節點](eks-outposts-self-managed-nodes.md)，而非本主題。

如果您不熟悉 Amazon EKS 聯網，請參閱[探究 Amazon EKS 工作節點之叢集網路的奧秘](https://aws.amazon.com/blogs/containers/de-mystifying-cluster-networking-for-amazon-eks-worker-nodes)。如果您的叢集沒有對外網際網路存取，則其必須符合下列需求：

## 叢集架構要求
<a name="private-clusters-architecture"></a>
+ 叢集必須從 VPC 中的容器登錄檔中提取映像。您可以在 VPC 中建立 Amazon Elastic Container Registry，並將容器映像複製到其中，以供節點提取。如需詳細資訊，請參閱[將容器映像從一個儲存庫複製到另一個儲存庫](copy-image-to-repository.md)。
+ 您的叢集必須啟用端點私有存取。這對節點向叢集端點註冊而言是必要的。端點公有存取權限並非必要。如需詳細資訊，請參閱[叢集 API 伺服器端點](cluster-endpoint.md)。

## 節點要求
<a name="private-clusters-node"></a>
+ 自我管理 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
     ```

  1. 使用下列命令判斷叢集憑證授權單位的值。使用您叢集的名稱取代 *my-cluster*。

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

     傳回的輸出是長字串。

  1. 將 NodeConfig 物件`certificateAuthority`中 `apiServerEndpoint`和 的值取代為先前命令輸出中傳回的值。如需在啟動自我管理 Amazon Linux 2023 節點時指定引導引數的詳細資訊，請參閱 [建立自我管理的 Amazon Linux 節點](launch-workers.md)和 [建立自我管理的 Microsoft Windows 節點](launch-windows-workers.md)。
     + 對於 Linux 節點：

       ```
       ---
       MIME-Version: 1.0
       Content-Type: multipart/mixed; boundary="BOUNDARY"
       
       --BOUNDARY
       Content-Type: application/node.eks.aws
       
       ---
       apiVersion: node.eks.aws/v1alpha1
       kind: NodeConfig
       spec:
         cluster:
           name: my-cluster
           apiServerEndpoint: [.replaceable]https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
           certificateAuthority: [.replaceable]Y2VydGlmaWNhdGVBdXRob3JpdHk=
           ...
       ```

       如需其他引數，請參閱 GitHub 上的 [Bootstrap 指令碼](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh)。
     + 對於 Windows 節點：
**注意**  
如果您使用的是自訂服務 CIDR，則需要使用 `-ServiceCIDR` 參數來對其進行指定。否則，叢集中 Pod 的 DNS 解析將會失敗。

       ```
       -APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority
       ```

       如需其他引數，請參閱 [引導指令碼組態參數](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters)。
+ 您的叢集 `aws-auth` `ConfigMap` 必須從 VPC 建立。若要進一步了解如何建立項目並將項目新增至 `aws-auth` `ConfigMap`，請在終端機中輸入 `eksctl create iamidentitymapping --help`。如果您的伺服器上不存在 `ConfigMap`，則 `eksctl` 會在您使用命令新增身分映射時建立它。

## Pod 要求
<a name="private-clusters-pod"></a>
+  **Pod 身分識別** - 透過 EKS Pod 身分識別設定的 Pod 會從 EKS 驗證 API 獲取憑證。如果沒有傳出網際網路存取權，則必須針對 EKS 驗證 API 建立並使用 VPC 端點：`com.amazonaws.region-code.eks-auth`。若要了解 EKS 與 EKS 驗證 VPC 端點的相關詳細資訊，請參閱 [使用 AWS PrivateLink 存取 Amazon EKS](vpc-interface-endpoints.md)。
+  **IRSA** - 為[服務帳戶設定 IAM 角色的](iam-roles-for-service-accounts.md) Pod 會從 AWS 安全字符服務 (AWS STS) API 呼叫取得憑證。如果沒有傳出網際網路存取，您必須在 VPC 中建立和使用 AWS STS VPC 端點。大多數 AWS `v1` SDKs 預設使用全域 AWS STS 端點 (`sts.amazonaws.com`)，這不使用 AWS STS VPC 端點。若要使用 AWS STS VPC 端點，您可能需要將 SDK 設定為使用區域 AWS STS 端點 (`sts.region-code.amazonaws.com`)。如需詳細資訊，請參閱[為服務帳戶設定 AWS Security Token Service 端點](configure-sts-endpoint.md)。
+ 對於 Pod 需要存取的任何 AWS 服務，叢集的 VPC 子網路必須具有 VPC 介面端點。如需詳細資訊，請參閱[使用介面 VPC 端點存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。下表列出了一些常用的服務和端點。如需端點的完整清單，請參閱《 [AWSAWS PrivateLink 指南》中的與PrivateLink 整合的 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html)。 [AWS PrivateLink ](https://docs.aws.amazon.com/vpc/latest/privatelink/)

  我們建議您為 VPC 端點[啟用私有 DNS 名稱](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#enable-private-dns-names)，讓工作負載可以繼續使用公有 AWS 服務端點而不會發生問題。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/eks/latest/userguide/private-clusters.html)
+ 任何自我管理節點都必須部署至具有您所需 VPC 介面端點的子網路。如果您建立受管節點群組，VPC 介面端點安全群組必須允許子網路的 CIDR，或者您必須將建立的節點安全群組新增至 VPC 介面端點安全群組。
+  **EFS 儲存** - 如果您的 Pod 使用 Amazon EFS 磁碟區，則必須先變更[EFS](efs-csi.md)驅動程式的 [kustomization.yaml](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/deploy/kubernetes/overlays/stable/kustomization.yaml) 檔案，才能將容器映像設定為使用與 Amazon EKS 叢集相同的 AWS 區域。
+ 若使用 EKS 最佳化 AMI，您應啟用如上方資料表所示 `ec2` 端點。或者，您可手動設定節點 DNS 名稱。最佳化 AMI 藉助 EC2 API 來自動設定節點 DNS 名稱。
+ 您可以使用[AWS Load Balancer控制器](aws-load-balancer-controller.md)，將 AWS Application Load Balancer (ALB) 和 Network Load Balancer 部署到您的私有叢集。部署時，您應使用[命令列旗標](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/deploy/configurations/#controller-command-line-flags)將 `enable-shield`、`enable-waf` 和 `enable-wafv2` 設定為 false。不支援透過傳入物件的主機名稱進行[憑證探索](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/cert_discovery/#discover-via-ingress-rule-host)。這是因為控制器需要連線到沒有 VPC 介面端點的 AWS Certificate Manager。

  控制器支援具有 IP 目標的 Network Load Balancer，這些目標與 Fargate 一起使用。如需詳細資訊，請參閱[透過 Application Load Balancer 路由應用程式與 HTTP 流量](alb-ingress.md)及[建立 Network Load Balancer](network-load-balancing.md#network-load-balancer)。
+  支援 [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)。部署 Cluster Autoscaler Pod 時，請確保命令列包含 `--aws-use-static-instance-list=true`。如需詳細資訊，請參閱 GitHub 上的[使用靜態執行個體清單](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#use-static-instance-list)。工作者節點 VPC 也必須包含 AWS STS VPC 端點和自動擴展 VPC 端點。
+ 有些容器軟體產品會使用 API 呼叫來存取 AWS Marketplace Metering Service 來監控用量。私有叢集不允許這些呼叫，因此您無法將這些容器類型用於私有叢集。