

 **協助改進此頁面** 

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

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

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

# 在使用 EC2 執行個體存放區設定的 AWS Outposts 上部署 Amazon EKS 本機叢集
<a name="eks-outposts-instance-store-local-cluster-create"></a>

本主題提供在以 EC2 執行個體存放區設定的 AWS Outpost 上部署本機 Amazon EKS 叢集的說明。

**注意**  
如果您的 Outpost 是使用 Amazon EBS 而非 EC2 執行個體存放區設定，則本主題中所述的架構不適用於您的 Outpost。使用 EBS 設定的 Outpost 將繼續使用現有的本機叢集實作。如需詳細資訊，請參閱[在 AWS Outposts 上部署 Amazon EKS 叢集](eks-outposts-local-cluster-create.md)。  
如果您有興趣使用更新的本機叢集架構，在 EBS 支援的 Outpost 上建立本機叢集，請聯絡您的 AWS 客戶團隊。

**重要**  
本機叢集僅支援 Outpost 機架。單一本機叢集可以在包含單一邏輯 Outpost 的多個實體 Outpost 機架上執行。單一本機叢集無法跨多個邏輯 Outposts 執行。
Kubernetes 控制平面會在 Outpost 上的 AWS受管服務帳戶中執行。您無法存取控制平面執行個體、在 Amazon EC2 主控台中檢視它們，或在它們上執行工作負載。
控制平面在[外部刻印拓撲](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/#external-etcd-topology)中的 6 個 EC2 執行個體 (3 `etcd` \+ 3 個 API 伺服器） 上執行。如需容量需求，請參閱 [在使用 EC2 執行個體存放區設定的 AWS Outpost 上，選取 Amazon EKS 本機叢集的執行個體類型和配置](eks-outposts-instance-store-capacity-considerations.md)。
[適用於 Kubernetes、kube-proxy 和 CoreDNS 的 Amazon VPC CNI 外掛程式](managing-vpc-cni.md)會自動安裝在本機叢集上。 [在 Amazon EKS 叢集中管理 `kube-proxy`](managing-kube-proxy.md) [CoreDNS](managing-coredns.md) 如需已驗證附加元件的完整清單，請參閱 [使用 EC2 執行個體存放區設定的 AWS Outposts 上本機叢集的 Amazon EKS 附加元件](eks-outposts-instance-store-local-cluster-addons.md)。
Amazon EKS 會定期備份 `etcd`。如果 `etcd`失去規定人數，Amazon EKS 會從最新的快照復原叢集狀態。

 **先決條件** 
+ 使用 EC2 執行個體存放區設定的現有 Outpost 機架，具有足夠用於控制平面執行個體的虛擬化容量。請參閱 [在使用 EC2 執行個體存放區設定的 AWS Outpost 上，選取 Amazon EKS 本機叢集的執行個體類型和配置](eks-outposts-instance-store-capacity-considerations.md)。
+ 符合 中所述需求的 VPC 和子網路[在使用 EC2 執行個體存放區設定的 AWS Outpost 上，為 Amazon EKS 本機叢集建立 VPC 和子網路](eks-outposts-instance-store-vpc-subnet-requirements.md)。
+ `kubectl` 命令列工具安裝在您的電腦或 AWS CloudShell 上。版本可以與叢集的 Kubernetes 版本相同，也可以比叢集的 Kubernetes 版本更早或更晚一個次要版本。若要安裝或升級 `kubectl`，請參閱 [設定 `kubectl` 和 `eksctl`](install-kubectl.md)。
+ 在您的裝置或 AWS CloudShell 上安裝和設定 AWS CLI 版本 `2.35.3`或更新版本。若要檢查您目前的版本，請使用 `aws --version`。若要安裝或升級，請參閱[安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。
+ IAM 主體 （使用者或角色），具有建立和描述 Amazon EKS 叢集的許可。如需詳細資訊，請參閱[在 Outpost 上建立本機 Kubernetes 叢集](security-iam-id-based-policy-examples.md#policy-create-local-cluster)及[所有叢集的清單或描述](security-iam-id-based-policy-examples.md#policy-example2)。
+ 已連接下列 AWS 受管政策的叢集 IAM 角色：[AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) 和 [AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html)。角色信任政策必須允許`eks.amazonaws.com`服務主體擔任該角色。

**注意**  
當您建立本機叢集時，建立叢集的 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)會以具有 `system:masters` 許可的管理員身分永久新增至 Kubernetes RBAC 授權表。請務必永遠不要刪除此委託人。

## 建立本機叢集
<a name="eks-outposts-instance-store-local-cluster-create-cluster"></a>

您可以使用 AWS 管理主控台、 AWS CLI、Amazon EKS API 或 AWS CloudFormation 建立本機叢集。

當您建立本機叢集時，請注意下列事項：
+ 您必須傳遞 Outpost 所在可用區域中的子網路。如果您在多個可用區域中傳遞子網路，請求會失敗。
+ 您必須將 `endpointPrivateAccess` 設為 `true`。您也可以選擇啟用 `endpointPublicAccess`。
+ 您必須傳遞 的值`outpostConfig`，包括 `outpostArns`、 `controlPlaneInstanceType`和 `etcdInstanceType`。或者，您可以指定置放組態。請參閱 [在使用 EC2 執行個體存放區設定的 AWS Outpost 上，選取 Amazon EKS 本機叢集的執行個體類型和配置](eks-outposts-instance-store-capacity-considerations.md)。

### AWS CLI
<a name="awscli_is_create_cluster_outpost"></a>

```
aws eks create-cluster \
  --name my-cluster \
  --role-arn arn:aws: iam::111122223333:role/myEKSClusterRole \
  --kubernetes-version 1.36 \
  --resources-vpc-config subnetIds=subnet-ExampleID1,endpointPrivateAccess=true,endpointPublicAccess=true \
  --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}' \
  --access-config authenticationMode=API_AND_CONFIG_MAP,bootstrapClusterCreatorAdminPermissions=true \
  --outpost-config outpostArns=arn:aws: outposts:region-code:111122223333:outpost/op-uniqueid,controlPlaneInstanceType=m5.large,controlPlanePlacement={spreadLevel=host},etcdInstanceType=m5.large,etcdPlacement={spreadLevel=host}
```

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

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

1. 選擇 **Create Cluster** (建立叢集)。

1. 針對 **Kubernetes 控制平面位置**，選擇 ** AWS Outposts**。

1. 設定下列項目：
   +  **名稱** — 叢集的名稱。
   +  **Kubernetes 版本** — 要使用的版本。
   +  **叢集服務角色** — 具有 [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) 和 [AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) 的 IAM 角色。
   +  **Outpost ID** — 要部署的邏輯 Outpost。
   +  **控制平面執行個體類型** — Kubernetes API 伺服器、排程器和控制器管理員的執行個體類型。
   +  **etcd 執行個體類型** — 的執行個體類型`etcd`。
   +  **分散層級** — `host`或 `rack` 用於控制平面和`etcd`放置。

1. 設定聯網：VPC、子網路、安全群組。啟用私有端點存取。

1. 設定可觀測性：控制平面記錄。

1. 檢閱和建立。

### `CreateCluster` API
<a name="api_is_create_cluster_outpost"></a>

```
{
    "name": "my-cluster",
    "roleArn": "arn:aws: iam::111122223333:role/myEKSClusterRole",
    "version": "1.36",
    "resourcesVpcConfig": {
        "subnetIds": ["subnet-ExampleID1"],
        "endpointPublicAccess": true,
        "endpointPrivateAccess": true
    },
    "logging": {
        "clusterLogging": [{
            "types": ["api", "audit", "authenticator", "controllerManager", "scheduler"],
            "enabled": true
        }]
    },
    "accessConfig": {
        "authenticationMode": "API_AND_CONFIG_MAP",
        "bootstrapClusterCreatorAdminPermissions": true
    },
    "outpostConfig": {
        "outpostArns": ["arn:aws: outposts:region-code:111122223333:outpost/op-uniqueid"],
        "controlPlaneInstanceType": "m5.large",
        "controlPlanePlacement": {
            "spreadLevel": "host"
        },
        "etcdInstanceType": "m5.large",
        "etcdPlacement": {
            "spreadLevel": "host"
        }
    }
}
```

當您在以 EC2 執行個體存放區設定的 Outposts 上建立本機叢集時，需要 `controlPlaneInstanceType`和 `etcdInstanceType` 參數。`controlPlanePlacement` 和 `etcdPlacement` 是選用參數。如果您未指定，則不會套用置放分散策略。

**注意**  
 `outpostConfig` 是僅限建立的屬性。若要變更控制平面執行個體類型、`etcd`執行個體類型、置放或 Outpost，您必須建立新的叢集。

## 連線至您的叢集
<a name="eks-outposts-instance-store-local-cluster-create-connect"></a>

設定 `kubectl` 以與您的叢集通訊：

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

**注意**  
如果您使用低於 的 AWS CLI 版本建立叢集`2.35.3`，則必須更新 `kubeconfig`以在 args `exec` 中指定 `--cluster-name`（而不是 `--cluster-id`)

叢集的 Kubernetes API 伺服器端點託管於 Amazon Route 53。端點會解析為 Amazon EKS 在子網路中建立的跨帳戶彈性網路介面 (ENIs) 的私有 IP 地址。這些 ENIs具有固定的私有 IP 地址，在整個叢集生命週期中不會變更。

當您建立叢集時，Amazon EKS 會在您指定的子網路中建立 3 個彈性網路介面。這些網路介面啟用您的叢集和 VPC 之間的通訊。每個網路界面在其描述`Amazon EKS {{cluster-name}} `中都有文字。

## 部署工作者節點
<a name="eks-outposts-instance-store-local-cluster-create-nodes"></a>

使用[自我管理節點群組](launch-workers.md)，將工作者節點部署到您的本機叢集。

1. 部署工作者 node AWS CloudFormation 範本，或在 Outpost 上建立個別 EC2 執行個體。

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

1. 授予節點執行個體角色對叢集的存取權。為節點的 IAM 角色建立[存取項目](access-entries.md)：

   ```
   aws eks create-access-entry \
     --cluster-name my-cluster \
     --principal-arn arn:aws: iam::111122223333:role/myNodeRole \
     --type EC2_LINUX
   ```

   或者，如果您使用 `aws-auth` ConfigMap 進行身分驗證，請將節點執行個體角色新增至 ConfigMap。請參閱 [授予 IAM 使用者和角色對 Kubernetes APIs存取權](grant-k8s-access.md)。

1. 確認您的節點處於 `Ready` 狀態：

   ```
   kubectl get nodes
   ```

## 內部資源
<a name="eks-outposts-instance-store-local-cluster-create-internal-resources"></a>

當您建立本機叢集時，Amazon EKS 會自動在`kube-system`命名空間中安裝下列附加元件的自我管理版本：`coredns`、 `kube-proxy`和 `aws-node`(VPC CNI)。您可以選擇透過 Amazon EKS 附加元件 API 安裝這些附加元件的受管版本。如需詳細資訊，請參閱[使用 EC2 執行個體存放區設定的 AWS Outposts 上本機叢集的 Amazon EKS 附加元件](eks-outposts-instance-store-local-cluster-addons.md)。

Amazon EKS 也會在您的子網路中建立跨帳戶彈性網路介面 (ENIs)，以進行叢集-VPC 通訊。請勿刪除這些網路介面。如果刪除跨帳戶 ENI 或其 IP 地址變更，則每個節點和每個使用靜態 IP 型存取的管理員都必須手動更新。