

 **協助改進此頁面** 

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

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

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

# 使用 Amazon EKS 自動模式建立叢集
<a name="create-auto"></a>

本章節闡釋如何使用各種工具和介面建立已啟用自動模式的 Amazon EKS 叢集。自動模式透過自動設定與管理叢集的運算、聯網及儲存基礎結構，簡化了叢集建立過程。您將了解如何使用 AWS CLI、AWS 管理主控台 或 eksctl 命令列工具來建立自動模式叢集。

**注意**  
EKS 自動模式需要 Kubernetes 版本 1.29 或以上。

請根據您的需求選擇合適的工具：AWS 管理主控台 提供視覺化介面，非常適合了解 EKS 自動模式功能和建立單獨叢集。AWS CLI 最適合用於指令碼編寫和自動化任務，特別是將叢集建立整合到現有工作流程或 CI/CD 管道時。eksctl CLI 提供了 Kubernetes 原生的體驗，推薦給熟悉 Kubernetes 工具並希望使用合理的預設值來簡化命令列操作的使用者。

開始之前，請確定您已安裝並設定必要先決條件，包括建立 EKS 叢集的適當 IAM 許可。要了解如何安裝 CLI 工具，例如 `kubectl`、`aws` 和 `eksctl`，請參閱 [設定以使用 Amazon EKS](setting-up.md)。

您可以使用 AWS CLI、AWS 管理主控台 或 eksctl CLI 來建立具有 Amazon EKS 自動模式的叢集。

**Topics**
+ [使用 eksctl CLI 建立 EKS 自動模式叢集](automode-get-started-eksctl.md)
+ [使用 CLI AWS 建立 EKS 自動模式叢集](automode-get-started-cli.md)
+ [使用 AWS 管理主控台 建立 EKS 自動模式叢集](automode-get-started-console.md)

# 使用 eksctl CLI 建立 EKS 自動模式叢集
<a name="automode-get-started-eksctl"></a>

本主題展示如何使用 eksctl 命令列介面 (CLI) 建立 Amazon EKS 自動模式叢集。您可以透過執行單一 CLI 命令或套用 YAML 組態檔案來建立自動模式叢集。兩種方法提供相同的功能，其中 YAML 方法能對叢集設定提供更細緻的控制。

eksctl CLI 透過處理底層 AWS 資源的建立和組態，簡化了建立和管理 EKS 自動模式叢集的程序。在繼續之前，請確保您已在本機電腦上設定了必要的 AWS 憑證和許可。本指南假設您熟悉基本的 Amazon EKS 概念，並且已安裝必要的 CLI 工具。

**注意**  
您必須安裝 `0.195.0` 或更高版本的 eksctl。如需詳細資訊，請參閱 GitHub 上的 [eksctl 版本](https://github.com/eksctl-io/eksctl/releases)。

## 使用 CLI 命令建立 EKS 自動模式叢集
<a name="_create_an_eks_auto_mode_cluster_with_a_cli_command"></a>

您必須已安裝 `aws` 和 `eksctl` 工具。您必須登入 AWS CLI，並具有管理 AWS 資源的足夠許可，包括：EC2 執行個體、EC2 聯網、EKS 叢集和 IAM 角色。如需詳細資訊，請參閱 [設定以使用 Amazon EKS](setting-up.md)。

執行下列命令，建立新的 EKS 自動模式叢集

```
eksctl create cluster --name=<cluster-name> --enable-auto-mode
```

## 使用 YAML 檔案建立 EKS 自動模式叢集
<a name="_create_an_eks_auto_mode_cluster_with_a_yaml_file"></a>

您必須已安裝 `aws` 和 `eksctl` 工具。您必須登入 AWS CLI，並具有管理 AWS 資源的足夠許可，包括：EC2 執行個體、EC2 聯網、EKS 叢集和 IAM 角色。如需詳細資訊，請參閱 [設定以使用 Amazon EKS](setting-up.md)。

檢閱以下範例 ClusterConfig 資源中的 EKS 自動模式組態選項。有關完整的 ClusterConfig 規格，請參閱 [eksctl 文件](https://eksctl.io/usage/creating-and-managing-clusters/)。

 AWS 建議啟用 EKS 自動模式。如果這是您第一次建立 EKS 自動模式叢集，請不要指定 `nodeRoleARN`，以便為 EKS 自動模式建立節點 IAM 角色。如果您的 AWS 帳戶中已有節點 IAM 角色，AWS 建議重複使用。

 AWS 建議不要為 `nodePools` 指定任何值。EKS 自動模式會建立預設節點集區。您可使用 Kubernetes API 來建立其他節點集區。

```
# cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: <cluster-name>
  region: <aws-region>

iam:
  # ARN of the Cluster IAM Role
  # optional, eksctl creates a new role if not supplied
  # suggested to use one Cluster IAM Role per account
  serviceRoleARN: <arn-cluster-iam-role>

autoModeConfig:
  # defaults to false
  enabled: boolean
  # optional, defaults to [general-purpose, system].
  # suggested to leave unspecified
  # To disable creation of nodePools, set it to the empty array ([]).
  nodePools: []string
  # optional, eksctl creates a new role if this is not supplied
  # and nodePools are present.
  nodeRoleARN: string
```

將 `ClusterConfig` 檔案儲存為 `cluster.yaml`，並使用下列命令來建立叢集：

```
eksctl create cluster -f cluster.yaml
```

# 使用 CLI AWS 建立 EKS 自動模式叢集
<a name="automode-get-started-cli"></a>

EKS 自動模式叢集可自動執行運算、儲存和聯網的常規叢集管理任務。例如，EKS 自動模式叢集會自動檢測何時需要額外節點，並佈建新的 EC2 執行個體以滿足工作負載需求。

本主題會引導您使用 CLI 建立新的 EKS AWS 自動模式叢集，並選擇性地部署範例工作負載。

## 先決條件
<a name="_prerequisites"></a>
+ 在您裝置上安裝和設定的最新版本 AWS 命令列界面 (AWS CLI)。若要檢查您目前的版本，請使用 `aws --version`。若要安裝最新版本，請參閱《 AWS 命令列界面使用者指南》中的使用 aws 設定[安裝](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 和[快速組態](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-configure-quickstart-config)。
  + 使用足夠的 IAM 許可登入 CLI，以建立 AWS 資源，包括 IAM 政策、IAM 角色和 EKS 叢集。
+ 裝置上安裝的 kubectl 命令列工具。 AWS 建議您使用與 EKS 叢集 Kubernetes 版本相同的 kubectl 版本。若要安裝或升級 kubectl，請參閱 [設定 `kubectl` 和 `eksctl`](install-kubectl.md)。

## 指定 VPC 子網路
<a name="_specify_vpc_subnets"></a>

Amazon EKS 自動模式會將節點部署到 VPC 子網路。建立 EKS 叢集時，您必須指定將部署節點的 VPC 子網路。您可以使用 AWS 帳戶中的預設 VPC 子網路，或為關鍵工作負載建立專用 VPC。
+  AWS 建議為您的叢集建立專用 VPC。了解如何 [為您的 Amazon EKS 叢集建立 Amazon VPC](creating-a-vpc.md)。
+ EKS 主控台可協助建立新 VPC。了解如何 [使用 AWS 管理主控台 建立 EKS 自動模式叢集](automode-get-started-console.md)。
+ 或者，您可以使用 AWS 您帳戶的預設 VPC。使用下列說明來尋找子網路 ID。

### 尋找預設 VPC 的子網路 ID
<a name="auto-find-subnet"></a>

 **使用 AWS CLI：**

1. 執行以下命令以列出預設 VPC 及其子網路：

   ```
   aws ec2 describe-subnets --filters "Name=vpc-id,Values=$(aws ec2 describe-vpcs --query 'Vpcs[?IsDefault==`true`].VpcId' --output text)" --query 'Subnets[*].{ID:SubnetId,AZ:AvailabilityZone}' --output table
   ```

1. 儲存輸出並記下**子網路 ID**。

   輸出範例：

   ```
   ----------------------------------------
   |             DescribeSubnets          |
   ----------------------------------------
   |   SubnetId        |   AvailabilityZone  |
   |--------------------|---------------------|
   |   subnet-012345678 |   us-west-2a        |
   |   subnet-234567890 |   us-west-2b        |
   |   subnet-345678901 |   us-west-2c        |
   ----------------------------------------
   ```

## EKS 自動模式叢集的 IAM 角色
<a name="auto-mode-create-roles"></a>

### 叢集 IAM 角色
<a name="auto-roles-cluster-iam-role"></a>

EKS Auto Mode 需要叢集 IAM 角色才能在 AWS 帳戶中執行動作，例如佈建新的 EC2 執行個體。您必須建立此角色，才能授予 EKS 必要的許可。 AWS 建議將下列 AWS 受管政策連接至叢集 IAM 角色：
+  [AmazonEKSComputePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSComputePolicy) 
+  [AmazonEKSBlockStoragePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSBlockStoragePolicy) 
+  [AmazonEKSLoadBalancingPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSLoadBalancingPolicy) 
+  [AmazonEKSNetworkingPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSNetworkingPolicy) 
+  [AmazonEKSClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksclusterpolicy) 

### 節點 IAM 角色
<a name="auto-roles-node-iam-role"></a>

當您建立 EKS 自動模式叢集時，需要指定一個節點 IAM 角色。當 EKS 自動模式建立節點以處理待處理的工作負載時，每個新的 EC2 執行個體節點都會指派節點 IAM 角色。此角色允許節點與 EKS 通訊，但通常不會由在節點上執行的工作負載存取。

如果您想要將許可授予節點上執行的工作負載，請使用 EKS Pod 身分識別。如需詳細資訊，請參閱[了解 EKS Pod 身分識別如何授予 AWS 服務的 Pod 存取權](pod-identities.md)。

您必須建立此角色並連接下列 AWS 受管政策：
+  [AmazonEKSWorkerNodeMinimalPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEKSWorkerNodeMinimalPolicy) 
+  [AmazonEC2ContainerRegistryPullOnly](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryPullOnly) 

EKS 自動模式還需要一個服務連結角色，該角色由 AWS自動建立與設定。更多資訊請參閱 [AWSServiceRoleForAmazonEKS](using-service-linked-roles-eks.md)。

## 建立 EKS 自動模式叢集 IAM 角色
<a name="_create_an_eks_auto_mode_cluster_iam_role"></a>

### 步驟 1：建立信任政策
<a name="_step_1_create_the_trust_policy"></a>

建立信任政策，允許 Amazon EKS 服務擔任該角色。將政策儲存為 `trust-policy.json`：

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

### 步驟 2：建立 IAM 角色
<a name="_step_2_create_the_iam_role"></a>

使用信任政策建立叢集 IAM 角色：

```
aws iam create-role \
    --role-name AmazonEKSAutoClusterRole \
    --assume-role-policy-document file://trust-policy.json
```

### 步驟 3：記下角色 ARN
<a name="_step_3_note_the_role_arn"></a>

擷取並儲存新角色的 ARN，供後續步驟使用：

```
aws iam get-role --role-name AmazonEKSAutoClusterRole --query "Role.Arn" --output text
```

### 步驟 4：附加所需政策
<a name="_step_4_attach_required_policies"></a>

將下列 AWS 受管政策連接至叢集 IAM 角色，以授予必要的許可：

 **AmazonEKSClusterPolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy
```

 **AmazonEKSComputePolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws: iam::aws:policy/AmazonEKSComputePolicy
```

 **AmazonEKSBlockStoragePolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws: iam::aws:policy/AmazonEKSBlockStoragePolicy
```

 **AmazonEKSLoadBalancingPolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws: iam::aws:policy/AmazonEKSLoadBalancingPolicy
```

 **AmazonEKSNetworkingPolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoClusterRole \
    --policy-arn arn:aws: iam::aws:policy/AmazonEKSNetworkingPolicy
```

## 建立 EKS 自動模式節點 IAM 角色
<a name="_create_an_eks_auto_mode_node_iam_role"></a>

### 步驟 1：建立信任政策
<a name="_step_1_create_the_trust_policy_2"></a>

建立信任政策，允許 Amazon EKS 服務擔任該角色。將政策儲存為 `node-trust-policy.json`：

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

#### 步驟 2：建立節點 IAM 角色
<a name="_step_2_create_the_node_iam_role"></a>

使用上一步中的 **node-trust-policy.json** 檔案來定義哪些實體可擔任該角色。執行下列命令以建立節點 IAM 角色：

```
aws iam create-role \
    --role-name AmazonEKSAutoNodeRole \
    --assume-role-policy-document file://node-trust-policy.json
```

#### 步驟 3：記下角色 ARN
<a name="_step_3_note_the_role_arn_2"></a>

建立角色後，擷取並儲存節點 IAM 角色的 ARN。您在後續步驟中將需要此 ARN。使用以下命令來取得 ARN：

```
aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text
```

#### 步驟 4：附加所需政策
<a name="_step_4_attach_required_policies_2"></a>

將下列 AWS 受管政策連接至節點 IAM 角色，以提供必要的許可：

 **AmazonEKSWorkerNodeMinimalPolicy**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoNodeRole \
    --policy-arn arn:aws: iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy
```

 **AmazonEC2ContainerRegistryPullOnly**：

```
aws iam attach-role-policy \
    --role-name AmazonEKSAutoNodeRole \
    --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
```

## 建立 EKS 自動模式叢集
<a name="_create_an_eks_auto_mode_cluster"></a>

### 概觀
<a name="_overview"></a>

若要使用 CLI AWS 建立 EKS 自動模式叢集，您將需要下列參數：
+  `cluster-name`：叢集的名稱。
+  `k8s-version`：Kubernetes 版本 (如 1.31)。
+  `subnet-ids`：先前步驟中識別的子網路 ID。
+  `cluster-role-arn`：叢集 IAM 角色的 ARN。
+  `node-role-arn`：節點 IAM 角色的 ARN。

#### 預設叢集組態
<a name="_default_cluster_configurations"></a>

在建立叢集之前，檢閱這些預設值與功能：
+  `nodePools`：EKS 自動模式包含通用與系統預設節點集區。進一步了解[節點集區](create-node-pool.md)。

 **注意：**EKS 自動模式中的節點集區與 Amazon EKS 受管節點群組不同，但可以在同一叢集中共存。
+  `computeConfig.enabled`：自動化常規運算任務，例如建立與刪除 EC2 執行個體。
+  `kubernetesNetworkConfig.elasticLoadBalancing.enabled`：自動化負載平衡任務，包括建立與刪除 Elastic Load Balancer。
+  `storageConfig.blockStorage.enabled`：自動化儲存任務，如建立與刪除 Amazon EBS 磁碟區。
+  `accessConfig.authenticationMode`：需要 EKS 存取項目。深入了解 [EKS 身分驗證模式](grant-k8s-access.md)。

#### 執行命令
<a name="_run_the_command"></a>

使用下列命令建立叢集：

```
aws eks create-cluster \
  --region ${AWS_REGION} \
  --cli-input-json \
  "{
      \"name\": \"${CLUSTER_NAME}\",
      \"version\": \"${K8S_VERSION}\",
      \"roleArn\": \"${CLUSTER_ROLE_ARN}\",
      \"resourcesVpcConfig\": {
        \"subnetIds\": ${SUBNETS_JSON},
        \"endpointPublicAccess\": true,
        \"endpointPrivateAccess\": true
      },
      \"computeConfig\": {
        \"enabled\": true,
        \"nodeRoleArn\":\"${NODE_ROLE_ARN}\",
        \"nodePools\": [\"general-purpose\", \"system\"]
      },
      \"kubernetesNetworkConfig\": {
        \"elasticLoadBalancing\": {
          \"enabled\": true
        }
      },
      \"storageConfig\": {
        \"blockStorage\": {
          \"enabled\": true
        }
      },
      \"accessConfig\": {
        \"authenticationMode\": \"API\"
      }
    }"
```

### 檢查叢集狀態
<a name="_check_cluster_status"></a>

#### 步驟 1：確認叢集建立
<a name="_step_1_verify_cluster_creation"></a>

執行下列命令，以檢查您的叢集狀態。建立叢集通常需要約 15 分鐘的時間：

```
aws eks describe-cluster --name "${CLUSTER_NAME}" --output json
```

#### 步驟 2：更新 kubeconfig
<a name="_step_2_update_kubeconfig"></a>

叢集準備就緒後，請更新本機 kubeconfig 檔案，以使 `kubectl` 與叢集通訊。此組態使用 AWS CLI 進行身分驗證。

```
aws eks update-kubeconfig --name "${CLUSTER_NAME}"
```

#### 步驟 3：確認節點集區
<a name="_step_3_verify_node_pools"></a>

使用以下命令列出叢集中的節點集區：

```
kubectl get nodepools
```

## 後續步驟
<a name="_next_steps"></a>
+ 了解如何將[範例工作負載部署](automode-workload.md)至新的 EKS 自動模式叢集。

# 使用 AWS 管理主控台 建立 EKS 自動模式叢集
<a name="automode-get-started-console"></a>

在 AWS 管理主控台 中建立 EKS 自動模式叢集所需的組態比其他選項少。EKS 與 AWS IAM 和 VPC 聯網整合，協助您建立與 EKS 叢集相關聯的資源。

您在主控台中有兩個建立叢集的選項：
+ 快速組態 (使用 EKS 自動模式)
+ 自訂組態

在本主題中，您將了解如何使用快速組態選項建立 EKS 自動模式叢集。

## 使用快速組態選項建立 EKS 自動模式
<a name="_create_an_eks_auto_mode_using_the_quick_configuration_option"></a>

您必須登入 AWS 管理主控台，並具有管理 AWS 資源的足夠許可，包括：EC2 執行個體、EC2 聯網、EKS 叢集和 IAM 角色。

1. 導覽至 EKS 主控台

1. 按一下**建立叢集** 

1. 確認已選取**快速組態**選項

1. 確定以下值，或使用測試叢集的預設值。
   + 叢集**名稱** 
   + Kubernetes 版本

1. 選取叢集 IAM 角色。如果這是您第一次建立 EKS 自動模式叢集，請使用**建立建議的角色**選項。
   + 或者，您還可以為所有 EKS 自動模式叢集重複使用 AWS 帳戶中的單一叢集 IAM 角色。
   + 叢集 IAM 角色包含 EKS 自動模式管理資源 (包括 EC2 執行個體、EBS 磁碟區和 EC2 負載平衡器) 所需的許可。
   + **建立建議角色**選項會以建議值預先填入所有欄位。選取**下一步**，再選取**建立**。角色將使用建議 `AmazonEKSAutoClusterRole` 名稱。
   + 如果您最近建立了新角色，請使用**重新整理**圖示，重新載入角色選取下拉式清單。

1. 選取節點 IAM 角色。如果這是您第一次建立 EKS 自動模式叢集，請使用**建立建議的角色**選項。
   + 或者，您還可以為所有 EKS 自動模式叢集重複使用 AWS 帳戶中的單一節點 IAM 角色。
   + 節點 IAM 角色包含自動模式節點連線叢集所需的許可。節點 IAM 角色必須包含為容器擷取 ECR 映像的許可。
   + **建立建議角色**選項會以建議值預先填入所有欄位。選取**下一步**，再選取**建立**。角色將使用建議 `AmazonEKSAutoNodeRole` 名稱。
   + 如果您最近建立了新角色，請使用**重新整理**圖示，重新載入角色選取下拉式清單。

1. 選取您的 EKS 自動模式叢集的 VPC。選擇**建立 VPC**，為 EKS 建立新的 VPC，或選擇您先前為 EKS 建立的 VPC。
   + 如果您使用 VPC 主控台建立新的 VPC，AWS 建議您為每個可用區域建立至少一個 NAT 閘道。否則，您可使用所有其他預設值。
   + 如需 IPv6 叢集需求的更多資訊和詳細資訊，請參閱 [為您的 Amazon EKS 叢集建立 Amazon VPC](creating-a-vpc.md)。

1. (選用) EKS 自動模式會自動為您選擇的 VPC 填入私有子網路。您可移除不需要的子網路。
   + EKS 會遵循最佳實務，自動從 VPC 中選取私有子網路。您可選擇從 VPC 中選取其他子網路，例如公有子網路。

1. (選用) 選取**檢視快速組態預設值**，以檢閱新叢集的所有組態值。資料表指出，在建立叢集之後，某些值無法編輯。

1. 選取 **Create cluster** (建立叢集)。請注意，建立叢集可能需要 15 分鐘時間才能完成。

## 後續步驟
<a name="_next_steps"></a>
+ 了解如何[將範例工作負載部署到您的 EKS 自動模式叢集](sample-storage-workload.md) 