

 **協助改進此頁面** 

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

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

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

# 使用 AWS Outposts 在內部部署 Amazon EKS
<a name="eks-outposts"></a>

您可以使用 Amazon EKS，在 AWS Outposts.上執行內部部署 Kubernetes。您可使用以下方式在 Outpost 上部署 Amazon EKS：
+  **擴充叢集** – 執行 AWS 區域中的 Kubernetes 控制平面，以及 Outpost 上的節點。
+  **本機叢集** – 執行 Outpost 上的 Kubernetes 控制平面和節點。

針對兩個部署選項，AWS 控制平面會受 Kubernetes 完全管理。您可以使用在雲端中使用的相同 Amazon EKS API、工具和主控台，在 Outpost 上建立和執行 Amazon EKS。

下圖顯示這些部署選項。

![\[Outpost 部署選項\]](http://docs.aws.amazon.com/zh_tw/eks/latest/userguide/images/outposts-deployment-options.png)


## 使用每個部署選項的時機
<a name="outposts-overview-when-deployment-options"></a>

本機叢集和擴充叢集皆為一般用途的部署選項，可用於多種應用程式。

使用本機叢集，您可以在 Outposts 上本機執行整個 Amazon EKS 叢集。此選項可降低因網路暫時與雲端中斷連線而可能導致的應用程式停機風險。這些網路連線中斷可能是因光纖切斷或天氣事件引起的。由於整個 Amazon EKS 叢集會在 Outposts 本機執行，因此仍可使用應用程式。您可在網路與雲端中斷連線期間執行叢集操作。如需詳細資訊，請參閱 [準備 AWS Outposts 上的本機 Amazon EKS 叢集，以應對網路中斷連線](eks-outposts-network-disconnects.md)。如果您擔心從 Outposts 至父項 AWS 區域的網路連線品質，且需要在網路連線中斷期間實現高可用性，請使用本機叢集部署選項。

由於 Kubernetes 控制平面會在父 AWS 區域中執行，因此您可以使用擴充的叢集節省 Outpost 的容量。如果您可以投資於從 Outpost 至 AWS 區域的可靠備援網路連線，則此選項非常適合。此選項的網路連線品質十分重要。Kubernetes 處理 Kubernetes 控制平面和節點之間的網路連線中斷的方式可能會導致應用程式停機。如需有關 Kubernetes 行為的詳細資訊，請參閱 Kubernetes 文件中的[排程、先佔和移出](https://kubernetes.io/docs/concepts/scheduling-eviction/)。

## 比較部署選項
<a name="outposts-overview-comparing-deployment-options"></a>

下表會比較這兩個選項之間的差異。


| 功能 | 擴充叢集 | 本機叢集 | 
| --- | --- | --- | 
|  Kubernetes 控制平面位置  |   AWS 區域  |  Outpost  | 
|  Kubernetes 控制平面帳戶  |   AWS account  |  您的帳戶  | 
|  區域可用性  |  請參閱[服務端點](https://docs.aws.amazon.com/general/latest/gr/eks.html#eks_region)   |  美國東部 (俄亥俄)、美國東部 (維吉尼亞北部)、美國西部 (加利佛尼亞北部)、美國西部 (奧勒岡)、亞太區域 (首爾)、亞太區域 (新加坡)、亞太區域 (雪梨)、亞太區域 (東京)、加拿大 (中部)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (倫敦)、中東 (巴林) 和南美洲 (聖保羅)  | 
|  Kubernetes 次要版本  |  eks/latest/userguide/kubernetes-versions.html[Supported Amazon EKS versions,type="documentation"]。  |  eks/latest/userguide/kubernetes-versions.html[Supported Amazon EKS versions,type="documentation"]。  | 
|  平台版本  |  請參閱 [EKS 平台版本](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html)   |  請參閱 [了解 AWS Outposts 的 Kubernetes 和 Amazon EKS 平台版本](eks-outposts-platform-versions.md)   | 
|  Outpost 外形規格  |  Outpost 機架  |  Outpost 機架  | 
|  使用者介面  |   AWS 管理主控台、AWS CLI、Amazon EKS API、`eksctl`、AWS CloudFormation 和 Terraform  |   AWS 管理主控台、AWS CLI、Amazon EKS API、`eksctl`、AWS CloudFormation 和 Terraform  | 
|  受管政策  |   [AmazonEKSClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksclusterpolicy) 與 [AWS 受管政策：AmazonEKSServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksservicerolepolicy)   |   [AmazonEKSLocalOutpostClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy) 與 [AWS 受管政策：AmazonEKSLocalOutpostServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazonekslocaloutpostservicerolepolicy)   | 
|  叢集 VPC 和子網路  |  請參閱 [檢視 VPC 和子網路的 Amazon EKS 聯網需求](network-reqs.md)   |  請參閱 [為 AWS Outpost 上的 Amazon EKS 叢集建立 VPC 和子網路](eks-outposts-vpc-subnet-requirements.md)   | 
|  叢集端點存取  |  公有或私有，或兩者兼具  |  僅限私有  | 
|  Kubernetes API 伺服器身分驗證  |   AWS Identity and Access Management (IAM) 和 OIDC  |  IAM 和 `x.509` 憑證  | 
|  節點類型  |  僅限自我管理  |  僅限自我管理  | 
|  節點運算類型  |  Amazon EC2 隨需  |  Amazon EC2 隨需  | 
|  節點儲存類型  |  Amazon EBS `gp2` 和本機 NVMe SSD  |  Amazon EBS `gp2` 和本機 NVMe SSD  | 
|  Amazon EKS 最佳化 AMI  |  Amazon Linux、Windows 和 Bottlerocket  |  僅限 Amazon Linux  | 
|  IP 版本  |   僅限 `IPv4`  |   僅限 `IPv4`  | 
|  附加元件  |  Amazon EKS 附加元件，或自我管理附加元件  |  僅限自我管理附加元件  | 
|  預設容器網路介面  |  Kubernetes 專用 Amazon VPC CNI 外掛程式  |  Kubernetes 專用 Amazon VPC CNI 外掛程式  | 
|  Kubernetes 控制平面日誌  |  Amazon CloudWatch Logs  |  Amazon CloudWatch Logs  | 
|  負載平衡  |  僅限使用 [AWS Load Balancer 控制器](aws-load-balancer-controller.md)佈建 Application Load Balancer (無 Network Load Balancer)  |  僅限使用 [AWS Load Balancer 控制器](aws-load-balancer-controller.md)佈建 Application Load Balancer (無 Network Load Balancer)  | 
|  秘密封套加密  |  請參閱 [在現有叢集上使用 KMS 加密 Kubernetes 秘密](enable-kms.md)   |  不支援  | 
|  服務帳戶的 IAM 角色  |  請參閱 [服務帳戶的 IAM 角色](iam-roles-for-service-accounts.md)   |  不支援  | 
|  故障診斷  |  請參閱 [排解 Amazon EKS 叢集和節點問題](troubleshooting.md)   |  請參閱 [Outposts 上的本機 Amazon EKS AWS 叢集疑難排解](eks-outposts-troubleshooting.md)   | 

**Topics**

# 建立 AWS Outposts 上的本機 Amazon EKS 叢集，以實現高可用性
<a name="eks-outposts-local-cluster-overview"></a>

您可以使用本機叢集在 AWS Outposts 上本機執行整個 Amazon EKS 叢集。這有助於降低因網路暫時與雲端中斷連線而可能導致的應用程式停機風險。這些連線中斷可能是因光纖切斷或天氣事件引起的。由於整個 Kubernetes 叢集會在 Outpost 本機執行，因此仍可使用應用程式。您可在網路與雲端中斷連線期間執行叢集操作。如需詳細資訊，請參閱 [準備 AWS Outposts 上的本機 Amazon EKS 叢集，以應對網路中斷連線](eks-outposts-network-disconnects.md)。下圖顯示本機叢集部署。

![\[Outpost 本機叢集\]](http://docs.aws.amazon.com/zh_tw/eks/latest/userguide/images/outposts-local-cluster.png)


本機叢集通常可與 Outpost 機架搭配使用。

## 支援的 AWS 區域
<a name="outposts-control-plane-supported-regions"></a>

您可在以下 AWS 區域中建立本機叢集：美國東部 (俄亥俄)、美國東部 (維吉尼亞北部)、美國西部 (加利佛尼亞北部)、美國西部 (奧勒岡)、亞太地區 (首爾)、亞太地區 (新加坡)、亞太地區 (雪梨)、亞太地區 (東京)、加拿大 (中部)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (倫敦)、中東 (巴林) 和南美洲 (聖保羅)。如需有關支援功能的詳細資訊，請參閱[比較部署選項](eks-outposts.md#outposts-overview-comparing-deployment-options)。

**Topics**

# 在 AWS Outposts 上部署 Amazon EKS 叢集
<a name="eks-outposts-local-cluster-create"></a>

本主題概述了在 Outpost 上執行本機叢集時要考量的事項。本主題也提供如何在 Outpost 上部署本機叢集的指示。

**重要**  
這些考量事項並不是相關 Amazon EKS 文件的重複內容。如果其他 Amazon EKS 文件主題與此處的考量衝突，則請遵循此處的考量事項。
這些考量事項隨時會變更，而且可能會經常變更。因此，我們建議您定期檢閱此主題。
許多考量事項與在 AWS 雲端上建立叢集的考量事項不同。
+ 本機叢集僅支援 Outpost 機架。單一本機叢集可以在包含單一邏輯 Outpost 的多個實體 Outpost 機架上執行。單一本機叢集無法跨多個邏輯 Outposts 執行。每個邏輯 Outpost 都有一個單一的 Outpost ARN。
+ 本機叢集在 Outpost 上執行和管理您帳戶中的 Kubernetes 控制平面。您無法在 Kubernetes 控制平面執行個體上執行工作負載，或修改 Kubernetes 控制平面元件。這些節點由 Amazon EKS 服務管理。執行自動 Amazon EKS 管理動作 (例如修補) 後，對 Kubernetes 控制平面的變更不會持續存在。
+ 本機叢集支援自我管理的附加元件和自我管理的 Amazon Linux 節點群組。[Kubernetes 專用 Amazon VPC CNI 外掛程式](managing-vpc-cni.md)、[kube-proxy](managing-kube-proxy.md) 和 [CoreDNS](managing-coredns.md) 附加元件會自動安裝在本機叢集上。
+ 本機叢集需要在 Outpost 上使用 Amazon EBS。您的 Outpost 必須具有可用於 Kubernetes 控制平面儲存的 Amazon EBS。Outpost 僅支援 Amazon EBS `gp2` 磁碟區。
+ 如果使用 Amazon EBS CSI 驅動程式，可支援 Amazon EBS 所支援的 Kubernetes `PersistentVolumes`。
+ 本機叢集的控制平面執行個體可在[堆疊的高度可用拓撲](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/)中進行設定。三分之二的控制平面執行個體必須始終保持運作狀態良好，這樣才能維持規定人數。如果規定人數遺失，請聯絡 AWS 支援，因為需要一些服務端動作才能啟用新的受管執行個體。

 **先決條件** 
+ 熟悉 [Outposts 部署選項](eks-outposts.md#outposts-overview-comparing-deployment-options)、[根據容量考量以及 VPC 需求和考量，為 AWS Outposts 上的 Amazon EKS 叢集選取執行個體類型和置放群組](eks-outposts-capacity-considerations.md)。 [為 AWS Outpost 上的 Amazon EKS 叢集建立 VPC 和子網路](eks-outposts-vpc-subnet-requirements.md)
+ 現有的 Outpost。如需詳細資訊，請參閱[什麼是 AWS Outpost。](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)
+ `kubectl` 命令列工具安裝在您的電腦或 AWS CloudShell 上。版本可以與您的叢集 Kubernetes 版本相同，或是為最多比該版本更舊一版或更新一版的次要版本。例如，如果您的叢集版本為 `1.29`，則可以搭配使用 `kubectl` `1.28`、`1.29` 或 `1.30` 版。若要安裝或升級 `kubectl`，請參閱 [設定 `kubectl` 和 `eksctl`](install-kubectl.md)。
+ 在您的裝置或 AWS CloudShell 上安裝和設定的 AWS 命令列界面 (AWS CLI) 版本 `1.27.160` `2.12.3`或更新版本。若要檢查您目前的版本，請使用 `aws --version | cut -d / -f2 | cut -d ' ' -f1`。適用於 macOS 的 `yum`、 `apt-get`或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的幾個版本。若要安裝最新版本，請參閱《 * AWS 命令列界面使用者指南*》中的使用 aws 設定[安裝](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 和快速組態。 [https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)在 AWS CloudShell 中安裝的 AWS CLI 版本也可能是最新版本後面的幾個版本。若要更新它，請參閱《CloudShell [AWS 使用者指南》中的將 CLI 安裝到您的主目錄](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)。 * AWS CloudShell *
+ 具有 `create` 和 `describe` Amazon EKS 叢集之許可的 IAM 主體 (使用者或角色)。如需詳細資訊，請參閱[在 Outpost 上建立本機 Kubernetes 叢集](security-iam-id-based-policy-examples.md#policy-create-local-cluster)及[所有叢集的清單或描述](security-iam-id-based-policy-examples.md#policy-example2)。

建立本機 Amazon EKS 叢集後，系統會永久新增建立叢集的 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)。主體會專門新增至 Kubernetes RBAC 授權資料表作為管理員。此實體具有 `system:masters` 許可。此實體的標識在您的叢集組態中不可見。因此，請務必注意建立叢集的實體，並確保永遠不會將其刪除。一開始，只有建立伺服器的主體可以使用 `kubectl` 對 Kubernetes API 伺服器進行呼叫。如果您使用 主控台建立叢集，請確定當您在叢集上執行`kubectl`命令時，相同的 IAM 登入資料位於 AWS SDK 登入資料鏈中。建立叢集之後，您可以授予其他 IAM 主體存取您的叢集。

## 建立 Amazon EKS 本機叢集
<a name="_create_an_amazon_eks_local_cluster"></a>

您可以使用此頁面中所述的下列工具，建立本機叢集：
+  [`eksctl`](#eksctl_create_cluster_outpost) 
+  [AWS 管理主控台](#console_create_cluster_outpost) 

您也可以使用 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/eks/create-cluster.html)、[Amazon EKS API](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html)、[AWS SDK](https://aws.amazon.com/developer/tools/)、[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-outpostconfig.html) 或 [Terraform](https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest) 在 Outposts 上建立叢集。

### `eksctl`
<a name="eksctl_create_cluster_outpost"></a>

 **使用 `eksctl` 建立本機叢集** 

1. 在您的裝置或 AWS CloudShell 上安裝版本 `0.215.0`或更新版本的`eksctl`命令列工具。如需有關安裝或更新 `eksctl` 的指示，請參閱 `eksctl` 文件中的[安裝](https://eksctl.io/installation)一節。

1. 將隨後的內容複製到您的裝置。取代以下值，然後執行修改後的命令來建立 `outpost-control-plane.yaml` 檔案：
   + 將 *region-code* 取代為您要在其中建立叢集的[支援 AWS 區域](eks-outposts-local-cluster-overview.md#outposts-control-plane-supported-regions)。
   + 使用您的叢集名稱取代 *my-cluster*。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭，且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。
   + 使用現有 VPC 和子網路的 ID 取代 *vpc-ExampleID1* 和 *subnet-ExampleID1*。VPC 和子網路必須符合在 [AWS Outposts 上為 Amazon EKS 叢集建立 VPC 和子網路](eks-outposts-vpc-subnet-requirements.md)的要求。
   + 使用您的 Outpost 的 ID 取代 *uniqueid*。
   + 使用您 Outpost 上可用的執行個體類型取代 *m5.large*。選擇執行個體類型之前，請先參閱[根據容量考量，為 AWS Outposts 上的 Amazon EKS 叢集選取執行個體類型和置放群組](eks-outposts-capacity-considerations.md)。部署了三個控制平面執行個體。您無法變更此數字。

     ```
     cat >outpost-control-plane.yaml <<EOF
     apiVersion: eksctl.io/v1alpha5
     kind: ClusterConfig
     
     metadata:
       name: my-cluster
       region: region-code
       version: "1.35"
     
     vpc:
       clusterEndpoints:
         privateAccess: true
       id: "vpc-vpc-ExampleID1"
       subnets:
         private:
           outpost-subnet-1:
             id: "subnet-subnet-ExampleID1"
     
     outpost:
       controlPlaneOutpostARN: arn:aws: outposts:region-code:111122223333:outpost/op-uniqueid
       controlPlaneInstanceType: m5.large
     EOF
     ```

     如需所有可用選項和預設值的完整清單，請參閱 `eksctl` 文件中的 [AWS Outposts 支援](https://eksctl.io/usage/outposts/)和[組態檔案結構描述](https://eksctl.io/usage/schema/)。

1. 使用您在上一步驟中建立的組態檔案建立叢集。`eksctl` 會在 Outpost 上建立 VPC 和一個子網路，以便在其中部署叢集。

   ```
   eksctl create cluster -f outpost-control-plane.yaml
   ```

   叢集佈建需要幾分鐘的時間。建立叢集時，會出現幾行輸出。輸出的最後一行類似於下面的範例行。

   ```
   [✓]  EKS cluster "my-cluster" in "region-code" region is ready
   ```
**提示**  
若要查看使用 `eksctl` 建立叢集時可指定的大部分選項，請使用 `eksctl create cluster --help` 命令。若要查看所有可用的選項，您可使用 `config` 檔案。如需詳細資訊，請參閱 `eksctl` 文件中的[使用組態檔](https://eksctl.io/usage/creating-and-managing-clusters/#using-config-files)與[組態檔結構描述](https://eksctl.io/usage/schema/)。您可以在 GitHub 上找到[組態檔範例](https://github.com/weaveworks/eksctl/tree/master/examples)。

   `eksctl` 命令會自動為建立叢集的 IAM 主體 (使用者或角色) 建立[存取項目](access-entries.md)，並向該 IAM 主體授予對叢集上的 Kubernetes 物件的管理員許可。如果您不希望叢集建立者對叢集上的 Kubernetes 物件具有管理員存取權，請將下列文字新增至先前的組態檔：`bootstrapClusterCreatorAdminPermissions: false` (與 `metadata`、`vpc` 和 `outpost` 處於同一層級)。如果您新增了該選項，則在建立叢集後，您需要為至少一個 IAM 主體建立存取項目，否則任何 IAM 主體均將無法存取叢集上的 Kubernetes 物件。

### AWS 管理主控台
<a name="console_create_cluster_outpost"></a>

 **使用 AWS 管理主控台 建立叢集** 

1. 您需要的現有 VPC 和子網路應符合 Amazon EKS 要求。如需詳細資訊，請參閱[為 AWS Outpost 上的 Amazon EKS 叢集建立 VPC 和子網路](eks-outposts-vpc-subnet-requirements.md)。

1. 如果您已擁有本機叢集 IAM 角色，或者您要使用 `eksctl` 來建立叢集，則可以略過此步驟。根據預設，`eksctl` 會為您建立角色。

   1. 執行下列命令以建立 IAM 信任政策 JSON 檔案。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. 建立 Amazon EKS 叢集 IAM 角色。若要建立 IAM 角色，必須為建立角色的 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)指派以下 `iam:CreateRole` 動作 (許可)。

      ```
      aws iam create-role --role-name myAmazonEKSLocalClusterRole --assume-role-policy-document file://"eks-local-cluster-role-trust-policy.json"
      ```

   1. 將名為 [AmazonEKSLocalOutpostClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSLocalOutpostClusterPolicy.html) 的 Amazon EKS 受管政策連接至角色。若要將 IAM 政策連接至 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)，必須為連接政策的 IAM 實體指派以下 IAM 動作之一 (許可)：`iam:AttachUserPolicy` 或 `iam:AttachRolePolicy`。

      ```
      aws iam attach-role-policy --policy-arn arn:aws: iam::aws:policy/AmazonEKSLocalOutpostClusterPolicy --role-name myAmazonEKSLocalClusterRole
      ```

1. 開啟 [Amazon EKS 主控台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 在主控台畫面頂端，請確定您已選取[支援 AWS 的區域](eks-outposts-local-cluster-overview.md#outposts-control-plane-supported-regions)。

1. 選取 **Add cluster** (新增叢集)，然後選取 **Create** (建立)。

1. 在 **Configure cluster** (設定叢集) 頁面上，輸入或選取下列欄位的值：
   +  **Kubernetes 控制平面位置** – 選擇 AWS Outposts。
   +  **Outpost ID**：選擇要在其上建立控制平面的 Outpost 的 ID。
   +  **Instance type** (執行個體類型)：選取執行個體類型。只會顯示 Outpost 中可用的執行個體類型。在下拉式清單中，每個執行個體類型都會說明為其建議的節點數量。選擇執行個體類型之前，請先參閱[根據容量考量，為 AWS Outposts 上的 Amazon EKS 叢集選取執行個體類型和置放群組](eks-outposts-capacity-considerations.md)。所有複本均使用相同的執行個體類型進行部署。叢集建立後，就無法再變更執行個體類型。部署了三個控制平面執行個體。您無法變更此數字。
   +  **Name** (名稱)：叢集的名稱。它在您的帳戶中必須是唯一的 AWS 。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭，且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。
   +  **Kubernetes 版本**：選擇您要用於您叢集的 Kubernetes 版本。我們建議選取最新版本，除非您需要使用較早版本。
   +  **叢集服務角色** – 選擇您在上一個步驟中建立的 Amazon EKS 叢集 IAM 角色，以允許 Kubernetes 控制平面管理 AWS 資源。
   +  **Kubernetes 叢集管理員存取權**：如果您希望建立叢集的 IAM 主體 (角色或使用者) 對叢集上的 Kubernetes 物件具有管理員存取權，請接受預設值 (允許)。Amazon EKS 會為該 IAM 主體建立存取項目，並向該存取項目授予叢集管理員許可。如需存取項目的詳細資訊，請參閱 [使用 EKS 存取項目授予 IAM 使用者 Kubernetes 的存取權](access-entries.md)。

     如果您不希望建立叢集的 IAM 主體擁有對 Kubernetes 叢集物件的管理員存取權，而是希望其他主體擁有此權限，請選擇「不允許」選項。建立叢集後，任何具有建立存取項目 IAM 許可的 IAM 主體，都可以為需要存取 Kubernetes 叢集物件的任何 IAM 主體新增存取項目。如需所需 IAM 許可的詳細資訊，請參閱《服務授權參考》中的 [Amazon Elastic Kubernetes Service 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)一節。如果您選擇「不允許」選項且不建立任何存取項目，則任何 IAM 主體均將無法存取叢集上的 Kubernete 物件。
   +  **Tags** (標籤) – (選用) 將任何標籤新增到您的叢集。如需詳細資訊，請參閱[使用標籤組織 Amazon EKS 資源](eks-using-tags.md)。完成此頁面後，請選擇**下一步**。

1. 在 **Specify networking (指定網路)** 頁面上，選取下列欄位的值：
   +  **VPC**：選擇現有的 VPC。針對您要建立的叢集、任何節點和其他 Kubernetes 資源，VPC 必須有足夠數目的 IP 地址。您的 VPC 必須符合 [VPC 要求和考量事項](eks-outposts-vpc-subnet-requirements.md#outposts-vpc-requirements)中的要求。
   +  **Subnets** (子網路)：根據預設，前一個欄位指定的 VPC 中的所有可用子網路會預先選取。您選擇的子網路必須符合[子網路要求和考量事項](eks-outposts-vpc-subnet-requirements.md#outposts-subnet-requirements)中的要求。
   +  **安全群組**:(選用) 指定一或多個您希望 Amazon EKS 與其建立的網路介面相關聯的安全群組。Amazon EKS 會自動建立一個安全群組，以支援您的叢集和 VPC 之間的通訊。Amazon EKS 將此安全群組及您選擇的任何群組與其建立的網路介面相關聯。如需有關 Amazon EKS 建立的叢集安全群組的詳細資訊，請參閱 [檢視叢集的 Amazon EKS 安全群組要求](sec-group-reqs.md)。您可以修改 Amazon EKS 建立的叢集安全群組中的規則。如果您選擇新增自己的安全群組，在叢集建立後，即無法變更選擇的安全群組。若要使內部部署主機與叢集端點通訊，您必須允許來自叢集安全群組的傳入流量。對於沒有輸入和輸出網際網路連線 (亦稱為私有叢集) 的叢集，您必須執行以下其中一項：
     + 新增與所需 VPC 端點關聯的安全群組。如需必要端點的詳細資訊，請參閱[子網路存取 AWS 服務](eks-outposts-vpc-subnet-requirements.md#subnet-access-to-services)[使用 介面 VPC 端點](eks-outposts-vpc-subnet-requirements.md#vpc-subnet-requirements-vpc-endpoints)中的 。
     + 修改 Amazon EKS 建立的安全群組，以允許來自與 VPC 端點關聯之安全群組的流量。完成此頁面後，請選擇**下一步**。

1. 在**設定可觀測性**頁面上，您可以選擇性地選擇要開啟的**指標**和**控制平面日誌記錄**選項。根據預設，系統會關閉每個日誌類型。
   + 如需有關 Prometheus 指標選項的詳細資訊，請參閱 [步驟 1：開啟 Prometheus 指標](prometheus.md#turn-on-prometheus-metrics)。
   + 如需**控制平面日誌記錄**選項的詳細資訊，請參閱 [將控制平面日誌傳送至 CloudWatch Logs](control-plane-logs.md)。完成此頁面後，請選擇**下一步**。

1. 在 **Review and create (檢閱並建立)** 頁面上，檢閱您在先前頁面上輸入或選取的資訊。如需變更，請選擇 **Edit** (編輯)。當您感到滿意時，請選擇**建立**。在佈建叢集時，**Status** (狀態) 欄位顯示 **CREATING** (正在建立)。

   叢集佈建需要幾分鐘的時間。

## 檢視 Amazon EKS 本機叢集
<a name="_view_your_amazon_eks_local_cluster"></a>

1. 叢集建立之後，您便可以檢視已建立的 Amazon EC2 控制平面執行個體。

   ```
   aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Name:Tags[?Key==`Name`]|[0].Value}' | grep my-cluster-control-plane
   ```

   範例輸出如下。

   ```
   "Name": "my-cluster-control-plane-id1"
   "Name": "my-cluster-control-plane-id2"
   "Name": "my-cluster-control-plane-id3"
   ```

   每個執行個體均受到 `node-role.eks-local.amazonaws.com/control-plane` 污染，因此沒有在控制平面執行個體上排程工作負載。如需關於污點的詳細資訊，請參閱 Kubernetes 文件中的[容差和污點](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)。Amazon EKS 會持續監控本機叢集的狀態。我們會執行自動管理動作，如安全性修補程式和修復運作狀態不良的執行個體。如果本機叢集與雲端中斷連線，我們會完成動作，以確保在重新連線時將叢集修復為健全狀態。

1. 如果您使用 `eksctl` 建立叢集，則可以略過此步驟。`eksctl` 會為您完成此步驟。透過向 `kubectl` `config` 檔案新增內容，使 `kubectl` 能夠與您的叢集通訊。如需如何建立和更新檔案的說明，請參閱 [透過建立 kubeconfig 檔案將 kubectl 連線至 EKS 叢集](create-kubeconfig.md)。

   ```
   aws eks update-kubeconfig --region region-code --name my-cluster
   ```

   範例輸出如下。

   ```
   Added new context arn:aws: eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config
   ```

1. 若要連線至您的本機叢集的 Kubernetes API 伺服器，請存取子網路的本機閘道，或從 VPC 內進行連線。如需將 Outpost 機架連線至內部部署網路的詳細資訊，請參閱 AWS Outposts 使用者指南中的[機架的本機閘道運作方式](https://docs.aws.amazon.com/outposts/latest/userguide/how-racks-work.html)。如果使用直接 VPC 路由，且 Outpost 子網路具有通往您本機閘道的路由，則 Kubernetes 控制平面執行個體的私有 IP 位址會自動透過您的區域網路廣播。本機叢集的 Kubernetes API 伺服器端點託管在 Amazon Route 53 (Route 53) 中。API 服務端點可透過公有 DNS 伺服器將其解析為 Kubernetes API 伺服器的私有 IP 地址。

   本機叢集的 Kubernetes 控制平面執行個體設定為具有固定私有 IP 位址的靜態彈性網路介面，這些 IP 位址在叢集生命週期內不會變更。在網路連線中斷期間，與 Kubernetes API 伺服器互動的機器可能無法連線至 Route 53。如果是這種情況，建議使用靜態私有 IP 地址來設定 `/etc/hosts` 以繼續操作。我們還建議您設定本機 DNS 伺服器，並將其連接至 Outpost。如需詳細資訊，請參閱 [AWS Outposts 文件](https://docs.aws.amazon.com/outposts/latest/userguide/how-outposts-works.html#dns)。執行下列命令以確認與您的叢集建立通訊。

   ```
   kubectl get svc
   ```

   範例輸出如下。

   ```
   NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
   kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   28h
   ```

1. （選用） 當本機叢集與 AWS 雲端處於中斷連線狀態時，對本機叢集測試身分驗證。如需說明，請參閱[準備 AWS Outposts 上的本機 Amazon EKS 叢集，以應對網路中斷連線](eks-outposts-network-disconnects.md)。

### 內部資源
<a name="outposts-control-plan-internal-resources"></a>

Amazon EKS 會在您的叢集上建立下列資源。這些資源供 Amazon EKS 內部使用。為了讓您的叢集正常運作，請勿編輯或修改這些資源。
+ 下列[鏡射 Pod](https://kubernetes.io/docs/reference/glossary/?all=true#term-mirror-pod)：
  +  `aws-iam-authenticator-node-hostname ` 
  +  `eks-certificates-controller-node-hostname ` 
  +  `etcd-node-hostname ` 
  +  `kube-apiserver-node-hostname ` 
  +  `kube-controller-manager-node-hostname ` 
  +  `kube-scheduler-node-hostname ` 
+ 下列自我管理的附加元件：
  +  `kube-system/coredns` 
  +  `kube-system/` `kube-proxy` (在新增第一個節點之前不會建立)
  +  `kube-system/aws-node` (在新增第一個節點之前不會建立)。本機叢集使用 Kubernetes 專用 Amazon VPC CNI 外掛程式進行叢集聯網。請勿變更控制平面執行個體 (名為 `aws-node-controlplane-*` 的 Pod) 的組態。外掛程式建立新網路介面時，您可以使用組態變數來變更預設值。如需詳細資訊，請參閱 GitHub 上的[文件](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md)。
+ 下列服務：
  +  `default/kubernetes` 
  +  `kube-system/kube-dns` 
+ 名為 `eks.system` 的 `PodSecurityPolicy` 
+ 名為 `eks:system:podsecuritypolicy` 的 `ClusterRole` 
+ 名為 `eks:system` 的 `ClusterRoleBinding` 
+ 除了[叢集安全群組](sec-group-reqs.md)之外，Amazon EKS 還會在您的 AWS 帳戶中建立名為 的安全群組`eks-local-internal-do-not-use-or-edit-cluster-name-uniqueid `。此安全群組允許流量在控制平面執行個體上執行的 Kubernetes 元件之間自由流動。

建議的後續步驟：
+  [授予建立叢集的 IAM 主體在 中檢視 Kubernetes 資源所需的許可 AWS 管理主控台](view-kubernetes-resources.md#view-kubernetes-resources-permissions) 
+  [授予 IAM 實體對叢集的存取權](grant-k8s-access.md)。如果您希望實體在 Amazon EKS 主控台中檢視 Kubernetes 資源，請對實體授予[必要許可](view-kubernetes-resources.md#view-kubernetes-resources-permissions)。
+  [設定叢集的日誌](control-plane-logs.md) 
+ 熟悉[網路連線中斷](eks-outposts-network-disconnects.md)期間發生的情況。
+  [將節點新增至叢集](eks-outposts-self-managed-nodes.md) 
+ 考慮為您的 `etcd` 設定備份計劃。Amazon EKS 不支援本機叢集的 `etcd` 自動備份和還原。如需詳細資訊，請參閱 Kubernetes 文件中的[備份 etcd 叢集](https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster)。兩個主要選項是使用 `etcdctl` 自動拍攝快照或使用 Amazon EBS 儲存磁碟區備份。

# 了解 AWS Outposts 的 Kubernetes 和 Amazon EKS 平台版本
<a name="eks-outposts-platform-versions"></a>

本機叢集平台版本代表 AWS Outposts 上 Amazon EKS 叢集的功能。這些版本包括在 Kubernetes 控制平面上執行的元件，已啟用 Kubernetes API 伺服器旗標。其也包含目前的 Kubernetes 修補程式版本。每個 Kubernetes 次要版本皆有一或多個相關的 平台版本。適用於不同 Kubernetes 次要版本的平台版本都是獨立的。雲端中本機叢集和 Amazon EKS 叢集的平台版本皆各自獨立。

當本機叢集推出新的 Kubernetes 次要版本 (例如 `1.31`) 時，該 Kubernetes 次要版本的初始平台版本便會從 `eks-local-outposts.1` 開始。但是，Amazon EKS 會定期發佈新平台版本，以啟用新的 Kubernetes 控制平面設定，以及提供安全性問題修正。

當有新的本機叢集平台版本可供次要版本使用時：
+ 平台版本編號將會遞增 (`eks-local-outposts.n+1`)。
+ Amazon EKS 會自動將所有現有的本機叢集更新到與其對應之 Kubernetes 次要版本的最新平台版本。現有平台版本的自動更新將會逐步發佈。推展程序包含取代在 Outpost 上執行的受管 Kubernetes 控制平面執行個體，一次一個，直到全部 3 個執行個體皆已取代為新的執行個體。
+ 如果存在服務中斷的風險，Kubernetes 控制平面執行個體取代程序將會停止進行。只有在其他 2 個 Kubernetes 控制平面執行個體運作狀態良好，並以叢集節點的形式傳遞所有整備條件時，Amazon EKS 才會嘗試取代執行個體。
+ 平台版本推展通常需要不到 30 分鐘的時間即可完成。如果叢集長時間處於 `UPDATING` 狀態，請參閱 [Outposts 上的本機 Amazon EKS AWS 叢集疑難排解](eks-outposts-troubleshooting.md)並向 AWS Support 尋求協助。除非 AWS Support 指示，否則請勿手動終止 Kubernetes 控制平面執行個體。
+ Amazon EKS 可能會發佈具有對應之修補程式版本的新節點 AMI。針對單一 Kubernetes 次要版本，所有修補程式版本在 Kubernetes 控制平面和節點 AMI 之間皆相容。

新的平台版本不會帶來重大變更或導致服務中斷。

本機叢集一律會透過指定 Kubernetes 版本的最新可用平台版本 (`eks-local-outposts.n`) 建立。

 的目前及最新平台版本如下表所示。

如需接收有關此特定文件頁面所有來源檔案變更的通知，您可透過 RSS 閱讀器來訂閱以下 URL：

```
https://github.com/awsdocs/amazon-eks-user-guide/commits/mainline/latest/ug/outposts/eks-outposts-platform-versions.adoc.atom
```

## Kubernetes 版本 `1.31`
<a name="outposts-platform-versions-1-31"></a>

下列許可控制器已為所有 `1.31` 平台版本啟用：`CertificateApproval`、`CertificateSigning`、`CertificateSubjectRestriction`、`ClusterTrustBundleAttest`、`DefaultIngressClass`、`DefaultStorageClass`、`DefaultTolerationSeconds`、`ExtendedResourceToleration`、`LimitRanger`、`MutatingAdmissionWebhook`、`NamespaceLifecycle`、`NodeRestriction`、`PersistentVolumeClaimResize`、`PodSecurity`、`Priority`、`ResourceQuota`、`RuntimeClass`、`ServiceAccount`、`StorageObjectInUseProtection`、`TaintNodesByCondition`、`ValidatingAdmissionPolicy` 以及 `ValidatingAdmissionWebhook`。


| Kubernetes 版本 | Amazon EKS 平台版本 | 版本備註 | 版本日期 | 
| --- | --- | --- | --- | 
|   `1.31.14`   |   `eks-local-outposts.8`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.31.14`. AWS IAM Authenticator 已更新至 `v0.7.8`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.4`。Bottlerocket 版本已更新至 `v1.52.0`。  |  2025 年 12 月 23 日  | 
|   `1.31.12`   |   `eks-local-outposts.5`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.31.10`. AWS IAM Authenticator 已更新至 `v0.7.4`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.2`。Bottlerocket 版本已更新至 `v1.47.0`。  |  2025 年 10 月 3 日  | 
|   `1.31.9`   |   `eks-local-outposts.4`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.31.9`. AWS IAM Authenticator 已更新至 `v0.7.2`。適用於 Kubernetes 的 Amazon VPC CNI 外掛程式已更新至 `v1.20.0` Bottlerocket 版本，已更新至 `v1.43.0`。  |  2025 年 8 月 9 日  | 
|   `1.31.7`   |   `eks-local-outposts.3`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.31.9`. AWS IAM Authenticator 已更新至 `v0.7.1`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.19.5`。Bottlerocket 版本已更新至 `v1.40.0`。  |  2025 年 6 月 19 日  | 
|   `1.31.6`   |   `eks-local-outposts.2`   |  具有安全性修正和增強功能的新平台版本。Bottlerocket 版本已更新至 `v1.36.0`。  |  2025 年 4 月 24 日  | 
|   `1.31.6`   |   `eks-local-outposts.1`   |  Outpost 上本機 Amazon EKS 叢集的 Kubernetes 版本 `v1.31` 的初始版本。  |  2025 年 4 月 9 日  | 

## Kubernetes 版本 `1.30`
<a name="outposts-platform-versions-1-30"></a>

下列許可控制器已為所有 `1.30` 平台版本啟用：`CertificateApproval`、`CertificateSigning`、`CertificateSubjectRestriction`、`ClusterTrustBundleAttest`、`DefaultIngressClass`、`DefaultStorageClass`、`DefaultTolerationSeconds`、`ExtendedResourceToleration`、`LimitRanger`、`MutatingAdmissionWebhook`、`NamespaceLifecycle`、`NodeRestriction`、`PersistentVolumeClaimResize`、`PodSecurity`、`Priority`、`ResourceQuota`、`RuntimeClass`、`ServiceAccount`、`StorageObjectInUseProtection`、`TaintNodesByCondition`、`ValidatingAdmissionPolicy` 以及 `ValidatingAdmissionWebhook`。


| Kubernetes 版本 | Amazon EKS 平台版本 | 版本備註 | 版本日期 | 
| --- | --- | --- | --- | 
|   `1.30.14`   |   `eks-local-outposts.10`   |  具有安全性修正和增強功能的新平台版本。 AWS IAM Authenticator 已更新為 `v0.7.8`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.4`。Bottlerocket 版本已更新至 `v1.52.0`。  |  2025 年 12 月 23 日  | 
|   `1.30.14`   |   `eks-local-outposts.7`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.30.14`. AWS IAM Authenticator 已更新至 `v0.7.4`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.2`。Bottlerocket 版本已更新至 `v1.47.0`。  |  2025 年 10 月 3 日  | 
|   `1.30.13`   |   `eks-local-outposts.6`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.30.13`. AWS IAM Authenticator 已更新至 `v0.7.2`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.0`。Bottlerocket 版本已更新至 `v1.43.0`。  |  2025 年 8 月 9 日  | 
|   `1.30.11`   |   `eks-local-outposts.5`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.30.11`. AWS IAM Authenticator 已更新至 `v0.7.1`。適用於 Kubernetes 的 Amazon VPC CNI 外掛程式已更新至 `v1.19.5` Bottlerocket 版本，已更新至 `v1.40.0`。  |  2025 年 6 月 19 日  | 
|   `1.30.10`   |   `eks-local-outposts.4`   |  具有安全性修正和增強功能的新平台版本。Bottlerocket 版本已更新至 `v1.36.0`。  |  2025 年 4 月 24 日  | 
|   `1.30.10`   |   `eks-local-outposts.3`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.30.10`. AWS IAM Authenticator 已更新至 `v0.6.29`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.19.2`。CoreDNS 已更新至 `v1.11.4`. AWS Cloud Controller Manager 已更新至 `v1.30.8`。Bottlerocket 版本已更新至 `v1.34.0`。  |  2025 年 3 月 27 日  | 
|   `1.30.7`   |   `eks-local-outposts.2`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.30.7`. AWS IAM Authenticator 已更新至 `v0.6.28`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.19.0`。已將 Bottlerocket 版本更新至 `v1.29.0`。  |  2025 年 1 月 10 日  | 
|   `1.30.5`   |   `eks-local-outposts.1`   |  Outpost 上本機 Amazon EKS 叢集的 Kubernetes 版本 `v1.30` 的初始版本。  |  2024 年 11 月 13 日  | 

## Kubernetes 版本 `1.29`
<a name="outposts-platform-versions-1-29"></a>

下列許可控制器已為所有 `1.29` 平台版本啟用：`CertificateApproval`、`CertificateSigning`、`CertificateSubjectRestriction`、`ClusterTrustBundleAttest`、`DefaultIngressClass`、`DefaultStorageClass`、`DefaultTolerationSeconds`、`ExtendedResourceToleration`、`LimitRanger`、`MutatingAdmissionWebhook`、`NamespaceLifecycle`、`NodeRestriction`、`PersistentVolumeClaimResize`、`PodSecurity`、`Priority`、`ResourceQuota`、`RuntimeClass`、`ServiceAccount`、`StorageObjectInUseProtection`、`TaintNodesByCondition`、`ValidatingAdmissionPolicy` 以及 `ValidatingAdmissionWebhook`。


| Kubernetes 版本 | Amazon EKS 平台版本 | 版本備註 | 版本日期 | 
| --- | --- | --- | --- | 
|   `1.29.15`   |   `eks-local-outposts.13`   |  具有安全性修正和增強功能的新平台版本。 AWS IAM Authenticator 已更新為 `v0.7.8`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.4`。Bottlerocket 版本已更新至 `v1.52.0`。  |  2025 年 12 月 23 日  | 
|   `v1.29.15`   |   `eks-local-outposts.10`   |  具有安全性修正和增強功能的新平台版本。 AWS IAM Authenticator 已更新為 `v0.7.4`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.2`。Bottlerocket 版本已更新至 `v1.47.0`。  |  2025 年 10 月 3 日  | 
|   `v1.29.15`   |   `eks-local-outposts.9`   |  具有安全性修正和增強功能的新平台版本。 AWS IAM Authenticator 已更新為 `v0.7.2`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.20.0`。Bottlerocket 版本已更新至 `v1.43.0`。  |  2025 年 8 月 9 日  | 
|   `v1.29.15`   |   `eks-local-outposts.8`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.29.15`. AWS IAM Authenticator 已更新至 `v0.7.1`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.19.5`。Bottlerocket 版本已更新至 `v1.40.0`。  |  2025 年 6 月 19 日  | 
|   `v1.29.14`   |   `eks-local-outposts.7`   |  具有安全性修正和增強功能的新平台版本。Bottlerocket 版本已更新至 `v1.36.0`。  |  2025 年 3 月 24 日  | 
|   `v1.29.14`   |   `eks-local-outposts.6`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.29.14`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.19.2`。CoreDNS 已更新至 `v1.11.4`. AWS Cloud Controller Manager 已更新至 `v1.29.8`。Bottlerocket 版本已更新至 `v1.34.0`。  |  2025 年 3 月 27 日  | 
|   `v1.29.11`   |   `eks-local-outposts.5`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.29.11`。Kubernetes 專用 Amazon VPC CNI 外掛程式已更新至 `v1.19.0`。已將 CoreDNS 映像更新至 `v1.11.3`。已將 Bottlerocket 版本更新至 `v1.29.0`。  |  2025 年 1 月 10 日  | 
|   `1.29.9`   |   `eks-local-outposts.4`   |  具有安全性修正和增強功能的新平台版本。kube-proxy 已更新至 `v1.29.9`. AWS IAM Authenticator 已更新至 `v0.6.26`。已將 Bottlerocket 版本更新至 `v1.26.0`。  |  2024 年 11 月 8 日  | 
|   `1.29.6`   |   `eks-local-outposts.3`   |  具有安全性修正和增強功能的新平台版本。已將 Bottlerocket 版本更新至 `v1.22.0`。  |  2024 年 10 月 22 日  | 
|   `1.29.6`   |   `eks-local-outposts.2`   |  具有安全性修正和增強功能的新平台版本。已將 Bottlerocket 版本更新至 `v1.21.0`。  |  2024 年 8 月 27 日  | 
|   `1.29.6`   |   `eks-local-outposts.1`   |  Outpost 上本機 Amazon EKS 叢集的 Kubernetes 版本 `v1.29` 的初始版本。  |  2024 年 8 月 20 日  | 

# 為 AWS Outpost 上的 Amazon EKS 叢集建立 VPC 和子網路
<a name="eks-outposts-vpc-subnet-requirements"></a>

建立本機叢集時，您需要指定 VPC 與至少一個在 Outpost 上執行的私人子網路。本主題概述了本機叢集的 VPC 和子網路要求和考量事項。

## VPC 要求和注意事項
<a name="outposts-vpc-requirements"></a>

建立本機叢集時，您指定的 VPC 必須符合下列要求和考量事項：
+ 請確保 VPC 具有足夠的 IP 位址用於本機叢集、任何節點以及您要建立的其他 Kubernetes 資源。如果要使用的 VPC 沒有足夠的 IP 位址，請增加可用 IP 位址的數目。您可以透過將[其他無類別域間路由 (CIDR) 區塊](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#add-ipv4-cidr)與 VPC 關聯來完成此操作。您可以在建立叢集的之前或之後，將私有 (RFC 1918) 和公有 (非 RFC 1918) CIDR 區塊與 VPC 關聯。叢集可能最多需要 5 小時才能辨識您與 VPC 關聯的 CIDR 區塊。
+ VPC 無法指派 IP 字首或 IPv6 CIDR 區塊。由於這些限制，該資訊未涵蓋在[將更多 IP 位址指派給具有字首的 Amazon EKS 節點](cni-increase-ip-addresses.md)中，並且 [了解叢集、Pod 與服務的 IPv6 位址](cni-ipv6.md) 不適用於您的 VPC。
+ VPC 已啟用 DNS 主機名稱和 DNS 解析。如果沒有這些功能，本機叢集無法建立，您需要啟用這些功能並重新建立叢集。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的 [VPC 的 DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。
+ 若要透過區域網路存取本機叢集，VPC 必須與 Outpost 的本機閘道路由表關聯。如需詳細資訊，請參閱《AWS Outposts 使用者指南》中的 [VPC 關聯](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html#vpc-associations)。

## 子網需求和注意事項
<a name="outposts-subnet-requirements"></a>

在建立叢集時，指定至少一個私有子網路。如果您指定多個子網路，Kubernetes 控制平面執行個體會平均分散在子網路上。如果指定多個子網路，則子網路必須存在於相同的 Outpost 上。此外，子網路還必須具有適當的路由和安全群組許可，才能互相通訊。在建立本機叢集時，您指定的子網路必須符合下列要求：
+ 子網路都位於相同的邏輯 Outpost 上。
+ 這些子網路一起至少有三個可用於 Kubernetes 控制平面執行個體的 IP 位址。如果指定三個子網路，每個子網路必須至少有一個可用的 IP 地址。如果指定兩個子網路，每個子網路必須至少有兩個可用的 IP 地址。如果指定一個子網路，該子網路必須至少有三個可用的 IP 地址。
+ 子網路具有 Outpost 機架[本機閘道](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html)的路由，以存取您本機網路上的 Kubernetes API 伺服器。如果子網路沒有 Outpost 機架本機閘道的路由，您必須在 VPC 內與 Kubernetes API 伺服器進行通訊。
+ 子網必須使用 IP 地址型命名。Amazon EKS 不支援 Amazon EC2 [資源型命名](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html#instance-naming-rbn)。

## AWS 服務的子網路存取權
<a name="subnet-access-to-services"></a>

Outposts 上的本機叢集私有子網路必須能與區域性 AWS 服務通訊。為此，您可以使用 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)進行網際網路對外存取，或者，如果您想要所有流量在 VPC 內保持私密，可使用[介面 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

### 使用 NAT 閘道
<a name="subnet-access-nat-gateway"></a>

Outposts 上的本機叢集私有子網路必須具有關聯的路由表，此路由表具有 Outpost 父可用區域公有子網路中 NAT 閘道的路由。公有子網路必須擁有到[網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)的路由。此 NAT 閘道會啟用傳出網際網路存取，並防止來自網際網路未經要求的傳入連線連接到 Outpost 上的執行個體。

### 使用 介面 VPC 端點
<a name="vpc-subnet-requirements-vpc-endpoints"></a>

如果 Outposts 上的本機叢集私有子網路沒有傳出網際網路連線，或者如果您想要所有流量在 VPC 內保持私密，則在建立叢集之前，您必須在區域子網路中建立下列介面 VPC 端點和[閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。


| 端點 | Endpoint type (端點類型) | 
| --- | --- | 
|   `com.amazonaws.region-code.ssm`   |  介面  | 
|   `com.amazonaws.region-code.ssmmessages`   |  介面  | 
|   `com.amazonaws.region-code.ec2messages`   |  介面  | 
|   `com.amazonaws.region-code.ec2`   |  介面  | 
|   `com.amazonaws.region-code.secretsmanager`   |  介面  | 
|   `com.amazonaws.region-code.logs`   |  介面  | 
|   `com.amazonaws.region-code.sts`   |  介面  | 
|   `com.amazonaws.region-code.ecr.api`   |  介面  | 
|   `com.amazonaws.region-code.ecr.dkr`   |  介面  | 
|   `com.amazonaws.region-code.s3`   |  閘道  | 

端點必須符合下列需求：
+ 在位於 Outpost 父可用區域的私有子網路中建立
+ 已啟用私有 DNS 名稱
+ 擁有連接的安全群組，該群組允許來自私有 Outpost 子網路之 CIDR 範圍的輸入 HTTPS 流量。

建立端點會產生費用。如需詳細資訊，請參閱 [AWS PrivateLink 定價](https://aws.amazon.com/privatelink/pricing/)。如果您的 Pod 需要存取其他 AWS 服務，則您需要建立其他端點。如需完整的端點清單，請參閱[與 AWS PrivateLink 整合的 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html)。

## 建立 VPC
<a name="outposts-create-vpc"></a>

您可以使用下列其中一個 AWS CloudFormation 範本建立符合先前需求的 VPC：
+  **[範本 1](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-09-20/amazon-eks-local-outposts-vpc-subnet.yaml)**：此範本會建立 VPC，其包含的一個私有子網路在 Outpost 上，一個公有子網路在 AWS 區域中。私有子網路具有透過駐留在 AWS 區域中公有子網路中的 NAT 閘道連至網際網路的路由。此範本可用於在具有輸出網際網路存取權的子網路中建立本機叢集。
+  **[範本 2](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-03-20/amazon-eks-local-outposts-fully-private-vpc-subnet.yaml)**：此範本會在 Outpost 上建立具有一個私有子網路的 VPC，以及在沒有輸入或輸出網際網路存取權 (亦稱為私有子網路) 的子網路中建立本機叢集所需的最基本的一組 VPC 端點。

# 準備 AWS Outposts 上的本機 Amazon EKS 叢集，以應對網路中斷連線
<a name="eks-outposts-network-disconnects"></a>

如果您的本機網路失去與 AWS 雲端之間的連線，您可以繼續使用 Outpost 上的本機 Amazon EKS 叢集。本主題包含如何準備本機叢集以應對網路連線中斷和相關考量事項。
+ 本機叢集可在出現暫時且意外的網路連線中斷時提供穩定性和持續運作。AWSOutposts 仍為完整連線方案，可作為您資料中心中 AWS 雲端的擴充功能運作。如果 Outpost 與 AWS 雲端之間的網路連線中斷，則我們建議您嘗試恢復連線。如需說明，請參閱《*AWS Outposts 使用者指南*》中的 [AWS Outposts 機架網路故障診斷檢查清單](https://docs.aws.amazon.com/outposts/latest/userguide/network-troubleshoot.html)。如需有關如何針對本機叢集問題進行疑難排解的詳細資訊，請參閱 [Outposts 上的本機 Amazon EKS AWS 叢集疑難排解](eks-outposts-troubleshooting.md)。
+ Outpost 會發射 `ConnectedStatus` 指標，您可用此指標來監控 Outpost 的連線狀態。如需詳細資訊，請參閱《*AWS Outposts 使用者指南*》中的 [Outposts 指標](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-cloudwatch-metrics.html#outposts-metrics)。
+ 本機叢集會使用 IAM 作為預設身分驗證機制，而該機制使用 [Kubernetes 的 AWS Identity and Access Management 驗證器](https://github.com/kubernetes-sigs/aws-iam-authenticator)。IAM 在網路連線中斷期間無法使用。因此，本機叢集會使用 `x.509` 憑證支援替代身分驗證機制，您可使用這些憑證在網路連線中斷期間連線至叢集。如需有關如何取得和使用您叢集 `x.509` 憑證的資訊，請參閱 [在網路連線中斷期間針對本機叢集進行身分驗證](#outposts-network-disconnects-authentication)。
+ 如果您無法在網路連線中斷期間存取 Route 53，請考慮在內部部署環境中使用本機 DNS 伺服器。Kubernetes 控制平面執行個體會使用靜態 IP 位址。您可使用端點主機名稱和 IP 地址來設定用來連線至叢集的主機，以此作為使用本機 DNS 伺服器的替代方法。如需詳細資訊，請參閱《*AWS Outposts 使用者指南*》中的 [DNS](https://docs.aws.amazon.com/outposts/latest/userguide/how-outposts-works.html#dns)。
+ 如果您預期應用程式流量會在網路連線中斷期間增加，則可在連線至雲端時在叢集中佈建備用運算容量。AWS Outposts 的價格已包含 Amazon EC2 執行個體。因此，執行備用執行個體不會影響您的 AWS 用量成本。
+ 在網路連線中斷期間，若要啟用工作負載的建立、更新和擴展操作，則必須可透過區域網路存取應用程式的容器映像，且叢集須有足夠容量。本機叢集不會為您託管容器登錄檔。如果先前已在這些節點上執行 Pod，則系統會在節點上快取容器映像。如果您通常會從雲端中的 Amazon ECR 提取應用程式的容器映像，則請考慮執行本機快取或登錄檔。如果您在網路連線中斷期間需要建立、更新和擴展工作負載資源的操作，則本機快取或登錄會很有幫助。
+ 本機叢集會使用 Amazon EBS 作為持久性磁碟區的預設儲存類別，並使用 Amazon EBS CSI 驅動程式管理 Amazon EBS 持久性磁碟區的生命週期。在網路連線中斷期間，無法建立、更新或擴展由 Amazon EBS 支援的 Pod。這是因為這些操作需要呼叫雲端中的 Amazon EBS API。如果您要在本機叢集上部署具狀態的工作負載，且在網路連線中斷期間需要建立、更新或擴展操作，則請考慮使用替代儲存機制。
+ 如果 AWS Outposts 無法存取相關的 AWS 區域內 API (例如適用於 Amazon EBS 或 Amazon S3 的 API)，就無法建立或刪除 Amazon EBS 快照。
+ 將 ALB (輸入) 與 AWS Certificate Manager (ACM) 整合時，會將憑證推送並儲存在 AWS Outposts ALB 運算執行個體的記憶體中。如果與 AWS 區域中斷連線，目前的 TLS 終止將繼續運作。在此內容中變動操作將會失敗 (例如新的輸入定義、新的 ACM 型憑證 API 操作、ALB 運算規模或憑證輪換)。如需詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[針對受管憑證續約進行故障診斷](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-renewal.html)。
+ Amazon EKS 控制平面日誌會在網路連線中斷期間於 Kubernetes 控制平面執行個體上進行本機快取。在重新連線時，系統會將日誌傳送至父系 AWS 區域中的 CloudWatch Logs。您可以使用 [Prometheus](https://prometheus.io/)、[Grafana](https://grafana.com/) 或 Amazon EKS 合作夥伴解決方案，以透過 Kubernetes API 伺服器的指標端點或使用日誌的 Fluent Bit 在本機上監控叢集。
+ 如果您正為應用程式流量使用 Outposts 上的 AWS Load Balancer 控制器，前端是 AWS Load Balancer 控制器的現有 Pod 會在網路連線中斷期間持續接收流量。在 Outpost 重新連線至 AWS 雲端之前，在網路連線中斷期間建立的新 Pod 皆不會接收流量。請考慮在連線至 AWS 雲端時為您的應用程式設定複本計數，以滿足網路連線中斷期間的擴展需求。
+ Kubernetes 專用 Amazon VPC CNI 外掛程式預設為[次要 IP 模式](https://aws.github.io/aws-eks-best-practices/networking/vpc-cni/#overview)。其使用 `WARM_ENI_TARGET`=`1` 來設定，這會允許外掛程式保留可用 IP 位址的「完整彈性網路介面」。請依據中斷連線狀態期間的擴展需求來考慮變更 `WARM_ENI_TARGET`、`WARM_IP_TARGET` 和 `MINIMUM_IP_TARGET` 值。如需詳細資訊，請參閱 GitHub 上外掛程式的 [readme](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md) 檔案。如需每個執行個體類型支援的 Pod 數目上限清單，請參閱 GitHub 上的 [eni-max-pods.txt](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/misc/eni-max-pods.txt) 檔案。

## 在網路連線中斷期間針對本機叢集進行身分驗證
<a name="outposts-network-disconnects-authentication"></a>

 網路連線中斷期間無法使用 AWS Identity and Access Management (IAM)。中斷連線時，您無法使用 IAM 憑證對本機叢集進行身分驗證。但是，您可以在中斷連線時使用 `x509` 憑證，透過區域網路連接至您的叢集。您需要下載並存放客戶端 `X509` 憑證，以在中斷連線期間使用。本此主題中，您將了解如何在中斷連線時建立和使用憑證，以對叢集進行身分驗證。

1. 建立憑證簽署請求。

   1. 產生憑證簽署請求。

      ```
      openssl req -new -newkey rsa:4096 -nodes -days 365 \
          -keyout admin.key -out admin.csr -subj "/CN=admin"
      ```

   1. 在 Kubernetes 中建立憑證簽署請求。

      ```
      BASE64_CSR=$(cat admin.csr | base64 -w 0)
      cat << EOF > admin-csr.yaml
      apiVersion: certificates.k8s.io/v1
      kind: CertificateSigningRequest
      metadata:
        name: admin-csr
      spec:
        signerName: kubernetes.io/kube-apiserver-client
        request: ${BASE64_CSR}
        usages:
        - client auth
      EOF
      ```

1. 使用 `kubectl` 建立憑證簽署請求。

   ```
   kubectl create -f admin-csr.yaml
   ```

1. 檢查憑證簽署請求的狀態。

   ```
   kubectl get csr admin-csr
   ```

   範例輸出如下。

   ```
   NAME       AGE   REQUESTOR                       CONDITION
   admin-csr  11m   kubernetes-admin                Pending
   ```

   Kubernetes 已建立憑證簽署請求。

1. 核准憑證簽署請求。

   ```
   kubectl certificate approve admin-csr
   ```

1. 重新檢查核准的憑證簽署請求狀態。

   ```
   kubectl get csr admin-csr
   ```

   範例輸出如下。

   ```
   NAME       AGE   REQUESTOR                     CONDITION
   admin-csr  11m   kubernetes-admin              Approved
   ```

1. 擷取並驗證憑證。

   1. 擷取憑證。

      ```
      kubectl get csr admin-csr -o jsonpath='{.status.certificate}' | base64 --decode > admin.crt
      ```

   1. 驗證憑證。

      ```
      cat admin.crt
      ```

1. 建立與 `admin` 使用者綁定的叢集角色。

   ```
   kubectl create clusterrolebinding admin --clusterrole=cluster-admin \
       --user=admin --group=system:masters
   ```

1. 產生中斷連線狀態的使用者範圍 kubeconfig。

   您可以使用下載的 `admin` 憑證來產生 `kubeconfig` 檔案。取代下列命令中的 *my-cluster* 和 *apiserver-endpoint*。

   ```
   aws eks describe-cluster --name my-cluster \
       --query "cluster.certificateAuthority" \
       --output text | base64 --decode > ca.crt
   ```

   ```
   kubectl config --kubeconfig admin.kubeconfig set-cluster my-cluster \
       --certificate-authority=ca.crt --server apiserver-endpoint --embed-certs
   ```

   ```
   kubectl config --kubeconfig admin.kubeconfig set-credentials admin \
       --client-certificate=admin.crt --client-key=admin.key --embed-certs
   ```

   ```
   kubectl config --kubeconfig admin.kubeconfig set-context admin@my-cluster \
       --cluster my-cluster --user admin
   ```

   ```
   kubectl config --kubeconfig admin.kubeconfig use-context admin@my-cluster
   ```

1. 檢視您的 `kubeconfig` 檔案。

   ```
   kubectl get nodes --kubeconfig admin.kubeconfig
   ```

1. 如果您在 Outpost 上已有生產中的服務，請跳過此步驟。如果 Amazon EKS 是您 Outpost 上唯一執行的服務，且 Outpost 目前尚未處於生產中，則您可模擬網路連線中斷。在您使用本機叢集進入生產之前，模擬中斷連線以確保在中斷連線狀態下可存取叢集。

   1. 在連接 Outpost 至 AWS 區域的聯網裝置上套用防火牆規則。這會中斷 Outpost 連結的服務。您無法建立任何新的執行個體。目前執行中的執行個體會失去與 AWS 區域和網際網路的連線。

   1. 您可在中斷連線時使用 `x509` 憑證，測試連結至您本機叢集的連線。請確保將您的 `kubeconfig` 變更為您在上一步中建立的 `admin.kubeconfig`。使用您本機叢集的名稱取代 *my-cluster*。

      ```
      kubectl config use-context admin@my-cluster --kubeconfig admin.kubeconfig
      ```

   如果您在本機叢集處於中斷連線狀態時發現任何問題，建議您開啟支援票證。

# 根據容量考量，為 AWS Outposts 上的 Amazon EKS 叢集選取執行個體類型和置放群組
<a name="eks-outposts-capacity-considerations"></a>

本主題提供有關為 Outpost 上本機 Amazon EKS 叢集選取 Kubernetes 控制平面執行個體類型以及 (選用) 使用置放群組滿足該叢集的高可用性需求的指導。

為 Outposts 上的本機叢集 Kubernetes 控制平面選取要使用的執行個體類型 (例如 `m5`、`c5` 或 `r5`) 之前，先確認 Outpost 組態上可用的執行個體類型。識別可用的執行個體類型之後，根據工作負載所需的節點數量，來選取執行個體大小 (例如 `large`、`xlarge` 或 `2xlarge`)。下表提供有關選擇執行個體大小的建議。

**注意**  
執行個體大小必須在您的 Outposts 上設定好插槽。確保在本機叢集的生命週期內，您有足夠的容量可容納 Outposts 上可用大小的三個執行個體。如需可用 Amazon EC2 執行個體類型的清單，請參閱 [AWS Outposts 機架功能](https://aws.amazon.com/outposts/rack/features/)中的「運算與儲存」章節。


| 節點數量。 | Kubernetes 控制平面執行個體大小 | 
| --- | --- | 
|  1–20  |   `large`   | 
|  21–100  |   `xlarge`   | 
|  101–250  |   `2xlarge`   | 
|  251–500  |   `4xlarge`   | 

Kubernetes 控制平面的儲存空間需要每個本機叢集 246 GB 的 Amazon EBS 儲存體，才能滿足 `etcd` 所需 IOPS 佔用的空間。建立本機叢集時，系統會自動為您佈建 Amazon EBS 磁碟區。

## 控制平面置放
<a name="outpost-capacity-considerations-control-plane-placement"></a>

若您未使用該 `OutpostConfig.ControlPlanePlacement.GroupName` 屬性指定置放群組，則為您的 Kubernetes 控制平面所佈建的 Amazon EC2 執行個體不會在 Outpost 上可用的基礎容量上收到任何特定硬體置放的強制執行。

您可以使用置放群組來滿足 Outpost 上本機 Amazon EKS 叢集的高可用性需求。透過在叢集建立期間指定置放群組，可影響 Kubernetes 控制平面執行個體的置放。執行個體分布於獨立的基礎硬體 (機架或主機)，這樣可將相關執行個體對硬體故障事件的影響降至最低。

您能夠設定的分布類型取決於部署中所擁有的 Outpost 機架數量。
+  **單一邏輯 Outpost 中具有一或兩個實體機架的部署**：您必須擁有至少三台主機，這些主機使用您為 Kubernetes 控制平面執行個體選擇的執行個體類型進行設定。使用*主機層級分布*的*分散*置放群組可確保所有 Kubernetes 控制平面執行個體在 Outpost 部署中可用的基礎機架內的不同主機上執行。
+  **單一邏輯 Outpost 中具有三個或更多實體機架的部署**：您必須擁有至少三台主機，這些主機使用您為 Kubernetes 控制平面執行個體選擇的執行個體類型進行設定。使用*機架層級分布*的*分散*置放群組可確保所有 Kubernetes 控制平面執行個體在 Outpost 部署中的不同機架上執行。或者，如前一個選項中所述，您也可以使用*主機層級分布*置放群組。

您負責建立所需的置放群組。您可以在呼叫 `CreateCluster` API 時指定置放群組。如需有關置放群組及其如何建立的詳細資訊，請參閱《Amazon EC2 使用者指南》中的[置放群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)。
+ 指定放置群組後，Outpost 上必須有可用的開槽容量，才能成功建立本機 Amazon EKS 叢集。容量會根據您使用的是主機還是機架分布類型而有所不同。若容量不足，則叢集會維持在 `Creating` 狀態。您可以檢查 [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) API 回應於運作狀態欄位的 `Insufficient Capacity Error`。您必須釋放容量才能進行建立程序。
+ 在 Amazon EKS 本機叢集平台和版本更新期間，系統會使用滾動式更新策略，將叢集中的 Kubernetes 控制平面執行個體取代為新的執行個體。在此取代過程中，每個控制平面執行個體皆會終止，從而釋放各自的插槽。新更新的執行個體已佈建在其位置中。更新後的執行個體可能會被置放於已釋放的插槽中。若插槽已被另一個不相關的執行個體使用，且沒有剩餘的容量符合所需的分布拓撲需求，則叢集會維持在 `Updating` 狀態。您可以在 [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) API 回應的運作狀態欄位上看到對應的 `Insufficient Capacity Error`。您必須釋放容量，才能進行更新程序並重新建立先前的高可用性層級。
+ 您可以在每個 AWS 區域的每個帳戶建立最多 500 個置放群組。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[一般規則與限制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html#placement-groups-limitations-general)。

# Outposts 上的本機 Amazon EKS AWS 叢集疑難排解
<a name="eks-outposts-troubleshooting"></a>

本主題涵蓋一些使用本機叢集時可能遇到的常見錯誤與排除這些錯誤的方法。雖然本機叢集與雲端中的 Amazon EKS 叢集相似，但 Amazon EKS 管理本機叢集的方式仍有些許差異。

**重要**  
除非 AWS Support 明確指示，否則請勿終止在 Outpost 上執行的任何受管 EKS 本機叢集`Kubernetes`控制平面執行個體。終止這些執行個體會對本機叢集服務可用性帶來風險，包括在同時終止多個執行個體時，遺失本機叢集。EC2 執行個體主控台上的 `eks-local:controlplane-name` 標籤可識別 EKS 本機叢集 `Kubernetes` 控制平面執行個體。

## API 行為
<a name="outposts-troubleshooting-api-behavior"></a>

本機叢集透過 Amazon EKS API 建立，但會以非同步方式執行。這表示本機叢集對 Amazon EKS API 的請求會立即傳回。但是，這些請求可能會成功、因輸入驗證錯誤而快速檢錯，或失敗並附上描述性驗證錯誤。此行為與 Kubernetes API 相似。

本機叢集不會變為 `FAILED` 狀態。Amazon EKS 會嘗試以連續的方式使叢集狀態與使用者請求的所需狀態一致。因此，本機叢集可能會長期保持在 `CREATING` 狀態，直到基礎問題解決為止。

## 描述叢集運作狀態欄位
<a name="outposts-troubleshooting-describe-cluster-health-field"></a>

您可以使用 [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-cluster.html) Amazon EKS AWS CLI 命令來發現本機叢集問題。本機叢集問題可透過 `describe-cluster` 命令回應的 `cluster.health` 欄位顯露。此欄位內含的訊息包括錯誤代碼、描述性訊息和相關資源 ID。此資訊僅可透過 Amazon EKS API 和 AWS CLI 取得。在以下範例中，使用您本機叢集的名稱取代 *my-cluster*。

```
aws eks describe-cluster --name my-cluster --query 'cluster.health'
```

範例輸出如下。

```
{
    "issues": [
        {
            "code": "ConfigurationConflict",
            "message": "The instance type 'm5.large' is not supported in Outpost 'my-outpost-arn'.",
            "resourceIds": [
                "my-cluster-arn"
            ]
        }
    ]
}
```

如果問題無法解決，您可能需要刪除本機叢集並建立新叢集。例如，嘗試使用在 Outpost 上未提供的執行個體類型佈建叢集。下表包含與運作狀態相關的常見錯誤。


| 錯誤情況 | 代碼 | 訊息 | ResourceIds | 
| --- | --- | --- | --- | 
|  找不到提供的子網路。  |   `ResourceNotFound`   |   `The subnet ID subnet-id does not exist`   |  所有提供的子網路 ID  | 
|  提供的子網路不屬於同一 VPC。  |   `ConfigurationConflict`   |   `Subnets specified must belong to the same VPC`   |  所有提供的子網路 ID  | 
|  某些提供的子網路不屬於指定的 Outpost。  |   `ConfigurationConflict`   |   `Subnet subnet-id expected to be in outpost-arn, but is in other-outpost-arn `   |  有問題的子網路 ID  | 
|  某些提供的子網路不屬於任何 Outpost。  |   `ConfigurationConflict`   |   `Subnet subnet-id is not part of any Outpost`   |  有問題的子網路 ID  | 
|  某些提供的子網路沒有足夠的可用地址來為控制平面執行個體建立彈性網路介面。  |   `ResourceLimitExceeded`   |   `The specified subnet does not have enough free addresses to satisfy the request.`   |  有問題的子網路 ID  | 
|  您的 Outpost 不支援指定的控制平面執行個體類型。  |   `ConfigurationConflict`   |   `The instance type type is not supported in Outpost outpost-arn `   |  叢集 ARN  | 
|  您已終止控制平面 Amazon EC2 執行個體，或 `run-instance` 已成功，但觀察到的狀態變更為 `Terminated`。您的 Outpost 重新連線後一段時間可能會發生此情況，且 Amazon EBS 內部錯誤會導致 Amazon EC2 內部工作流程失敗。  |   `InternalFailure`   |   `EC2 instance state "Terminated" is unexpected`   |  叢集 ARN  | 
|  您在 Outpost 上的容量不足。如果 Outpost 與 AWS 區域中斷連線，則在建立叢集時也會發生這種情況。  |   `ResourceLimitExceeded`   |   `There is not enough capacity on the Outpost to launch or start the instance.`   |  叢集 ARN  | 
|  您的帳戶已超過您的安全群組配額。  |   `ResourceLimitExceeded`   |  Amazon EC2 API 傳回的錯誤訊息  |  目標 VPC ID  | 
|  您的帳戶已超過您的彈性網路介面配額。  |   `ResourceLimitExceeded`   |  Amazon EC2 API 傳回的錯誤訊息  |  目標子網路 ID  | 
|  無法透過 AWS Systems Manager 連線控制平面執行個體。如需解決方案，請參閱[無法透過 AWS Systems Manager 存取控制平面執行個體](#outposts-troubleshooting-control-plane-instances-ssm)。  |   `ClusterUnreachable`   |  Amazon EKS 控制平面執行個體無法透過 SSM 連線。請確認您的 SSM 和網路組態，並參考 Outpost 上的 EKS 疑難排解文件。  |  Amazon EC2 執行個體 ID  | 
|  取得受管安全群組或彈性網路介面的詳細資訊時發生錯誤。  |  根據 Amazon EC2 用戶端錯誤代碼。  |  Amazon EC2 API 傳回的錯誤訊息  |  所有受管的安全群組 ID  | 
|  授權或撤銷安全群組輸入規則時發生錯誤。這適用於叢集和控制平面安全群組。  |  根據 Amazon EC2 用戶端錯誤代碼。  |  Amazon EC2 API 傳回的錯誤訊息  |  有問題的安全群組 ID  | 
|  刪除控制平面執行個體的彈性網路介面時發生錯誤。  |  根據 Amazon EC2 用戶端錯誤代碼。  |  Amazon EC2 API 傳回的錯誤訊息  |  有問題的彈性網路介面 ID  | 

下表列出來自其他 AWS 服務的錯誤，這些錯誤會顯示在`describe-cluster`回應的運作狀態欄位中。


| Amazon EC2 錯誤代碼 | 叢集運作狀態問題代碼 | Description | 
| --- | --- | --- | 
|   `AuthFailure`   |   `AccessDenied`   |  基於各種原因，可能會發生此錯誤。最常見的原因是您意外移除了服務用於從控制平面縮小服務連結角色政策範圍的標籤。如果發生這種情況，Amazon EKS 將無法再管理和監控這些 AWS 資源。  | 
|   `UnauthorizedOperation`   |   `AccessDenied`   |  基於各種原因，可能會發生此錯誤。最常見的原因是您意外移除了服務用於從控制平面縮小服務連結角色政策範圍的標籤。如果發生這種情況，Amazon EKS 將無法再管理和監控這些 AWS 資源。  | 
|   `InvalidSubnetID.NotFound`   |   `ResourceNotFound`   |  找不到安全群組輸入規則的子網路 ID 時，會發生此錯誤。  | 
|   `InvalidPermission.NotFound`   |   `ResourceNotFound`   |  安全群組輸入規則的許可不正確時，會發生此錯誤。  | 
|   `InvalidGroup.NotFound`   |   `ResourceNotFound`   |  找不到安全群組輸入規則的群組時，會發生此錯誤。  | 
|   `InvalidNetworkInterfaceID.NotFound`   |   `ResourceNotFound`   |  找不到安全群組輸入規則的網路介面 ID 時，會發生此錯誤。  | 
|   `InsufficientFreeAddressesInSubnet`   |   `ResourceLimitExceeded`   |  超過子網路資源配額時，會發生此錯誤。  | 
|   `InsufficientCapacityOnOutpost`   |   `ResourceLimitExceeded`   |  超過 Outpost 容量配額時，會發生此錯誤。  | 
|   `NetworkInterfaceLimitExceeded`   |   `ResourceLimitExceeded`   |  超過彈性網路介面配額時，會發生此錯誤。  | 
|   `SecurityGroupLimitExceeded`   |   `ResourceLimitExceeded`   |  超過安全群組配額時，會發生此錯誤。  | 
|   `VcpuLimitExceeded`   |   `ResourceLimitExceeded`   |  在新帳戶中建立 Amazon EC2 執行個體時，便會觀察到這種狀況。此錯誤可能類似以下內容："`You have requested more vCPU capacity than your current vCPU limit of 32 allows for the instance bucket that the specified instance type belongs to. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit."`  | 
|   `InvalidParameterValue`   |   `ConfigurationConflict`   |  如果 Outpost 不支援指定的執行個體類型，Amazon EC2 會傳回此錯誤代碼。  | 
|  所有其他失敗  |   `InternalFailure`   |  無  | 

## 無法建立或修改叢集
<a name="outposts-troubleshooting-unable-to-create-or-modify-clusters"></a>

本機叢集需要不同於雲端中託管的 Amazon EKS 叢集的許可和政策。叢集無法建立並產生 `InvalidPermissions` 錯誤時，再次檢查您使用的叢集角色是否擁有連接的 [AmazonEKSLocalOutpostClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy) 受管政策。所有其他 API 呼叫需要與雲端中 Amazon EKS 叢集相同的許可集。

## 叢集卡在 `CREATING` 狀態
<a name="outposts-troubleshooting-cluster-stuck-in-creating-state"></a>

建立本機叢集所需的時間量因數個因素而異。這些因素包括您的網路組態、Outpost 組態以及叢集的組態。一般而言，本機叢集會在 15-20 分鐘內建立並變更為 `ACTIVE` 狀態。如果本機叢集仍處於 `CREATING` 狀態，則您可以在 `cluster.health` 輸出欄位中呼叫 `describe-cluster` 以取得有關原因的資訊。

最常見的問題如下：
+ 您的叢集無法從 Systems Manager 所在的 AWS 區域連線至控制平面執行個體。您可以從區域內的堡壘主機呼叫 `aws ssm start-session --target instance-id ` 進行驗證。如果該命令不起作用，則請檢查 Systems Manager 是否在控制平面執行個體上執行。或者，另一個解決方法是刪除叢集，然後重新建立叢集。
+ 由於 EBS 磁碟區的 KMS 金鑰許可，無法建立控制平面執行個體。使用加密 EBS 磁碟區的使用者受管 KMS 金鑰時，如果無法存取金鑰，控制平面執行個體將會終止。如果執行個體終止，請切換到 AWS 受管 KMS 金鑰，或確保您的使用者受管金鑰政策授予叢集角色必要的許可。
+ Systems Manager 控制平面執行個體可能無法存取網際網路。檢查您在建立叢集時提供的子網路是否具有 NAT 閘道和具有網際網路閘道的 VPC。使用 VPC Reachability Analyzer 確認控制平面執行個體是否可連線至網際網路閘道。如需詳細資訊，請參閱 [Getting started with VPC Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/getting-started.html) (VPC Reachability Analyzer 入門)。
+ 您提供的角色 ARN 缺少政策。檢查 [AWS 受管政策：AmazonEKSLocalOutpostClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy) 是否已從角色中移除。如果 An AWS CloudFormation 堆疊設定錯誤，也可能發生這種情況。
+ 所有提供的子網路必須與相同的 Outpost 關聯，並且必須互相連線。如果在建立叢集時指定多個子網路，Amazon EKS 會嘗試將控制平面執行個體散佈到多個子網路。
+ Amazon EKS 受管的安全群組將套用至彈性網路介面。但是，其他組態元素 (例如 NACL 防火牆規則) 可能會與彈性網路介面的規則衝突。

**VPC 和子網路 DNS 組態設定錯誤或遺失**  
檢閱[在 AWS Outpost 上建立 Amazon EKS 叢集的 VPC 和子網路](eks-outposts-vpc-subnet-requirements.md)。

## 叢集卡在 `UPDATING` 狀態
<a name="outposts-troubleshooting-cluster-stuck-in-updating-state"></a>

Amazon EKS 會自動將所有現有的本機叢集更新到與其對應之 Kubernetes 次要版本的最新平台版本。如需平台版本的詳細資訊，請參閱 [了解 AWS Outposts 的 Kubernetes 和 Amazon EKS 平台版本](eks-outposts-platform-versions.md)。

在自動平台版本推展期間，叢集狀態會變更為 `UPDATING`。更新程序包含將所有 Kubernetes 控制平面執行個體取代為新的執行個體，而新的執行個體包含針對個別 Kubernetes 次要版本發布的最新安全性修補程式和錯誤修正。一般而言，本機叢集平台更新程序會在 30 分鐘內完成，且叢集會變更回 `ACTIVE` 狀態。如果本機叢集長期保持在 `UPDATING` 狀態，則您可以呼叫 `describe-cluster`，以在 `cluster.health` 輸出欄位中檢查有關原因的資訊。

Amazon EKS 可確保 3 個 Kubernetes 控制平面執行個體中至少有 2 個是運作狀態良好的操作叢集節點，以維持本機叢集可用性並防止服務中斷。如果本機叢集停滯在 `UPDATING` 狀態，通常是因為存在一些基礎結構或組態問題，導致在程序繼續進行的情況下，無法保證至少有兩個執行個體可用。因此，為防止本機叢集服務中斷，更新程序會停止。

請務必對停滯在 `UPDATING` 狀態的本機叢集進行孤故障診斷，並解決根本原因，以便更新程序可以完成，並將本機叢集還原為 `ACTIVE` 狀態，且達到 3 個 Kubernetes 控制平面執行個體的高可用性。

除非 AWS Support 明確指示，否則請勿終止 Outposts 上的任何受管 EKS 本機叢集`Kubernetes`執行個體。這對停滯在 `UPDATING` 狀態的本機叢集特別重要，因為另一個控制平面節點極有可能無法完全保持狀態良好，並且終止錯誤的執行個體可能會導致服務中斷以及本機叢集資料遺失。

最常見的問題如下：
+ 由於自本機叢集首次建立以來發生聯網組態變更，因此一或多個控制平面執行個體無法連接至 System Manager。您可以從區域內的堡壘主機呼叫 `aws ssm start-session --target instance-id ` 進行驗證。如果該命令不起作用，則請檢查 Systems Manager 是否在控制平面執行個體上執行。
+ 由於 EBS 磁碟區的 KMS 金鑰許可，無法建立新的控制平面執行個體。使用加密 EBS 磁碟區的使用者受管 KMS 金鑰時，如果無法存取金鑰，控制平面執行個體將會終止。如果執行個體終止，請切換到 AWS 受管 KMS 金鑰，或確保您的使用者受管金鑰政策授予叢集角色必要的許可。
+ Systems Manager 控制平面執行個體可能已失去網際網路存取。檢查您在建立叢集時提供的子網路是否具有 NAT 閘道和具有網際網路閘道的 VPC。使用 VPC Reachability Analyzer 確認控制平面執行個體是否可連線至網際網路閘道。如需詳細資訊，請參閱 [Getting started with VPC Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/getting-started.html) (VPC Reachability Analyzer 入門)。如果您的私有網路沒有傳出網際網路連線，請確保叢集的區域子網路中仍存在所有必要的 VPC 端點和閘道端點 (請參閱 [AWS 服務的子網路存取權](eks-outposts-vpc-subnet-requirements.md#subnet-access-to-services))。
+ 您提供的角色 ARN 缺少政策。檢查 [AWS 受管政策：AmazonEKSLocalOutpostClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy) 是否未從角色中移除。
+ 其中一個新的 Kubernetes 控制平面執行個體可能會遇到未預期的引導失敗。如需有關此例外情況的故障診斷和日誌收集的進一步指引，請向 [AWS Support Center](https://console.aws.amazon.com/support/home) 填寫票證。

## 無法將節點加入叢集
<a name="outposts-troubleshooting-unable-to-join-nodes-to-a-cluster"></a>
+ AMI 問題：
  + 您正在使用不相容的 AMI。僅支援 Amazon EKS 最佳化 Amazon Linux 2 AMIs (`amazon-linux-2`、`amazon-linux-2-gpu`、`amazon-linux-2-arm64`)。如果您嘗試將 AL2023 節點加入 AWS Outposts 上的 EKS LocalClusters，節點將無法加入叢集。如需詳細資訊，請參閱在 [AWS Outposts 上建立 Amazon Linux 節點](eks-outposts-self-managed-nodes.md)。
  + 如果您使用 an AWS CloudFormation 範本來建立節點，請確定它不是使用不支援的 AMI。
+ 遺失 AWS IAM Authenticator `ConfigMap` – 如果遺失，您必須建立它。如需詳細資訊，請參閱 [將 `aws-auth` `ConfigMap` 套用至您的叢集](auth-configmap.md#aws-auth-configmap)。
+ 使用錯誤的安全群組 – 確保將 `eks-cluster-sg-cluster-name-uniqueid ` 用於您工作節點的安全群組。 AWS CloudFormation 會變更選取的安全群組，以允許每次使用堆疊時有新的安全群組。
+ 依照未預期的私人連結 VPC 步驟：傳遞了錯誤的 CA 資料 (`--b64-cluster-ca`) 或 API 端點 (`--apiserver-endpoint`)。

## 收集日誌
<a name="outposts-troubleshooting-collecting-logs"></a>

當 Outpost 與其相關聯的 AWS 區域中斷連線時，Kubernetes 叢集可能會繼續正常運作。不過，如果叢集無法正常運作，請遵循在 [AWS Outposts 上準備本機 Amazon EKS 叢集以進行網路中斷連線](eks-outposts-network-disconnects.md)中的疑難排解步驟。如果您遇到其他問題，請聯絡 AWS Support。 AWS Support 可以引導您下載和執行日誌收集工具。如此一來，您可以從 Kubernetes 叢集控制平面執行個體收集日誌，並將其傳送至 AWS Support 以進行進一步調查。

## 無法透過 AWS Systems Manager 存取控制平面執行個體
<a name="outposts-troubleshooting-control-plane-instances-ssm"></a>

當 Amazon EKS 控制平面執行個體無法透過 AWS Systems Manager (Systems Manager) 連線時，Amazon EKS 會顯示叢集的下列錯誤。

```
Amazon EKS control plane instances are not reachable through SSM. Please verify your SSM and network configuration, and reference the EKS on Outposts troubleshooting documentation.
```

若要解決此問題，請確定您的 VPC 和子網路符合在 [AWS Outposts 上為 Amazon EKS 叢集建立 VPC 和子網路](eks-outposts-vpc-subnet-requirements.md)的要求，而且您已完成 AWS Systems Manager 使用者指南中[設定 Session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) Manager 的步驟。

# 在 AWS Outpost 上建立 Amazon Linux 節點
<a name="eks-outposts-self-managed-nodes"></a>

**重要**  
Outposts 上的 Amazon EKS 本機叢集僅支援從下列 Amazon EKS 最佳化 Amazon Linux 2023 AMIs 建立的節點：  
標準 Amazon Linux 2023 (`amazon-linux-2023/x86_64/standard`)
加速 Nvidia Amazon Linux 2023 (`amazon-linux-2023/x86_64/nvidia`)
加速 Neuron Amazon Linux 2023 (`amazon-linux-2023/x86_64/neuron`)
 AWS 已於 2025 年 11 月 26 日終止對 EKS AL2-optimized和 AL2-accelerated AMIs 的支援。雖然您可以在終止支援 (EOS) 日期 (2025 年 11 月 26 日) 之後繼續使用 EKS AL2 AMI，但 EKS 將不再發布任何新的 Kubernetes 版本或對 AL2 AMI 的更新，包括此日期之後的次要版本、修補程式和錯誤修正。如需 AL2 棄用的詳細資訊，請參閱[此處](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-deprecation-faqs.html)。

本主題會說明如何啟動 Outpost 上已向 Amazon EKS 叢集註冊的 Amazon Linux 節點的 Auto Scaling 群組。叢集可以在 AWS 雲端或 Outpost 上。
+ 現有的 Outpost。如需詳細資訊，請參閱[什麼是 AWS Outpost。](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)
+ 現有 Amazon EKS 叢集。若要在 AWS 雲端部署叢集，請參閱 [建立 Amazon EKS 叢集](create-cluster.md)。若要在 Outpost 上部署叢集，請參閱[建立 AWS Outposts 上的本機 Amazon EKS 叢集，以實現高可用性](eks-outposts-local-cluster-overview.md)。
+ 假設您正在 AWS 雲端的叢集中建立節點，並在已啟用 AWS Outposts、 AWS Wavelength 或 AWS Local Zones 的 AWS 區域中擁有子網路。然後，在您建立叢集時，不得傳入這些子網路。如果您要在 Outpost 上的叢集中建立節點，則必須在建立叢集時便已傳入 Outpost 子網路。
+ （建議用於 AWS 雲端上的叢集） 適用於 Kubernetes 附加元件的 Amazon VPC CNI 外掛程式，其設定為具有連接必要 IAM 政策的自有 IAM 角色。如需詳細資訊，請參閱[設定 Amazon VPC CNI 外掛程式以使用 IRSA](cni-iam-role.md)。本機叢集不支援服務帳戶的 IAM 角色。

您可以使用 `eksctl`或 AWS 管理主控台 （使用 AWS CloudFormation 範本） 建立自我管理的 Amazon Linux 節點群組。您也可使用 Terraform。

您可以使用此頁面中所述的下列工具，為本機叢集建立自我管理節點群組：
+  [`eksctl`](#eksctl_create_nodes_outpost) 
+  [AWS 管理主控台](#console_create_nodes_outpost) 

**重要**  
自我管理節點群組包含您帳戶的 Amazon EC2 執行個體。當您或 Amazon EKS 代您更新控制平面版本時，這些執行個體不會自動升級。自我管理節點群組在主控台中沒有任何需要更新的指示。您可以檢視安裝在節點上的 `kubelet` 版本，方法是選取您叢集的 **Overview** (概觀) 標籤上的 **Nodes** (節點) 清單上的節點，以判斷哪些節點需要更新。您必須手動更新節點。如需詳細資訊，請參閱[更新您的叢集的自我管理節點](update-workers.md)。
您自我管理節點上的 kubelet 使用的憑證已核發，一年過期。預設**不會**啟用憑證輪換 （請參閱：https：//https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/\$1kubelet-config-k8s-io-v1beta1-KubeletConfiguration)，這表示如果您的自我管理節點執行超過一年，就無法再向 Kubernetes API 進行身分驗證。
基於最佳實務，建議客戶定期更新其自我管理節點群組，以從最新的 Amazon EKS 最佳化 AMI 接收 CVE 和安全性修補程式。更新自我管理節點群組中使用的 AMI 也會觸發節點的重新建立，並確保它們不會因為過期的 kubelet 憑證而發生問題。
或者，您也可以在建立自我管理節點群組時啟用用戶端憑證輪換 (請參閱：https://kubernetes.io/docs/tasks/tls/certificate-rotation/)，以確保在 kubelet 憑證在目前的憑證即將過期時及時更新。

## `eksctl`
<a name="eksctl_create_nodes_outpost"></a>

 **使用 `eksctl` 啟動自我管理的 Linux 節點** 

1. 在您的裝置或 AWS CloudShell 上安裝版本 `0.215.0`或更新版本的`eksctl`命令列工具。如需有關安裝或更新 `eksctl` 的指示，請參閱 `eksctl` 文件中的[安裝](https://eksctl.io/installation)一節。

1. 如果您的叢集位於 AWS 雲端，且 **AmazonEKS\$1CNI\$1Policy** 受管 IAM 政策已連接至您的 [Amazon EKS 節點 IAM 角色](create-node-role.md)，建議您改為將其指派給與 Kubernetes `aws-node`服務帳戶相關聯的 IAM 角色。如需詳細資訊，請參閱[設定 Amazon VPC CNI 外掛程式以使用 IRSA](cni-iam-role.md)。若您的叢集位於 Outpost 上，則政策必須連接至您的節點角色。

1. 以下命令會在現有的叢集建立節點群組。叢集必須使用 `eksctl` 來建立。將 *al-nodes* 取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭，但剩餘字元也可以包含連字符和底線。使用您叢集的名稱取代 *my-cluster*。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭，且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。若您的叢集存在於 Outpost 上，請使用 Outpost 子網路的 ID 來取代 *id*。如果您的叢集存在於 AWS 雲端上，請將 *ID* 取代為您建立叢集時未指定的子網路 ID。使用您自己的值取代其餘範例值。依預設，系統會使用與控制平面相同的 Kubernetes 版本來建立節點。

   使用您 Outpost 上可用的執行個體類型來取代 *instance-type* 。

   使用 Amazon EC2 金鑰對或公有金鑰的名稱取代 *my-key*。此金鑰會在節點啟動後用於將 SSH 套用至節點。如果您還沒有 Amazon EC2 金鑰對，可以在 AWS 管理主控台中建立一個。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

   使用下列命令來建立您的節點群組。

   ```
   eksctl create nodegroup --cluster my-cluster --name al-nodes --node-type instance-type \
       --nodes 3 --nodes-min 1 --nodes-max 4 --managed=false \
       --node-volume-type gp2 --subnet-ids subnet-id \
       --node-ami-family AmazonLinux2023
   ```

   如果您的叢集部署在 AWS 雲端：
   + 您部署的節點群組可以從與執行個體不同的 CIDR 區塊將 `IPv4` 地址指派給 Pod。如需詳細資訊，請參閱[使用自訂聯網在替代子網路中部署 Pod](cni-custom-network.md)。
   + 您部署的節點群組不需要傳出網際網路存取。如需詳細資訊，請參閱[部署網際網路存取受到限制的私有叢集](private-clusters.md)。

   如需所有可用選項和預設值的完整清單，請參閱 `eksctl` 文件中的 [AWS Outposts 支援](https://eksctl.io/usage/outposts/)。
   + 如果節點無法加入叢集，請參閱[節點無法加入叢集](troubleshooting.md#worker-node-fail)[針對 Amazon EKS 叢集和節點問題進行故障診斷](troubleshooting.md)[無法將節點加入叢集](eks-outposts-troubleshooting.md#outposts-troubleshooting-unable-to-join-nodes-to-a-cluster)，以及針對 [AWS Outposts 上的本機 Amazon EKS 叢集進行故障診斷](eks-outposts-troubleshooting.md)。
   + 範例輸出如下。建立節點時，會有數行輸出。輸出的最後幾行之一類似於以下的範例行。

     ```
     [✔]  created 1 nodegroup(s) in cluster "my-cluster"
     ```

1. (選用) 部署[範例應用程式](sample-deployment.md)以測試您的叢集和 Linux 節點。

## AWS 管理主控台
<a name="console_create_nodes_outpost"></a>

 **步驟 1：使用 AWS 管理主控台 啟動自我管理的 Linux 節點** 

1. 下載最新版本的 AWS CloudFormation 範本。

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-24/amazon-eks-outpost-nodegroup.yaml
   ```

1. 開啟 [AWS CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/)。

1. 選擇 **Create stack** (建立堆疊)，然後選取 **With new resources (standard)** (使用新資源 (標準))。

1. 針對 **Specify template** (指定範本)，選取 **Upload a template file** (上傳範本檔案)，然後選取 **Choose file** (選擇檔案)。選取在上一步驟中下載的 `amazon-eks-nodegroup.yaml` 檔案，然後選取 **Next** (下一步)。

1. 在 **Specify stack details** (指定堆疊詳細資訊) 頁面上，據此填寫下列參數，然後選擇 **Next** (下一步)：
   +  **堆疊名稱**：為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如，您可以稱它為 *al-nodes*。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭，且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。
   +  **ApiServerEndpoint**：輸入 Kubernetes API 伺服器端點，在 EKS 主控台中或透過 DescribeCluster API 顯示。
   +  **ClusterName**：請輸入您叢集的名稱。若此名稱與您叢集的名稱不相符，則您的節點便無法加入叢集。
   +  **ClusterId**：輸入由 EKS 服務指派給叢集的 ID。透過 DescribeCluster API 可見。如果此 ID 與您的叢集 ID 不符，您的節點將無法加入叢集。
   +  **CertificateAuthority**：輸入 Kubernetes Certificate Authority 的 base64 編碼字串。在 EKS 主控台中或透過 DescribeCluster API 顯示。
   +  **ServiceCidr**：輸入 Kubernetes Services CIDR。在 EKS 主控台中或透過 DescribeCluster API 顯示。
   +  **ClusterControlPlaneSecurityGroup**：從您在建立 [VPC](creating-a-vpc.md) 時產生的 AWS CloudFormation 輸出中選擇 **SecurityGroups** 值。

     下列步驟顯示擷取適用群組的一種操作。

     1. 開啟 [Amazon EKS 主控台](https://console.aws.amazon.com/eks/home#/clusters)。

     1. 選擇叢集的名稱。

     1. 選擇 **Networking (網路)** 索引標籤。

     1. 從 **ClusterControlPlaneSecurityGroup** 下拉式清單中選取時，請使用 **Additional Security Group** (其他安全群組) 值作為參考。
   +  **NodeGroupName**：輸入節點群組的名稱。此名稱稍後可用於識別為您節點建立的 Auto Scaling 節點群組。
   +  **NodeAutoScalingGroupMinSize**：輸入節點 Auto Scaling 群組可以縮減的最低節點數。
   +  **NodeAutoScalingGroupDesiredCapacity**：堆疊建立時，輸入欲擴展的所需節點數量。
   +  **NodeAutoScalingGroupMaxSize**：輸入節點 Auto Scaling 群組可以擴增的最大節點數。
   +  **NodeInstanceType**：選擇節點的執行個體類型。如果您的叢集在 AWS 雲端上執行，如需詳細資訊，請參閱 [選擇最佳的 Amazon EC2 節點執行個體類型](choosing-instance-type.md)。若您的叢集正於 Outpost 上執行，則您僅可選取 Outpost 上可用的執行個體類型。
   +  **NodeImageIdSSMParam**：為變數 Kubernetes 版本預先填入了最近 Amazon EKS 最佳化 AMI 的 Amazon EC2 Systems Manager 參數。若要使用 Amazon EKS 支援不同的 Kubernetes 次要版本，請將 *1.XX* 取代為不同的[支援的版本](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)。建議指定與叢集相同的 Kubernetes 版本。

     若要使用 Amazon EKS 最佳化加速 AMI，請將 *NodeImageIdSSMParam* 值更新為所需的 SSM 參數。在此處了解如何從 SSM 擷取 EKS AMI IDs[https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html](https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html)。
**注意**  
Amazon EKS 節點 AMI 以 Amazon Linux 為基礎。您可以透過選擇所需版本的標籤，在 [Amazon Linux 安全中心](https://alas.aws.amazon.com/)追蹤 Amazon Linux 的安全或隱私權事件。您也可以訂閱適用的 RSS 摘要。安全與隱私權事件包含問題的概觀、哪些套件受到影響，以及如何更新您的執行個體以修正問題。
   +  **NodeImageId**：（選用） 如果您使用自己的自訂 AMI （而非 Amazon EKS 最佳化 AMI)，請輸入您 AWS 區域的節點 AMI ID。如果您在此指定值，則會覆寫 **NodeImageIdSSMParam** 欄位中的任何值。
   +  **NodeVolumeSize**：為您的節點指定根磁碟區大小 (以 GiB 為單位)。
   +  **NodeVolumeType**：為您的節點指定根磁碟區類型。
   +  **KeyName**：輸入 Amazon EC2 SSH 金鑰對的名稱，您可以在節點啟動後使用該金鑰對來透過 SSH 連接至節點。如果您還沒有 Amazon EC2 金鑰對，可以在 AWS 管理主控台中建立一個。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。
**注意**  
如果您未在此處提供金鑰對， AWS CloudFormation 堆疊建立會失敗。
   +  **DisableIMDSv1**：預設情況下，每個節點都支援執行個體中繼資料服務版本 1 (IMDSv1) 和 IMDSv2。您可以停用 IMDSv1。若要防止節點群組中的未來節點和 Pod 使用 IMDSv1，請將 **DisableIMDSv1** 設定為 **true**。如需 IMDS 的詳細資訊，請參閱[設定執行個體中繼資料服務](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。如需在節點上限制存取的詳細資訊，請參閱[限制存取指派給工作節點的執行個體設定檔](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node)。
   +  **VpcId**：輸入您建立的 [VPC](creating-a-vpc.md) ID。在選擇子網路之前，請先檢閱 [VPC 要求和考量事項](eks-outposts-vpc-subnet-requirements.md#outposts-vpc-requirements)。
   +  **子網路**：如果叢集位於 Outpost 上，則請至少在 VPC 中選擇一個私有子網路。在選擇子網路之前，請先檢閱[子網路需求和注意事項](eks-outposts-vpc-subnet-requirements.md#outposts-subnet-requirements)。您可以看到哪些子網是私有子網，方法是從叢集的 **Networking** (聯網) 標籤打開每一個子網連結。

1. 請在 **Configure stack options** (設定堆疊選項) 頁面上選取所需的選項，然後選擇 **Next** (下一頁)。

1. 選取**我確認 AWS CloudFormation 可能會建立 IAM 資源**的左側核取方塊，然後選擇**建立堆疊**。

1. 當當堆疊已完成建立時，從主控台將其選取，然後選擇 **Outputs (輸出)**。

1. 為已建立的節點群組記錄 **NodeInstanceRole**。當您設定 Amazon EKS 節點時會需要此值。

 **步驟 2：讓節點加入叢集** 

1. 檢查以瞭解是否有 `aws-auth` `ConfigMap`。

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. 如果您看到 `aws-auth` `ConfigMap`，請視需要更新之。

   1. 開啟 `ConfigMap` 進行編輯。

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. 視需要新增 `mapRoles` 個項目。將 `rolearn` 值設定為您在先前程序中記錄的 **NodeInstanceRole** 值。

      ```
      [...]
      data:
        mapRoles: |
          - rolearn: <ARN of instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
      [...]
      ```

   1. 儲存檔案並結束您的文字編輯器。

1. 如果您收到一個錯誤，說明 "`Error from server (NotFound): configmaps "aws-auth" not found`，那麼請套用股票 `ConfigMap`。

   1. 下載組態對應。

      ```
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
      ```

   1. 在 `aws-auth-cm.yaml` 檔案中，將 `rolearn` 設定為您在先前程序中紀錄的 **NodeInstanceRole** 值。您可以使用文字編輯器來完成此操作，或者透過取代 *my-node-instance-role* 並執行下列命令：

      ```
      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
      ```

   1. 套用組態。此命令可能需要幾分鐘的時間來完成。

      ```
      kubectl apply -f aws-auth-cm.yaml
      ```

1. 查看節點的狀態，並等待他們到達 `Ready` 狀態。

   ```
   kubectl get nodes --watch
   ```

   輸入 `Ctrl`\$1`C` 傳回 Shell 提示。
**注意**  
如果您收到任何授權或資源類型錯誤，請參閱故障診斷主題中的[未經授權或存取遭拒 (`kubectl`)](troubleshooting.md#unauthorized)。

   如果節點無法加入叢集，請參閱[節點無法加入叢集](troubleshooting.md#worker-node-fail)[針對 Amazon EKS 叢集和節點問題進行故障診斷](troubleshooting.md)[無法將節點加入叢集](eks-outposts-troubleshooting.md#outposts-troubleshooting-unable-to-join-nodes-to-a-cluster)，以及針對 [AWS Outposts 上的本機 Amazon EKS 叢集進行故障診斷](eks-outposts-troubleshooting.md)。

1. 安裝 Amazon EBS CSI 驅動程式。如需詳細資訊，請參閱 GitHub 上的 [Installation](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md) (安裝)。在 **Set up driver permission** (設定驅動程式權限) 區段中，請務必依照 **Using IAM instance profile** (使用 IAM 執行個體設定檔) 選項指示操作。您必須使用 `gp2` 儲存類別。不支援 `gp3` 儲存類別。

   若要在叢集上建立 `gp2` 儲存類別，請完成以下步驟。

   1. 執行下列命令以建立 `gp2-storage-class.yaml` 檔案。

      ```
      cat >gp2-storage-class.yaml <<EOF
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        annotations:
          storageclass.kubernetes.io/is-default-class: "true"
        name: ebs-sc
      provisioner: ebs.csi.aws.com
      volumeBindingMode: WaitForFirstConsumer
      parameters:
        type: gp2
        encrypted: "true"
      allowVolumeExpansion: true
      EOF
      ```

   1. 將清單檔案套用至叢集。

      ```
      kubectl apply -f gp2-storage-class.yaml
      ```

1. (僅限 GPU 節點) 若您選擇了 GPU 執行個體類型和 Amazon EKS 最佳化加速 AMI，則必須套用 [Kubernetes 專用 NVIDIA 裝置外掛程式](https://github.com/NVIDIA/k8s-device-plugin)作為叢集上的 DaemonSet。請先以您想要的 [NVIDIA/k8s-device-plugin](https://github.com/NVIDIA/k8s-device-plugin/releases) 版本來取代 *vX.X.X*，然後再執行下列命令。

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
   ```

 **步驟 3：其他動作** 

1. (選用) 部署[範例應用程式](sample-deployment.md)以測試您的叢集和 Linux 節點。

1. 若您的叢集部署在 Outpost 上，請跳過此步驟。如果您的叢集部署在 AWS 雲端上，則下列資訊為選用。如果 **AmazonEKS\$1CNI\$1Policy** 受管 IAM 政策已連接至您的 [Amazon EKS 節點 IAM 角色](create-node-role.md)，建議您改為將其指派給您與 Kubernetes `aws-node` 服務帳戶相關聯的 IAM 角色。如需詳細資訊，請參閱[設定 Amazon VPC CNI 外掛程式以使用 IRSA](cni-iam-role.md)。