

 **協助改進此頁面** 

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

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

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

# 透過受管節點群組來簡化節點生命週期
<a name="managed-node-groups"></a>

Amazon EKS 受管節點群組會自動化 Amazon EKS Kubernetes 叢集節點 (Amazon EC2 執行個體) 的佈建和生命週期管理。

使用 Amazon EKS 受管節點群組時，不需要個別佈建或註冊提供運算容量的 Amazon EC2 執行個體，來執行 Kubernetes 應用程式。您可以透過單一操作來建立、自動更新或終止叢集的節點。節點更新和終止會自動耗盡節點，以確保您的應用程式保持可用。

每個受管節點均會佈建為 Amazon EKS 為您管理的 Amazon EC2 Auto Scaling 群組的一部分。包括執行個體和 Auto Scaling 群組在內的每個資源都會在您的 AWS 帳戶中執行。每個節點群組都可以跨您定義的多個可用區域執行。

受管節點群組還可以選擇性地利用節點自動修復，進而持續監控節點的運作狀態。它會自動對偵測到的問題進行回應，並盡可能取代節點。此功能有助於提高叢集的整體可用性，並且盡可能減少手動介入。如需詳細資訊，請參閱[偵測節點運作狀態問題並啟用自動節點修復](node-health.md)。

您可以使用 Amazon EKS 主控台、`eksctl`、 AWS CLI、 AWS API 或基礎設施做為程式碼工具，包括 AWS CloudFormation，將受管節點群組新增至新的或現有的叢集。以受管節點群組身分啟動的節點，會自動標記以供 Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) 自動探索。您可以使用節點群組將 Kubernetes 標籤套用至節點，並隨時加以更新。

使用 Amazon EKS 受管節點群組無需額外費用，您只需為佈建 AWS 的資源付費。其中包括 Amazon EC2 執行個體、Amazon EBS 磁碟區、Amazon EKS 叢集時數，以及任何其他 AWS 基礎設施。沒有最低費用，也沒有前期承諾。

若要開始使用新的 Amazon EKS 叢集和受管節點群組，請參閱 [開始使用 Amazon EKS – AWS 管理主控台 和 AWS CLI](getting-started-console.md)。

若要將受管理的節點群組新增至現有叢集，請參閱 [建立叢集的受管節點群組](create-managed-node-group.md)。

## 受管節點群組概念
<a name="managed-node-group-concepts"></a>
+ Amazon EKS 受管節點群組會為您建立和管理 Amazon EC2 執行個體。
+ 每個受管節點均會佈建為 Amazon EKS 為您管理的 Amazon EC2 Auto Scaling 群組的一部分。此外，包括 Amazon EC2 執行個體和 Auto Scaling 群組在內的每個資源都會在您的 AWS 帳戶中執行。
+ 受管節點群組的 Auto Scaling 群組會跨越您在建立群組時指定的每個子網路。
+ Amazon EKS 會標記受管節點群組資源，以便將其設定為使用 Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)。
**重要**  
如果您跨越多個由 Amazon EBS 磁碟區提供的可用區域執行狀態應用程式，並且使用 Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)，您應該設定多個節點群組，每個群組的範圍皆為單一可用區域。另外，您應該啟用 `--balance-similar-node-groups` 功能。
+ 部署受管節點時，您可以使用自訂啟動範本來獲得更高層級的靈活性和自訂能力。例如，可指定額外的 `kubelet` 引數並使用自訂 AMI。如需詳細資訊，請參閱[使用啟動範本自訂受管節點](launch-templates.md)。如果在第一次建立受管節點群組時未使用自訂啟動範本，會有一個自動產生的啟動範本。請勿手動修改此自動產生的範本，否則會發生錯誤。
+ Amazon EKS 會遵循受管節點群組上 CVE 和安全修補程式的共同責任模型。受管節點執行 Amazon EKS 最佳化 AMI 時，Amazon EKS 負責在報告錯誤或問題時建置 AMI 的修補版本。我們可以發佈修正程式。不過，您必須負責將這些修補的 AMI 版本部署至受管節點群組。當受管節點執行自訂 AMI 時，您必須負責在報告錯誤或問題時建置 AMI 的修補版本，然後部署 AMI。如需詳細資訊，請參閱[更新叢集的受管節點群組](update-managed-node-group.md)。
+ Amazon EKS 受管節點群組可以在公有和私有子網路中啟動。如果在 2020 年 4 月 22 日或之後啟動公有子網路中的受管節點群組，則子網路必須將 `MapPublicIpOnLaunch` 設定為「true」，執行個體才能成功加入叢集。如果公有子網路是在 2020 年 3 月 26 日或之後使用 `eksctl`或 [Amazon EKS vended AWS CloudFormation 範本](creating-a-vpc.md)建立，則此設定已設為 true。如果公有子網路是在 2020 年 3 月 26 日之前所建立，則必須手動變更設定。如需詳細資訊，請參閱[修改子網的公有 IPv4 定址屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip)。
+ 在私有子網路中部署受管節點群組時，您必須確保該群組可存取 Amazon ECR 以提取容器映像。您可以透過將 NAT 閘道連接至子網路的路由表，或新增以下 [AWS PrivateLink VPC 端點](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-vpc-create)來執行此操作：
  + Amazon ECR API 端點界面 – `com.amazonaws.region-code.ecr.api` 
  + Amazon ECR Docker 登錄檔 API 端點界面 – `com.amazonaws.region-code.ecr.dkr` 
  + Amazon S3 閘道端點 – `com.amazonaws.region-code.s3` 

  如需了解其他常用的服務和端點，請參閱 [部署網際網路存取受到限制的私有叢集](private-clusters.md)。
+ 受管節點群組無法部署在 [AWS Outposts](eks-outposts.md) 上或 [AWS Wavelength](https://docs.aws.amazon.com/wavelength/) 中。受管節點群組可建立在 [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) 上。如需詳細資訊，請參閱[使用 AWS Local Zones 啟動低延遲 EKS 叢集](local-zones.md)。
+ 您可以在單一叢集內建立多個受管節點群組。例如，您可以針對某些工作負載建立具有標準 Amazon EKS 最佳化 Amazon Linux AMI 的節點群組，而針對需要 GPU 支援的工作負載使用 GPU 變體建立另一個節點群組。
+ 如果受管節點群組遇到 [Amazon EC2 執行個體狀態檢查](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html)故障問題，Amazon EKS 會傳回錯誤代碼，以協助您診斷問題。如需詳細資訊，請參閱[受管節點群組錯誤代碼](troubleshooting.md#troubleshoot-managed-node-groups)。
+ Amazon EKS 會將 Kubernetes 標籤新增至受管節點群組執行個體。這些 Amazon EKS 提供的標籤前面會加上 `eks.amazonaws.com`。
+ 在終止或更新期間，Amazon EKS 會使用 Kubernetes API 自動耗盡節點。
+ 使用 `AZRebalance` 終止節點或減少所需的節點計數時，不會遵守 Pod 中斷預算。這些動作會嘗試在該節點上移出 Pod。但如果需要超過 15 分鐘，則無論節點上的所有 Pod 是否終止，都會終止節點。若要延長期間直到節點終止，請將 lifecycle hook 新增至 Auto Scaling 群組。如需詳細資訊，請參閱 *Amazon EC2 Auto Scaling 使用者指南*中的[新增 lifecycle hook](https://docs.aws.amazon.com/autoscaling/ec2/userguide/adding-lifecycle-hooks.html)。
+ 若要在收到 Spot 中斷通知或容量重新平衡通知後正確執行耗盡程序，必須將 `CapacityRebalance` 設定為 `true`。
+ 更新受管節點群組會遵守您為 Pod 設定的 Pod 中斷預算。如需詳細資訊，請參閱 [了解節點更新的每個階段](managed-node-update-behavior.md)。
+ 使用 Amazon EKS 受管節點群組不會產生額外成本。您只需為佈建 AWS 的資源付費。
+ 如果要為節點加密 Amazon EBS 磁碟區，則可以使用啟動範本部署節點。若要在不使用啟動範本的情況下部署具有加密 Amazon EBS 磁碟區的受管節點，請加密帳戶中建立的所有新 Amazon EBS 磁碟區。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[預設加密](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)。

## 受管節點群組容量類型
<a name="managed-node-group-capacity-types"></a>

建立受管節點群組時，您可以選擇隨需或 Spot 容量類型。Amazon EKS 部署具有 Amazon EC2 Auto Scaling 群組的受管節點群組，該群組僅包含隨需執行個體或僅包含 Amazon EC2 Spot 執行個體。您可以將具有容錯能力之應用程式的 Pod 排程到 Spot 受管節點群組，以及將具有容錯能力之應用程式的 Pod 排程到單一 Kubernetes 叢集中的隨需節點群組。依預設，受管節點群組會部署隨需 Amazon EC2 執行個體。

### On-Demand
<a name="managed-node-group-capacity-types-on-demand"></a>

透過隨需執行個體，您只需要按秒數支付運算容量開銷，無需簽訂長期合約。

預設情況下，如果未指定**容量類型**，則會使用隨需執行個體佈建受管節點群組。受管節點群組會代表您設定 Amazon EC2 Auto Scaling 群組，並套用下列設定：
+ 佈建隨需容量的配置策略設定為 `prioritized`。在滿足隨需容量時，受管節點群組會 API 中傳遞執行個體類型的順序，決定先使用哪一種執行個體類型。例如，您可以按照下列順序指定三種執行個體類型：`c5.large`、`c4.large`，以及 `c3.large`。當您的隨需執行個體啟動時，受管節點群組會從 `c5.large` 開始，然後是 `c4.large`，再來是 `c3.large`，以滿足隨需容量。如需詳細資訊，請參閱《Amazon EC2 Auto Scaling 使用者指南》**中的 [Amazon EC2 Auto Scaling 群組](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html#asg-allocation-strategies)。
+ Amazon EKS 會將下列 Kubernetes 標籤新增至指定容量類型之受管節點群組中的所有節點：`eks.amazonaws.com/capacityType: ON_DEMAND`。您可以使用此標籤，在隨需節點上排程可設定狀態或可容錯的應用程式。

### Spot
<a name="managed-node-group-capacity-types-spot"></a>

Amazon EC2 Spot 執行個體是備用的 Amazon EC2 容量，可提供隨需價格的極低折扣。EC2 需要取回容量時，就可能會以兩分鐘中斷通知的方式中斷 Amazon EC2 Spot 執行個體。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)。您可以使用 Amazon EC2 Spot 執行個體設定受管節點群組，以最佳化 Amazon EKS 叢集中執行之運算節點的成本。

若要在受管節點群組內使用 Spot 執行個體，請將容量類型設定為`spot`，以建立受管節點群組。受管節點群組代表您設定 Amazon EC2 Auto Scaling 群組，並套用下列 Spot 最佳實務：
+ 為確保您的 Spot 節點已在最佳 Spot 容量集區中佈建，配置策略會設定為下列之一：
  +  `price-capacity-optimized` (PCO)：在具有 Kubernetes 版本 `1.28` 或更新版本的叢集中建立新節點群組時，配置策略會設定為 `price-capacity-optimized`。但是，在 Amazon EKS 受管節點群組開始支援 PCO 之前，系統不會變更已使用 `capacity-optimized` 建立的節點群組的配置策略。
  +  `capacity-optimized` (CO)：在具有 Kubernetes 版本 `1.27` 或更低版本的叢集中建立新節點群組時，配置策略會設定為 `capacity-optimized`。

  若要增加可用於配置容量的 Spot 容量集區數量，請將受管節點群組設定為使用多個執行個體類型。
+ 已啟用 Amazon EC2 Spot 容量重新平衡功能，以便 Amazon EKS 可以正常地消耗和重新平衡 Spot 節點，在 Spot 節點中斷風險提高時，將應用程式中斷情況降至最低。如需詳細資訊，請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 [Amazon EC2 Auto Scaling 容量重新平衡](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html)。
  + Spot 節點收到重新平衡建議時，Amazon EKS 會自動嘗試啟動新的替代 Spot 節點。
  + 如果 Spot 兩分鐘中斷通知在取代 Spot 節點處於 `Ready` 狀態前到達，則 Amazon EKS 會開始消耗收到重新平衡建議的 Spot 節點。Amazon EKS 將竭盡全力耗盡節點。因此，無法保證 Amazon EKS 會在耗盡現有節點之前等待替代節點加入叢集。
  + 啟動取代 Spot 節點，並且在 Kubernetes 處於 `Ready` 狀態時，Amazon EKS 會包圍隔離並消耗收到重新平衡建議的 Spot 節點。包圍隔離 Spot 節點可確保服務控制器不會將任何新的請求傳送到此 Spot 節點。它也會從狀況良好、作用中的 Spot 節點清單中移除。耗盡 Spot 節點可確保正在執行的 Pod 可以正常地移出。
+ Amazon EKS 會將下列 Kubernetes 標籤新增至指定容量類型之受管節點群組中的所有節點：`eks.amazonaws.com/capacityType: SPOT`。您可以使用此標籤在 Spot 節點上排程可容錯的應用程式。
**重要**  
EC2 會在終止 [Spot 執行個體的兩分鐘前發出 Spot 中斷通知](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-instance-termination-notices.html)。不過，Spot 節點上的 Pod 可能不會收到正常關閉的完整 2 分鐘時段。當 EC2 發出通知時，Amazon EKS 開始移出 Pod 之前會有延遲。移除會依序發生以保護 Kubernetes API 伺服器，因此在多個同時 Spot 回收期間，某些 Pod 可能會收到延遲的移出通知。Pod 可能會在不接收終止訊號的情況下強制終止，特別是在具有高 Pod 密度的節點上、在並行回收期間或使用長終止寬限期時。對於 Spot 工作負載，我們建議您使用 30 秒或更短的終止寬限期來設計應用程式，避免長時間執行preStop 掛鉤，並監控 Pod 移出指標，以了解叢集中的實際寬限期。對於需要保證正常終止的工作負載，我們建議您改用隨需容量。

決定是否要部署具有隨需或 Spot 容量的節點群組時，應考慮下列條件：
+ Spot 執行個體適用於無狀態、容錯、靈活的應用程式。其中包括批次和機器學習訓練工作負載、大數據 ETL (例如 Apache Spark)、佇列處理應用程式，以及無狀態 API 端點。由於 Spot 是可能隨時間變更的備用 Amazon EC2 容量，因此建議您將 Spot 容量用於可接受中斷的工作負載。更具體地說，Spot 容量適用於容錯期間無法使用所需容量的工作負載。
+ 我們建議您將隨需模式用於不容錯的應用程式。這包括叢集管理工具 (例如監控和操作工具)、需要 `StatefulSets` 的部署，以及狀態應用程式 (例如資料庫)。
+ 為了在使用 Spot 執行個體時最大化應用程式的可用性，建議您將 Spot 受管節點群組設定為使用多個執行個體類型。建議您在使用多個執行個體類型時，套用下列規則：
  + 在受管節點群組中，如果您使用 [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)，則建議使用具有相同數量 vCPU 和記憶體資源的彈性執行個體類型集。這是為了確保叢集中的節點如預期般擴展。例如，如果您需要四個 vCPU 和八個 GiB 記憶體，請使用 `c3.xlarge`、`c4.xlarge`、`c5.xlarge`、`c5d.xlarge`、`c5a.xlarge`、`c5n.xlarge` 或其他類似的執行個體類型。
  + 若要增強應用程式可用性，建議部署多個 Spot 受管節點群組。為此，每個群組應該使用具有相同 vCPU 和記憶體資源的彈性執行個體類型集。例如，如果您需要 4 個 vCPU 和 8 個 GiB 記憶體，建議您使用 `c3.xlarge`、`c4.xlarge`、`c5.xlarge`、`c5d.xlarge`、`c5a.xlarge`、`c5n.xlarge` 或其他類似的執行個體類型建立一個受管節點群組，以及使用 `m3.xlarge`、`m4.xlarge`、`m5.xlarge`、`m5d.xlarge`、`m5a.xlarge`、`m5n.xlarge` 或其他類似的執行個體類型建立另一個受管節點。
  + 透過使用自訂啟動範本的 Spot 容量類型部署節點群組時，請使用 API 傳遞多個執行個體類型。請勿透過啟動範本傳遞單一執行個體類型。如需使用啟動範本部署節點群組的詳細資訊，請參閱 [使用啟動範本自訂受管節點](launch-templates.md)。

# 建立叢集的受管節點群組
<a name="create-managed-node-group"></a>

本主題會描述如何啟動已向 Amazon EKS 叢集註冊的節點的 Amazon EKS 受管節點群組。節點加入叢集後，您就可以將 Kubernetes 應用程式部署至其中。

如果這是您第一次啟動 Amazon EKS 受管節點群組，建議您改為按照其中一個 [開始使用 Amazon EKS](getting-started.md) 指南的步驟進行。這些指南提供建立具有節點的 Amazon EKS 叢集的演練。

**重要**  
Amazon EKS 節點是標準的 Amazon EC2 執行個體。我們會根據正常 Amazon EC2 價格向您收費。如需詳細資訊，請參閱 [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)。
您無法在已啟用 AWS Outposts 或 Wavelength AWS 的 AWS 區域中建立受管節點。您可改為建立自我管理的節點。如需詳細資訊，請參閱[建立自我管理的 Amazon Linux 節點](launch-workers.md)、[建立自我管理的 Microsoft Windows 節點](launch-windows-workers.md)及[建立自我管理的 Bottlerocket 節點](launch-node-bottlerocket.md)。您也可以在 Outpost 上建立自我管理的 Amazon Linux 節點群組。如需詳細資訊，請參閱[在 AWS Outpost 上建立 Amazon Linux 節點](eks-outposts-self-managed-nodes.md)。
如果您沒有為 Amazon EKS 最佳化 Linux 或 Bottlerocket 隨附的 `bootstrap.sh` 檔案[指定 AMI ID](launch-templates.md#launch-template-custom-ami)，則受管節點群組會對 `maxPods` 的值強制執行數量上限。對於少於 30 個 vCPU 的執行個體，數量上限為 `110`。對於具有 30 個以上 vCPU 的執行個體，數量上限會跳至 `250`。此強制執行會覆寫其他`maxPods`組態，包括 `maxPodsExpression`。如需如何`maxPods`確定以及如何自訂它的詳細資訊，請參閱 [maxPods的判斷方式](choosing-instance-type.md#max-pods-precedence)。
+ 現有 Amazon EKS 叢集。若要部署叢集，請參閱 [建立 Amazon EKS 叢集](create-cluster.md)。
+ 供節點使用的現有 IAM 角色。若要建立服務角色，請參閱[Amazon EKS 節點 IAM 角色](create-node-role.md)。如果此角色沒有任何 VPC CNI 的政策，則 VPC CNI Pod 需要以下個別角色。
+ (選用，但建議) Kubernetes 專用 Amazon VPC CNI 外掛程式的附加元件設定有自己的 IAM 角色，該角色已連接必要的 IAM 政策。如需詳細資訊，請參閱[設定 Amazon VPC CNI 外掛程式以使用 IRSA](cni-iam-role.md)。
+ 熟悉[選擇最佳 Amazon EC2 節點執行個體類型](choosing-instance-type.md)中所列的考量事項。取決於您選擇的執行個體類型，您的叢集和 VPC 可能還有其他先決條件。
+ 若要新增 Windows 受管節點群組，您必須先啟用叢集的 Windows 支援。如需詳細資訊，請參閱[在 EKS 叢集上部署 Windows 節點](windows-support.md)。

您可以透過以下任一項來建立受管節點群組：
+  [`eksctl`](#eksctl_create_managed_nodegroup) 
+  [AWS 管理主控台](#console_create_managed_nodegroup) 

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

 **使用 eksctl 建立受管節點群組** 

此程序需要 `eksctl` 版本 `0.215.0` 或更新版本。您可使用以下命令檢查您的版本：

```
eksctl version
```

如需有關安裝或更新 `eksctl` 的指示，請參閱 `eksctl` 文件中的 [Installation](https://eksctl.io/installation) 一節。

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

1. 使用或不使用自訂啟動範本來建立受管節點群組。手動指定啟動範本可讓您更靈活地自訂節點群組。例如，此方式可以允許部署自訂 AMI，或對 Amazon EKS 最佳化 AMI 中的 `boostrap.sh` 指令碼提供引數。如需每個可用選項和預設值的完整清單，請輸入以下命令。

   ```
   eksctl create nodegroup --help
   ```

   在以下命令中，將 *my-cluster* 取代為您的叢集名稱，並將 *my-mng* 取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭，但剩餘字元也可以包含連字符和底線。
**重要**  
如果在第一次建立受管的節點群組時未使用自訂啟動範本，請勿在之後針對節點群組使用自訂啟動範本。如果沒有指定自訂啟動範本，系統會自動產生啟動範本 (不建議手動修改該範本)。手動修改此自動產生的啟動範本可能會導致錯誤。

 **沒有啟動範本** 

 `eksctl` 會在您的帳戶中建立預設 Amazon EC2 啟動範本，並使用根據您指定之選項建立的啟動範本來部署節點群組。指定 `--node-type` 的值之前，請參閱 [選擇最佳的 Amazon EC2 節點執行個體類型](choosing-instance-type.md)。

使用允許的關鍵字取代 *ami-family*。如需詳細資訊，請參閱 `eksctl` 文件中的 [Setting the node AMI Family](https://eksctl.io/usage/custom-ami-support/#setting-the-node-ami-family) (設定節點 AMI 系列)。使用 Amazon EC2 金鑰對或公有金鑰的名稱取代 *my-key*。此金鑰會在節點啟動後用於將 SSH 套用至節點。

**注意**  
對於 Windows，此命令不會啟用 SSH。而是將 Amazon EC2 金鑰對與執行個體建立關聯，讓您可以 RDP 至該執行個體中。

如果您還沒有 Amazon EC2 金鑰對，可以在 AWS 管理主控台中建立一個。如需 Linux 資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Amazon EC2 使用者指南](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。如需 Windows 資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Amazon EC2 金鑰對和 Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html)。

如果下列條件為真，我們建議封鎖 Pod 對 IMDS 的存取：
+ 您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶，以便 Pod 僅具有所需的最低許可。
+ 叢集中沒有任何 Pod 因其他原因需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS)，例如擷取目前 AWS 區域。

如需詳細資訊，請參閱[‬限制存取指派給工作節點的執行個體設定檔‭](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node)。

如果要封鎖 Pod 對 IMDS 的存取，請將 `--disable-pod-imds` 選項新增至下列命令。

```
eksctl create nodegroup \
  --cluster my-cluster \
  --region region-code \
  --name my-mng \
  --node-ami-family ami-family \
  --node-type m5.large \
  --nodes 3 \
  --nodes-min 2 \
  --nodes-max 4 \
  --ssh-access \
  --ssh-public-key my-key
```

您的執行個體可以選擇性地為 Pod 指派更多的 IP 位址、將 IP 位址指派給不同於執行個體之 CIDR 區塊的 Pod，以及在沒有網際網路存取的情況下部署到叢集。如需詳細資訊，請參閱 [將更多 IP 位址指派給具有字首的 Amazon EKS 節點](cni-increase-ip-addresses.md)、[使用自訂聯網在替代子網路中部署 Pod](cni-custom-network.md) 和 [部署網際網路存取受到限制的私有叢集](private-clusters.md) 以取得要新增至之前命令的其他選項。

受管節點群組會根據執行個體類型，計算並套用可在節點群組的每個節點上執行的 Pod 數量上限的單一數值。如果建立建具有不同執行個體類型的節點群組，則在所有執行個體類型中計算的最小值，會應用為可以在節點群組中的每種執行個體類型上執行的 Pod 數量上限。受管節點群組使用 中參考的指令碼來計算數值。

 **使用啟動範本** 

啟動範本必須已經存在，且必須符合[啟動範本組態基礎知識](launch-templates.md#launch-template-basics)中指定的要求。如果下列條件為真，我們建議封鎖 Pod 對 IMDS 的存取：
+ 您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶，以便 Pod 僅具有所需的最低許可。
+ 叢集中沒有任何 Pod 因其他原因需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS)，例如擷取目前 AWS 區域。

如需詳細資訊，請參閱[‬限制存取指派給工作節點的執行個體設定檔‭](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node)。

如果您要封鎖 Pod 對 IMDS 的存取，則請在啟動範本中指定必要的設定。

1. 將以下內容複製到您的裝置。取代範例值，然後執行修改後的命令來建立 `eks-nodegroup.yaml` 檔案。在不使用啟動範本的情況下部署時指定的數個設定會移至啟動範本。如果您未指定 `version`，即使用範本的預設版本。

   ```
   cat >eks-nodegroup.yaml <<EOF
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   metadata:
     name: my-cluster
     region: region-code
   managedNodeGroups:
   - name: my-mng
     launchTemplate:
       id: lt-id
       version: "1"
   EOF
   ```

   如需 `eksctl` 組態檔案設定的完整清單，請參閱 `eksctl` 文件中的[組態檔案結構描述](https://eksctl.io/usage/schema/)。您的執行個體可以選擇性地為 Pod 指派更多的 IP 位址、將 IP 位址指派給不同於執行個體之 CIDR 區塊的 Pod，以及在沒有傳出網際網路存取的情況下部署到叢集。如需詳細資訊，請參閱適用於新增至組態檔案之其他選項的 [將更多 IP 位址指派給具有字首的 Amazon EKS 節點](cni-increase-ip-addresses.md)、[使用自訂聯網在替代子網路中部署 Pod](cni-custom-network.md) 和 [部署網際網路存取受到限制的私有叢集](private-clusters.md)。

   如果未在啟動範本中指定 AMI ID，受管節點群組會根據執行個體類型，計算並套用可在節點群組的每個節點上執行的 Pod 數量上限的單一數值。如果建立建具有不同執行個體類型的節點群組，則在所有執行個體類型中計算的最小值，會應用為可以在節點群組中的每種執行個體類型上執行的 Pod 數量上限。受管節點群組使用 中參考的指令碼來計算數值。

   如果在啟動範本中指定了 AMI ID，而且正使用[自訂聯網](cni-custom-network.md)或想[增加指派給執行個體的 IP 位址數量](cni-increase-ip-addresses.md)，請指定可在節點群組的每個節點上執行的 Pod 數量上限。如需詳細資訊，請參閱。

1. 使用下列命令部署節點群組。

   ```
   eksctl create nodegroup --config-file eks-nodegroup.yaml
   ```

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

 **使用 AWS 管理主控台 建立受管節點群組** 

1. 等待您的叢集狀態顯示為 `ACTIVE`。您無法針對尚未進入 `ACTIVE` 狀態的叢集建立受管節點群組。

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

1. 選擇要在其中建立受管節點群組的叢集名稱。

1. 選取 **Compute** (運算) 標籤。

1. 選擇 **Add node group** (新增節點群組)。

1. 在 **Configure node group (配置節點群組)** 頁面上，相應地填寫參數，然後選擇 **Next (下一步)**。
   +  **Name** (名稱) – 輸入受管節點群組的唯一名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭，但剩餘字元也可以包含連字符和底線。
   +  **Node IAM role** (節點 IAM 角色)：選擇要與節點群組搭配使用的節點執行個體角色。如需詳細資訊，請參閱[Amazon EKS 節點 IAM 角色](create-node-role.md)。
**重要**  
您無法使用用於建立任何叢集的相同角色。
建議使用尚未被任何自我管理節點群組使用的角色。否則，您要計劃與新的自我管理節點組一起使用。如需詳細資訊，請參閱[從您的叢集刪除受管節點群組](delete-managed-node-group.md)。
   +  **Use launch template** (使用啟動範本)：(選用) 選擇是否要使用現有的啟動範本。選取**啟動範本名稱**。然後，選取 **Launch template version** (啟動範本版本)。如果您沒有選取版本，則 Amazon EKS 會使用範本的預設版本。啟動範本允許對節點群組進行更多自訂，如允許您部署自訂 AMI、為 Pod 指派更多的 IP 位址、將 IP 位址指派給不同於執行個體之 CIDR 區塊的 Pod，以及將節點部署至沒有出站網際網路存取的叢集。如需詳細資訊，請參閱[將更多 IP 位址指派給具有字首的 Amazon EKS 節點](cni-increase-ip-addresses.md)、[使用自訂聯網在替代子網路中部署 Pod](cni-custom-network.md)及[部署網際網路存取受到限制的私有叢集](private-clusters.md)。

     啟動範本必須滿足[透過啟動範本來自訂受管節點](launch-templates.md)中的要求。如果您不使用自己的啟動範本，Amazon EKS API 會在您的帳戶中建立預設的 Amazon EC2 啟動範本，並使用預設啟動範本部署節點群組。

     如果您[為服務帳戶實作 IAM 角色](iam-roles-for-service-accounts.md)，請直接將必要的許可指派給需要存取 AWS 服務的每個 Pod，而且叢集中沒有任何 Pod 需要存取 IMDS，例如擷取目前 AWS 區域，則您也可以停用在啟動範本中未使用主機聯網之 Pod 的 IMDS 存取權。如需詳細資訊，請參閱[‬限制存取指派給工作節點的執行個體設定檔‭](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node)。
   +  **Kubernetes labels** (Kubernetes 標籤) – (選用) 您可以選擇將 Kubernetes 標籤套用至受管節點群組中的節點。
   +  **Kubernetes 污點** – (選用) 您可以選擇將 Kubernetes 污點套用至受管節點群組中的節點。**Effect** (效果) 功能表中的可用選項是 ` NoSchedule `、` NoExecute ` 及 ` PreferNoSchedule `。如需詳細資訊，請參閱[配方：阻止在特定節點上排程 Pod](node-taints-managed-node-groups.md)。
   +  **Tags** (標籤) – (選用) 您可以選擇標記 Amazon EKS 受管節點群組。這些標籤不會傳播到節點群組中的其他資源，例如 Auto Scaling 群組或執行個體。如需詳細資訊，請參閱[使用標籤組織 Amazon EKS 資源](eks-using-tags.md)。

1. 在 **Set compute and scaling configuration** (設定運算和擴展組態) 頁面上，相應地填寫參數，然後選擇 **Next** (下一步)。
   +  **AMI 類型**：選取 AMI 類型。如果您在部署 Arm 執行個體，請務必在部署前檢閱 [Amazon EKS 最佳化 Arm Amazon Linux AMI](eks-optimized-ami.md#arm-ami) 中的考量事項。

     如果您在上一頁中已指定啟動範本，並在啟動範本中指定了 AMI，則無法選取值。系統會顯示範本中的值。範本中指定的 AMI 必須符合[指定 AMI](launch-templates.md#launch-template-custom-ami) 中的要求。
   +  **Capacity type** (容量類型) – 選取容量類型。如需選擇容量類型的詳細資訊，請參閱 [受管節點群組容量類型](managed-node-groups.md#managed-node-group-capacity-types)。您無法在同一節點群組中混合使用不同的容量類型。如果要同時使用這兩種容量類型，請建立個別的節點群組，每個群組都有自己的容量和執行個體類型。有關佈建和擴展 GPU 加速工作節點的資訊，請參閱[為受管節點群組保留 GPU](https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks-mng.html)。
   +  **Instance types** (執行個體類型)：依預設會指定一或多個執行個體類型。若要移除預設執行個體類型，請選取執行個體類型的右側的 `X`。選擇要在受管節點群組中使用的執行個體類型。如需詳細資訊，請參閱[選擇最佳的 Amazon EC2 節點執行個體類型](choosing-instance-type.md)。

     主控台會顯示一組常用的執行個體類型。如果您需要使用未顯示的執行個體類型建立受管節點群組，請使用 `eksctl`、 CLI、 AWS CloudFormation AWS 或 SDK 來建立節點群組。如果您在上一頁指定了啟動範本，則無法選取值，因為必須在啟動範本中指定執行個體類型。系統會顯示啟動範本中的值。如果為 **Capacity type** (容量類型) 選取了 **Spot**，則建議您指定多個執行個體類型以增強可用性。
   +  **Disk size** (磁碟大小) – 輸入要用於節點根磁碟區的磁碟大小 (以 GiB 為單位)。

     如果您在上一頁指定了啟動範本，則無法選取值，因為必須在啟動範本中指定該值。
   +  **Desired size** (所需大小) – 指定受管節點群組目前在啟動時應該維護的節點數量。
**注意**  
Amazon EKS 不會自動擴展或縮減您的節點群組。不過，您可以設定 Kubernetes Cluster Autoscaler 為您執行這項操作。如需詳細資訊，請參閱 [Cluster Autoscaler on AWS](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)。
   +  **Minimum size** (大小下限) – 指定受管節點群組可縮減至的節點數量下限。
   +  **Maximum size** (大小上限)：指定受管節點群組可擴增至的節點數量上限。
   +  **Node group update configuration** (節點群組更新組態) – (選用) 您可以選取要平行更新的節點數量或百分比。這些節點在更新期間將無法使用。對於 **Maximum unavailable** (無法使用的上限)，選取下列其中一個選項，然後指定 **Value** (值)：
     +  **Number** (數量)：選取並指定可平行更新節點群組的節點數量。
     +  **Percentage** (百分比)：選取並指定可平行更新節點群組的節點百分比。如果您的節點群組中有大量節點，這會很有用。
   +  **節點自動修復組態** - (選用) 如果您啟用**啟用節點自動修復**核取方塊，Amazon EKS 將在偵測到問題發生時自動取代節點。如需詳細資訊，請參閱[偵測節點運作狀態問題並啟用自動節點修復](node-health.md)。

1. 在 **Specify networking** (指定聯網) 頁面上，據此填寫參數，然後選擇 **Next** (下一步)。
   +  **Subnets** (子網路)：選擇要將受管節點啟動至其中的子網路。
**重要**  
如果您跨越多個由 Amazon EBS 磁碟區提供的可用區域執行狀態應用程式，並且使用 Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)，您應該設定多個節點群組，每個群組的範圍皆為單一可用區域。另外，您應該啟用 `--balance-similar-node-groups` 功能。
**重要**  
如果選擇公有子網路，而且您的叢集只啟用了公有 API 伺服器端點，則子網路的必須將 `MapPublicIPOnLaunch` 設定為 `true`，讓執行個體成功加入叢集。如果子網路是在 2020 年 3 月 26 日或之後使用 `eksctl`或 [Amazon EKS vended AWS CloudFormation 範本](creating-a-vpc.md)建立，則此設定已設定為 `true`。如果在 2020 年 3 月 26 日之前使用 `eksctl`或 AWS CloudFormation 範本建立子網路，則需要手動變更設定。如需詳細資訊，請參閱[修改子網的公有 IPv4 定址屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip)。
如果使用啟動範本並指定多個網路介面，Amazon EC2 便不會自動指派公有 `IPv4` 位址，即使 `MapPublicIpOnLaunch` 已設定為 `true`。對於在此案例中加入叢集的節點，您必須啟用叢集的私有 API 伺服器端點，或使用透過其他方法 (例如 NAT Gateway) 提供的出站網際網存取，啟動私有子網路中的節點。如需詳細資訊，請參閱*《Amazon EC2 使用者指南》*中的 [Amazon EC2 執行個體 IP 定址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html)。
   +  **設定 SSH 存取節點** (選用)。啟用 SSH 可讓您連接到執行個體，並在發生問題時收集診斷資訊。強烈建議您在建立節點群組時啟用遠端存取。您無法在建立節點群組之後啟用遠端存取。

     如果您選擇使用啟動範本，則不會顯示此選項。若要啟用節點的遠端存取，請在啟動範本中指定金鑰對，並確定您在啟動範本中指定之安全群組中的節點已開啟適當的連接埠。如需詳細資訊，請參閱[使用自訂安全群組](launch-templates.md#launch-template-security-groups)。
**注意**  
對於 Windows，此命令不會啟用 SSH。而是將 Amazon EC2 金鑰對與執行個體建立關聯，讓您可以 RDP 至該執行個體中。
   + 對於 **SSH key pair** (SSH 金鑰對) (選用)，選擇要使用的 Amazon EC2 SSH 金鑰。如需 Linux 資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Amazon EC2 使用者指南](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。如需 Windows 資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Amazon EC2 金鑰對和 Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html)。如果您選擇使用啟動範本，則無法選取範本。當使用 Bottlerocket AMI 為節點群組提供 Amazon EC2 SSH 金鑰時，也會啟用管理容器。如需詳細資訊，請參閱 GitHub 上的[管理容器](https://github.com/bottlerocket-os/bottlerocket#admin-container)。
   + 對於 **Allow SSH remote access from** (允許 SSH 遠端存取來自)，如果要限制對特定執行個體的存取，請選取與這些執行個體相關聯的安全群組。如果沒有選取特定的安全群組，則允許從網際網路 (`0.0.0.0/0`) 上的任何地方存取 SSH。

1. 在 **Review and create (檢閱並建立)** 頁面上，檢閱您的受管節點群組組態，然後選擇 **Create (建立)**。

   如果節點無法加入叢集，請參閱「故障診斷」章節中的 [節點無法加入叢集](troubleshooting.md#worker-node-fail)。

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

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

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
   ```

## 安裝 Kubernetes 附加元件
<a name="_install_kubernetes_add_ons"></a>

現在您已具備含節點之可正常運作的 Amazon EKS 叢集，您即可開始安裝 Kubernetes 附加元件並將應用程式部署到叢集。以下文件主題可協助您擴展叢集的功能。
+ 建立叢集的 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)是唯一可以使用 `kubectl` 或 AWS 管理主控台對 Kubernetes API 伺服器進行呼叫的主體。如果要其他 IAM 主體能夠存取叢集，則需新增這些主體。如需詳細資訊，請參閱[授予 IAM 使用者和角色對 Kubernetes APIs存取權](grant-k8s-access.md)及[所需的許可](view-kubernetes-resources.md#view-kubernetes-resources-permissions)。
+ 如果下列條件為真，我們建議封鎖 Pod 對 IMDS 的存取：
  + 您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶，以便 Pod 僅具有所需的最低許可。
  + 叢集中沒有任何 Pod 因其他原因需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS)，例如擷取目前 AWS 區域。

  如需詳細資訊，請參閱[‬限制存取指派給工作節點的執行個體設定檔‭](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node)。
+ 設定 Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)，以自動調整節點群組中的節點數目。
+ 將[範例應用程式](sample-deployment.md)部署至叢集。
+  使用管理叢集所需的重要工具來[組織和監控叢集資源](eks-managing.md)。

# 更新叢集的受管節點群組
<a name="update-managed-node-group"></a>

啟動受管節點群組更新後，Amazon EKS 會自動為您更新節點，完成[了解節點更新的每個階段](managed-node-update-behavior.md)中列出的步驟。如果使用的是 Amazon EKS 最佳化 AMI，則 Amazon EKS 會自動將最新的安全修補程式和作業系統更新套用至您的節點，作為最新 AMI 發行版本的一部分。

有數個案例可用於更新 Amazon EKS 受管節點群組的版本或組態：
+ 您已更新 Amazon EKS 叢集的 Kubernetes 版本，並且想要更新您的節點，以使用相同的 Kubernetes 版本。
+ 新的 AMI 發行版本可供受管節點群組使用。如需 AMI 版本的詳細資訊，請參閱下列各節：
  +  [擷取 Amazon Linux AMI 版本資訊](eks-linux-ami-versions.md) 
  +  [使用最佳化的 Bottlerocket AMI 建立節點](eks-optimized-ami-bottlerocket.md) 
  +  [擷取 Windows AMI 版本資訊](eks-ami-versions-windows.md) 
+ 您想要調整受管節點群組中執行個體的下限、上限或所需計數。
+ 您想要從受管節點群組中的執行個體新增或移除 Kubernetes 標籤。
+ 您想要從受管節點群組新增或移除 AWS 標籤。
+ 您需要部署具有組態變更的新版啟動範本，例如更新的自訂 AMI。
+ 您已部署 版本 `1.9.0`或更新版本的 Amazon VPC CNI 附加元件、啟用用於字首委派的附加元件，並希望節點群組中的新 AWS Nitro System 執行個體支援大幅增加的 Pod 數量。如需詳細資訊，請參閱[將更多 IP 位址指派給具有字首的 Amazon EKS 節點](cni-increase-ip-addresses.md)。
+ 您已為 Windows 節點啟用 IP 字首委派，並希望節點群組中的新 AWS Nitro System 執行個體支援大幅增加的 Pod 數量。如需詳細資訊，請參閱[將更多 IP 位址指派給具有字首的 Amazon EKS 節點](cni-increase-ip-addresses.md)。

如果有較新的受管節點群組之 Kubernetes 版本的 AMI 發行版本，則可以更新節點群組的版本，以使用較新的 AMI 版本。同樣地，如果叢集執行的 Kubernetes 版本比節點群組新，則可以更新節點群組，以使用符合叢集 Kubernetes 版本的最新 AMI 發行版本。

當受管節點群組中的節點由於擴展操作或更新而終止時，該節點中的 Pod 叢集會先耗盡。如需詳細資訊，請參閱[了解節點更新的每個階段](managed-node-update-behavior.md)。

## 更新節點群組版本
<a name="mng-update"></a>

您可以透過以下任一項來更新節點群組版本：
+  [`eksctl`](#eksctl_update_managed_nodegroup) 
+  [AWS 管理主控台](#console_update_managed_nodegroup) 

您更新的版本不能比控制平面的版本還新。

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

 **使用 `eksctl` 來更新受管節點群組** 

使用下列命令，將受管節點群組更新至目前節點上所部署相同 Kubernetes 版本的最新 AMI 版本。使用您自己的值取代每一個*範例值*。

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code
```

**注意**  
如果要將使用啟動範本部署的節點群組升級至新的啟動範本版本，則請將 `--launch-template-version version-number ` 新增至上述命令。啟動範本必須滿足[透過啟動範本來自訂受管節點](launch-templates.md)中所述的要求。如果啟動範本包含自訂 AMI，則 AMI 必須滿足[指定 AMI](launch-templates.md#launch-template-custom-ami) 中的要求。當您將節點群組升級至較新版本的啟動範本時，每個節點都會回收，以符合指定之啟動範本版本的新組態。

您無法直接將未部署啟動範本的節點群組升級至新的啟動範本版本。相反地，您必須使用啟動範本部署新的節點群組，才能將節點群組更新為新的啟動範本版本。

您可以將節點群組升級至與控制平面的 Kubernetes 版本相同的版本。例如，當您有一個正在執行 Kubernetes `1.35` 的叢集時，您可以使用下列命令，將目前執行 Kubernetes `1.34` 的節點升級到 `1.35` 版。

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code \
  --kubernetes-version=1.35
```

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

 **使用 AWS 管理主控台 來更新受管節點群組** 

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

1. 選擇包含要更新之節點群組的叢集。

1. 如果至少有一個節點群組有可用的更新，則頁面頂部會出現一個方塊，通知您可用的更新。如果選取**運算**索引標籤，您會看到針對有可用更新之節點群組的**節點群組**資料表中 **AMI 發行版本**欄位中的**立即更新**。若要更新節點群組，請選擇 **Update now** (立即更新)。

   您不會看到使用自訂 AMI 部署之節點群組的通知。如果節點是使用自訂 AMI 進行部署，則請完成以下步驟來部署新的已更新自訂 AMI。

   1. 建立 AMI 的新版本。

   1. 使用新的 AMI ID 建立新的啟動範本版本。

   1. 將節點升級至啟動範本的新版本。

1. 在 **Update node group version** (更新節點群組版本) 對話方塊中，啟用或停用以下選項：
   +  **Update node group version** (更新節點群組版本)：如果您部署了自訂 AMI，或經 Amazon EKS 優化的 AMI 目前是叢集的最新版本，則無法使用此選項。
   +  **Change launch template version** (變更啟動範本版本)：如果節點群組是在沒有自訂啟動範本的情況下進行部署，則無法使用此選項。您只能更新已使用自訂啟動範本部署之節點群組的啟動範本版本。選取節點群組要更新至的 **Launch template version** (啟動範本版本)。如果節點群組設定了自訂 AMI，則您選取的版本也必須指定 AMI。當您升級至較新版本的啟動範本時，每個節點都會回收，以符合指定之啟動範本版本的新組態。

1. 對於 **Update strategy** (更新策略)，選取下列其中一個選項：
   +  **Rolling update** (滾動更新) – 此選項會遵循叢集的 Pod 中斷預算。如果發生 Pod 中斷預算問題，導致 Amazon EKS 無法正常地消耗正在此節點群組上執行的 Pod，則更新會失敗。
   +  **強制更新** – 此選項不會遵循 Pod 中斷預算。無論 Pod 中斷預算問題如何，都會強制節點重新啟動，進行更新。

1. 選擇 **Update** (更新)。

## 編輯節點群組組態
<a name="mng-edit"></a>

您可以修改受管節點群組中的部分組態。

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

1. 選擇包含要編輯之節點群組的叢集。

1. 選取 **Compute** (運算) 標籤。

1. 選取要編輯的節點群組，然後選擇 **Edit** (編輯)。

1. (選用) 在 **Edit node group** (編輯節點群組) 頁面上，執行以下作業：

   1. 編輯 **Node group scaling configuration** (節點群組擴展組態)。
      +  **Desired size** (所需大小) – 指定受管節點群組目前應該維護的工作者節點數量。
      +  **Minimum size** (大小下限) – 指定受管節點群組可縮減至的節點數量下限。
      +  **Maximum size** (大小上限)：指定受管節點群組可擴增至的節點數量上限。如需節點群組中支援的節點數量上限，請參閱 [檢視與管理 Amazon EKS 和 Fargate 服務配額](service-quotas.md)。

   1. (選用) 將 **Kubernetes 標籤**新增至節點群組中的節點或從中移除這些標籤。這裡顯示的標籤只是您使用 Amazon EKS 所套用的標籤。其他標籤可能存在於這裡未顯示的節點上。

   1. (選用) 將 **Kubernetes 污點**新增至節點群組中的節點或從中移除這些標籤。已新增的污點可能會有 ` NoSchedule `、` NoExecute ` 或 ` PreferNoSchedule ` 效果。如需詳細資訊，請參閱[配方：阻止在特定節點上排程 Pod](node-taints-managed-node-groups.md)。

   1. (選用) 將 **Tags** (標籤) 新增至節點群組或從中移除標籤。這些標籤僅適用於 Amazon EKS 節點群組。標籤不會傳播到其他資源，例如節點群組中的子網路或 Amazon EC2 執行個體。

   1. (選用) 編輯 **Node Group update configuration** (節點群組更新組態)。選取任何一個 **Number** (數字) 或 **Percentage** (百分比)。
      +  **Number** (數量)：選取並指定可平行更新節點群組的節點數量。這些節點在更新期間將無法使用。
      +  **Percentage** (百分比)：選取並指定可平行更新節點群組的節點百分比。這些節點在更新期間將無法使用。如果您的節點群組中有許多節點，這會很有用。

   1. 完成編輯後，請選擇**儲存變更**。

**重要**  
更新節點群組組態後，修改 [https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html) 與 Pod 中斷預算 (PDB) 不相符。與[更新節點群組](managed-node-update-behavior.md)程序 (這會在升級階段期間消耗節點且與 PDB 相符) 不同的是，若更新擴展組態，會導致節點透過 Auto Scaling 群組 (ASG) 縮減呼叫立即終止。發生此情況不會考慮 PDB，無論您在縮減的目標大小為何。這意味著，若您減少 Amazon EKS 受管節點群組的 `desiredSize`，Pod 會在節點終止後立即移出，而不與任何 PDB 相符。

# 了解節點更新的每個階段
<a name="managed-node-update-behavior"></a>

Amazon EKS 受管工作節點升級策略有四個不同的階段，如下節所述。

## 設定階段
<a name="managed-node-update-set-up"></a>

設定階段具有下列步驟：

1. 它為與節點群組相關聯的 Auto Scaling 群組建立新的 Amazon EC2 啟動範本版本。新的啟動範本版本使用目標 AMI 或自訂啟動範本版本進行更新。

1. 它會更新 Auto Scaling 群組，以使用最新的啟動範本。

1. 它使用節點群組的 `updateConfig` 屬性決定要平行升級的節點數量上限。不可用節點上限配額為 100。預設值為一個節點。如需詳細資訊，請參閱《*Amazon EKS API 參考*》中的 [updateConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateNodegroupConfig.html#API_UpdateNodegroupConfig_RequestSyntax) 屬性。

## 擴充規模階段
<a name="managed-node-update-scale-up"></a>

升級受管節點群組中的節點時，已升級的節點會在與正在升級的節點相同的可用區域中啟動。為了保證這種置放，我們使用 Amazon EC2 的可用區域重新平衡。如需詳細資訊，請參閱《[Amazon EC2 Auto Scaling 使用者指南](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage)》中的*可用區域容量重新平衡*。為了滿足這項需求，我們可在受管節點群組中每個可用區域啟動最多兩個執行個體。

擴充規模階段具有下列步驟：

1. 它按下面的任一大小 (以較大者為准) 增加 Auto Scaling 群組的最大大小和所需大小：
   + Auto Scaling 群組部署的可用區域數量的兩倍。
   + 升級無法使用的上限。

     例如，如果節點群組有五個可用區域，而 `maxUnavailable` 為一個，則升級程序最多能啟動 10 個節點。但是，當 `maxUnavailable` 為 20 (或任何大於 10 的數字)，該程序會啟動 20 個新節點。

1. 擴展 Auto Scaling 群組後，會檢查使用最新配置的節點是否存在於節點群組之中。只有在符合下列條件時，此步驟才會成功：
   + 在節點所在的每個可用區域中，至少會啟動一個新節點。
   + 每個新節點都應該處於 `Ready` 狀態。
   + 新節點應該有 Amazon EKS 套用標籤。

     以下是一般節點群組中工作節點上的 Amazon EKS 套用標籤：
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 

     以下是自訂啟動範本或 AMI 節點群組中工作節點上的 Amazon EKS 套用標籤：
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 
     +  `eks.amazonaws.com/sourceLaunchTemplateId=$launchTemplateId` 
     +  `eks.amazonaws.com/sourceLaunchTemplateVersion=$launchTemplateVersion` 

1. 它將節點標記為不可排程，以避免排程新的 Pod。它還使用 `node.kubernetes.io/exclude-from-external-load-balancers=true` 標記節點，以便在終止節點之前從負載平衡器中移除舊節點。

以下是在這個階段中會導致 `NodeCreationFailure` 錯誤的已知原因：

 **可用區域容量不足**   
可用區域可能沒有所請求執行個體類型的容量。建議在建立受管節點群組時設定多個執行個體類型。

 **您帳戶中的 EC2 執行個體限制**   
您可能需要增加帳戶可以使用 Service Quotas 同時執行的 Amazon EC2 執行個體的數量。如需詳細資訊，請參閱《[Amazon Elastic Compute Cloud Linux 執行個體使用者指南](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html)》中的 *EC2 Service Quotas*。

 **自訂使用者資料**   
自訂使用者資料有時會中斷引導程序。這種情況可能會導致 `kubelet` 未在節點上啟動或節點上未取得預期的 Amazon EKS 標籤。如需詳細資訊，請參閱 [指定 AMI](launch-templates.md#launch-template-custom-ami)。

 **任何使節點運作狀態不良或未準備就緒的變更**   
節點磁碟壓力、記憶體壓力和類似情況，可能導致節點無法進入 `Ready` 狀態。

 **每個節點在 15 分鐘內必須完成引導**   
如果任何節點需要超過 15 分鐘才能完成引導並加入叢集，則會導致升級逾時。這是從需要新節點到新階段加入叢集時，測量的引導新節點的總執行時期。升級受管節點群組時，時間計數器會在 Auto Scaling 群組大小增加時立即啟動。

## 升級階段
<a name="managed-node-update-upgrade"></a>

升級階段有有兩種不同的行為方式，具體視*更新策略*而定。更新策略有兩種：**預設**和**最低**。

大多數情況下，我們建議使用預設策略。它會在終止舊節點之前建立新節點，以便在升級階段維持可用容量。在資源或成本受限制的情況下 (例如使用 GPU 等硬體加速器)，這種最低策略非常有用。它會在建立新節點之前終止舊節點，以便總容量永遠不會超過您設定的數量。

*預設*更新策略包含下列步驟：

1. 它會增加 Auto Scaling 群組中的節點數量 (所需計數)，進而導致節點群組建立額外的節點。

1. 它隨機選取需要升級的節點，最大不超過為節點群組設定的無法使用上限。

1. 其會耗盡節點中的 Pod。如果 Pod 沒有在 15 分鐘內離開節點，並且沒有強制旗標，則升級階段將失敗，並會出現 `PodEvictionFailure` 錯誤。在這種情況下，您可以應用強制旗標，同時使用 `update-nodegroup-version` 請求刪除 Pod。

1. 在每個 Pod 被移出並等待 60 秒後，其會包圍隔離節點。這樣做是為了讓服務控制器不會將任何新的請求傳送到此節點，並將此節點從其作用中的節點清單中移除。

1. 它將終止請求傳送之包圍隔離節點的 Auto Scaling 群組。

1. 它重複步驟先前的升級步驟，直到節點群組中沒有使用舊版啟動範本部署的節點為止。

*最低*更新策略包含下列步驟：

1. 它會在開頭包圍隔離節點群組的所有節點，以便服務控制器不會將任何新請求傳送至這些節點。

1. 它隨機選取需要升級的節點，最大不超過為節點群組設定的無法使用上限。

1. 它會從選取的節點中耗盡 Pod。如果 Pod 沒有在 15 分鐘內離開節點，並且沒有強制旗標，則升級階段將失敗，並會出現 `PodEvictionFailure` 錯誤。在這種情況下，您可以應用強制旗標，同時使用 `update-nodegroup-version` 請求刪除 Pod。

1. 在每個 Pod 被移出並等待 60 秒後，其會向選取的節點的 Auto Scaling 群組傳送終止請求。Auto Scaling 群組會建立新的節點 (與選取的節點的數量相同)，以取代缺少的容量。

1. 它重複步驟先前的升級步驟，直到節點群組中沒有使用舊版啟動範本部署的節點為止。

### 升級階段期間的 `PodEvictionFailure` 錯誤
<a name="_podevictionfailure_errors_during_the_upgrade_phase"></a>

以下是在這個階段中會導致 `PodEvictionFailure` 錯誤的已知原因：

 **積極的 PDB**   
在 Pod 上定義積極的 PDB，或有多個 PDB 指向同一個 Pod。

 **容忍所有污點的部署**   
一旦移出每個 Pod，節點預期為空，因為節點在先前的步驟中會受到[污染](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)。但是，如果部署容忍每一個污點，則節點更有可能是非空白，導致 Pod 移出失敗。

## 縮減規模階段
<a name="managed-node-update-scale-down"></a>

縮減規模階段會將 Auto Scaling 群組的大小上限和所需大小遞減一，以便回到更新開始之前的值。

如果升級工作流程判斷 Cluster Autoscaler 在工作流程的縮減規模階段期間擴充節點群組，它會立即結束，而不會將節點群組恢復至原始大小。

# 使用啟動範本自訂受管節點
<a name="launch-templates"></a>

如需最高層級的自訂，您可以根據此頁面上的步驟，使用自己的啟動範本來部署受管節點。使用啟動範本可讓 等功能在部署節點期間提供引導引數 （例如，額外的 [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) 引數）、從與指派給節點的 IP 地址不同的 CIDR 區塊將 IP 地址指派給 Pod、將您自己的自訂 AMI 部署至節點，或將您自己的自訂 CNI 部署至節點。

如果您在第一次建立受管節點群組期間提供自己的啟動範本，稍後也會得到更出色的靈活性。只要使用自己的啟動範本部署受管節點群組，您就可以使用不同版本的相同啟動範本來反覆更新。將節點群組更新為不同版本的啟動範本時，群組中的所有節點都會回收，以符合指定啟動範本版本的新組態。

一律使用 Amazon EC2 Auto Scaling 群組所使用的啟動範本部署受管節點群組。如果未提供啟動範本，Amazon EKS API 會使用帳戶中的預設值自動建立此啟動範本。然而，我們不建議您修改自動產生的啟動範本。此外，未使用自訂啟動範本的現有節點群組無法直接更新。相反，您必須建立具有自訂啟動範本的新節點群組，才能執行此動作。

## 啟動範本組態基礎知識
<a name="launch-template-basics"></a>

您可以使用 、 AWS 管理主控台 AWS CLI 或 AWS SDK 建立 Amazon EC2 Auto Scaling 啟動範本。如需詳細資訊，請參閱*《Amazon EC2 Auto Scaling 使用者指南》*中的[建立 Auto Scaling 群組的啟動範本](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html)。啟動範本中的某些設定與用於受管理節點組態的設定類似。使用啟動範本部署或更新節點群組時，必須在節點群組組態或啟動範本其中一個位置中指定某些設定。請勿同時在兩個位置指定設定。如果設定存在於不應該的地方，則建立或更新節點群組之類的動作會失敗。

下表會列出啟動範本中禁止的設定。該表也會列出受管節點群組組態中需要的類似設定 (如果有)。列出的設定是顯示在主控台中的設定。它們在 CLI 和 SDK AWS 中可能有類似但不同的名稱。


| 啟動範本：禁止 | Amazon EKS 節點群組組態 | 
| --- | --- | 
|   **Network interfaces** (網路介面) (**Add network interface** (新增網路介面)) 下的 **Subnet** (子網)  |   **Specify networking** (指定聯網) 頁面上 **Node Group network configuration** (節點群組網路組態) 下的 **Subnets** (子網)  | 
|   **Advanced details** (進階詳細資訊) 下的 **IAM instance profile** (IAM 執行個體描述檔)   |   **Configure Node Group** (設定節點群組) 頁面上 **Node Group configuration** (節點群組組態) 下的 **Node IAM Role** (節點 IAM 角色)  | 
|   **Advanced details** (進階詳細資訊) 下的 **Shutdown behavior** (關機行為) 和 **Stop - Hibernate behavior** (停用 – 休眠行為)。為兩種設定在啟動範本中保留預設**請勿包含在啟動範本設定中**。  |  無同等。Amazon EKS 必須控制執行個體生命週期，而非 Auto Scaling 群組。  | 

下表會列出受管節點群組組態中禁止的設定。該表也會列出類似的設定 (如果有)，這些設定在啟動範本中是必要設定。列出的設定是顯示在主控台中的設定。它們在 CLI 和 SDK AWS 中可能會有類似的名稱。


| Amazon EKS 節點群組組態設定：禁止 | 啟動範本 | 
| --- | --- | 
|  (僅當您在啟動模板中指定了自訂 AMI 時) 在 **Set compute and scaling configuration** (設定運算和擴展組態) 頁面上 **Node Group compute configuration** (節點群組運算組態) 下的 **AMI type** (AMI 類型) – 主控台顯示 **Specified in launch template** (在啟動範本中指定) 以及指定的 AMI ID。 如果未在啟動範本中指定**應用程式和作業系統映像 (Amazon Machine Image)**，您可在節點群組組態中選取 AMI。  |   **Launch template contents** (啟動範本內容) 下的 **Application and OS Images (Amazon Machine Image)** (應用程式和作業系統映像 (Amazon Machine Image))：如果您有下列任一要求，則必須指定 ID： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/eks/latest/userguide/launch-templates.html)  | 
|   **Set compute and scaling configuration** (設定運算和擴展組態) 頁面上 **Node Group compute configuration** (節點群組運算組態) 下的 **Disk size** (磁碟大小)：主控台顯示 **Specified in launch template** (在啟動範本中指定)。  |   **Storage (Volumes)** (儲存 (磁碟區)) (**Add new volume** (新增磁碟區)) 下的 **Size** (大小)。您必須在啟動範本中指定此選項。  | 
|   **Specify Networking** (指定聯網) 頁面上 **Node Group configuration** (節點群組組態) 下的 **SSH key pair** (SSH 金鑰對) – 主控台會顯示在啟動範本中指定的金鑰，或顯示 **Not specified in launch template** (未在啟動範本中指定)。  |   **Key pair (login)** (金鑰對 (登入)) 下的 **Key pair name** (金鑰對名稱)。  | 
|  使用啟動範本時，您無法指定允許遠端存取的來源安全群組。  |   針對執行個體的 **Network settings** (網路設定) 下的 **Security groups** (安全群組) 或 **Network interfaces** (網路介面) 下的 **Security groups** (安全群組) (**Add network interface** (新增網路介面))，但不能兩者同時選擇。如需詳細資訊，請參閱[使用自訂安全群組](#launch-template-security-groups)。  | 

**注意**  
如果使用啟動範本部署節點群組，請在啟動範本的 **Launch template contents** (啟動範本內容) 中指定零或一個 **Instance type** (執行個體類型)。您也可以在主控台上的 **Set compute and scaling configuration** (設定運算和擴展組態) 頁面中，為 **Instance types** (執行個體類型) 指定 0 到 20 個執行個體類型。您還可以使用其他使用 Amazon EKS API 的工具來執行這項操作。如果在啟動範本中指定執行個體類型，並使用該啟動範本來部署節點群組，則無法在主控台中指定任何執行個體類型，或使用其他使用 Amazon EKS API 的工具。如果未在啟動範本、主控台中或使用其他使用 Amazon EKS API 的工具指定執行個體類型，請使用 `t3.medium` 執行個體類型。如果您的節點群組正在使用 Spot 容量類型，則建議使用主控台指定多個執行個體類型。如需詳細資訊，請參閱[受管節點群組容量類型](managed-node-groups.md#managed-node-group-capacity-types)。
如果您部署到節點群組的任何容器使用執行個體中繼資料服務版本 2，請確定在啟動範本中將 **Metadata response hop limit** (中繼資料回應躍點限制) 設定為 `2`。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[執行個體中繼資料與使用者資料](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)。
啟動範本不支援允許靈活的執行個體類型選取的 `InstanceRequirements` 功能。

## 標記 Amazon EC2 執行個體
<a name="launch-template-tagging"></a>

您可以使用啟動範本的 `TagSpecification` 參數，以指定要將哪些標籤套用至節點群組中的 Amazon EC2 執行個體。IAM 實體呼叫 `CreateNodegroup` 或 `UpdateNodegroupVersion` API 必須擁有 `ec2:RunInstances` 和 `ec2:CreateTags` 許可，而且標籤必須新增至啟動範本。

## 使用自訂安全群組
<a name="launch-template-security-groups"></a>

您可以使用啟動範本來指定自訂 Amazon EC2 [安全群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)以套用至節點群組中的執行個體。這可以是在執行個體層級安全群組參數中，也可以是網路介面組態參數的一部分。不過，您無法建立同時指定執行個體層級和網路介面安全群組的啟動範本。請考慮下列適用於搭配受管節點群組使用之自訂安全群組的條件：
+ 使用 時 AWS 管理主控台，Amazon EKS 僅允許具有單一網路介面規格的啟動範本。
+ 預設情況下，Amazon EKS 將[叢集安全群組](sec-group-reqs.md)套用至節點群組中的執行個體，以促進節點與控制平面之間的通訊。如果使用先前提到的任一選項在啟動範本中指定自訂安全群組，則 Amazon EKS 不會新增叢集安全群組。因此，您必須確保安全群組的傳入和傳出規則可啟用與叢集端點的通訊。如果安全群組規則不正確，工作節點便無法加入叢集。如需安全群組規則的詳細資訊，請參閱 [檢視叢集的 Amazon EKS 安全群組要求](sec-group-reqs.md)。
+ 如需 SSH 存取節點群組中的執行個體，請包含允許該存取的安全群組。

## Amazon EC2 使用者資料
<a name="launch-template-user-data"></a>

啟動範本包含自訂使用者資料的區段。您可以在此區段中指定節點群組的組態設定，無需手動建立個別自訂 AMI。如需有關 Bottlerocket 可用設定的詳細資訊，請參閱 GitHub 上的[使用使用者資料](https://github.com/bottlerocket-os/bottlerocket#using-user-data)。

您可以在啟動執行個體時使用 `cloud-init` 提供啟動範本中的 Amazon EC2 使用者資料。如需詳細資訊，請參閱 [cloud-init 文件](https://cloudinit.readthedocs.io/en/latest/index.html)。您的使用者資料可用來執行一般組態操作。這包含下列操作：
+  [包括使用者或群組](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#including-users-and-groups) 
+  [安裝套件 ](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-arbitrary-packages) 

與受管節點群組搭配使用的啟動範本中的 Amazon EC2 使用者資料，必須為 Amazon Linux AMI 的 [MIME 分段封存](https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive)格式和 Bottlerocket AMI 的 TOML 格式。這是因為您的使用者資料與節點加入叢集所需的 Amazon EKS 使用者資料合併。請勿在啟動或修改 `kubelet` 的使用者資料中指定任何命令。這會作為 Amazon EKS 合併使用者資料的一部分執行。某些 `kubelet` 參數 (例如在節點上設定標籤) 可以透過受管節點群組 API 直接設定。

**注意**  
如果有關進階 `kubelet` 自訂 (包括手動啟動或傳入自訂組態參數) 的詳細資訊，請參閱 [指定 AMI](#launch-template-custom-ami)。如果在啟動範本中指定自訂 AMI ID，Amazon EKS 不會合併使用者資料。

下列詳細資訊提供有關使用者資料區段的詳細資訊。

 **Amazon Linux 2 使用者資料**   
您可以將多個使用者資料區塊組合在一起成為單一 MIME 分段檔案。例如，您可以將設定 Docker 常駐程式的雲端 Boothook 與安裝自訂套件的使用者資料 Shell 指令碼合併。MIME 分段檔案包含下列元件：  
+ 內容類型和部分邊界宣告：`Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="`
+ MIME 版本宣告：`MIME-Version: 1.0`
+ 包含以下元件的一或多個使用者資料區塊：
  + 開啟邊界，表示使用者資料區塊的開始 – `--==MYBOUNDARY==` 
  + 區塊的內容類型宣告：`Content-Type: text/cloud-config; charset="us-ascii"`。如需內容類型的詳細資訊，請參閱 [cloud-init](https://cloudinit.readthedocs.io/en/latest/topics/format.html) 文件。
  + 使用者資料的內容 (例如，Shell 命令或 `cloud-init` 指令的清單)。
  + 結束邊界，表示 MIME 分段檔案的結束：`--==MYBOUNDARY==--`

  以下是您可以用來建立自己的 MIME 分段檔案的範例。

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo "Running custom user data script"

--==MYBOUNDARY==--
```

 **Amazon Linux 2023 使用者資料**   
Amazon Linux 2023 (AL2023) 推出了新的節點初始化程序 `nodeadm`，該程序會使用 YAML 組態結構描述。如果您使用自我管理節點群組或具有啟動範本的 AMI，則在建立新節點群組時，需要明確提供額外的叢集中繼資料。以下連結展示了一個包含最低必要參數的[範例](https://awslabs.github.io/amazon-eks-ami/nodeadm/)，其中 `apiServerEndpoint`、`certificateAuthority` 和服務 `cidr` 現在是必需的：  

```
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
```
您通常會在使用者資料中設定此組態，可以依原狀設定，也可以內嵌在 MIME 分段文件中：  

```
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: [...]

--BOUNDARY--
```
在 AL2 中，這些參數的中繼資料是透過 Amazon EKS `DescribeCluster` API 呼叫自動發現的。在 AL2023 中，此行為已改變，因為額外的 API 呼叫在大規模節點擴展時有被限流的風險。如果您使用沒有啟動範本的受管節點群組，或使用 Karpenter，則此變更不會對您造成影響。如需有關 `certificateAuthority` 和服務 `cidr` 的更多資訊，請參閱《*Amazon EKS API 參考*》中的 [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)。  
以下是 AL2023 使用者資料的完整範例，其中結合用於自訂節點的 Shell 指令碼 (例如安裝套件或預先快取容器映像) 與所需的 `nodeadm` 組態。此範例顯示常見的自訂，包括：\$1 安裝其他系統套件 \$1 預先快取容器映像，以改善 Pod 啟動時間 \$1 設定 HTTP 代理組態 \$1 設定節點標籤的 `kubelet` 旗標  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset

# Install additional packages
yum install -y htop jq iptables-services

# Pre-cache commonly used container images
nohup docker pull public.ecr.aws/eks-distro/kubernetes/pause:3.2 &

# Configure HTTP proxy if needed
cat > /etc/profile.d/http-proxy.sh << 'EOF'
export HTTP_PROXY="http://proxy.example.com:3128"
export HTTPS_PROXY="http://proxy.example.com:3128"
export NO_PROXY="localhost,127.0.0.1,169.254.169.254,.internal"
EOF

--BOUNDARY
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
  kubelet:
    config:
      clusterDNS:
      - 10.100.0.10
    flags:
    - --node-labels=app=my-app,environment=production

--BOUNDARY--
```

 **Bottlerocket 使用者資料**   
Bottlerocket 會以 TOML 格式建構使用者資料。您可以提供要與 Amazon EKS 提供的使用者資料合併的使用者資料。例如，您可以提供額外的 `kubelet` 設定。  

```
[settings.kubernetes.system-reserved]
cpu = "10m"
memory = "100Mi"
ephemeral-storage= "1Gi"
```
如需有關受支援設定的詳細資訊，請參閱 [Bottlerocket 文件](https://github.com/bottlerocket-os/bottlerocket)。您可以在使用者資料中設定節點標籤和[污點](node-taints-managed-node-groups.md)。不過，建議您改為在節點群組內設定。在執行這項操作時，Amazon EKS 會套用這些組態。  
合併使用者資料時，不會保留格式設定，但內容保持不變。您在使用者資料中提供的組態會覆寫 Amazon EKS 所設定的任何設定。所以，如果您設定 `settings.kubernetes.max-pods` 或 `settings.kubernetes.cluster-dns-ip`，則使用者資料中的值會套用至節點。  
Amazon EKS 不支援所有有效的 TOML。以下是已知不支援格式的清單：  
+ 引號鍵內的引號：`'quoted "value"' = "value"`
+ 值中的溢出引號：`str = "I’m a string. \"You can quote me\""`
+ 混合浮點數和正整數：`numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]`
+ 陣列中的混合類型：`contributors = ["[foo@example.com](mailto:foo@example.com)", { name = "Baz", email = "[baz@example.com](mailto:baz@example.com)" }]`
+ 帶引號鍵的括號標題：`[foo."bar.baz"]`

 **Windows 使用者資料**   
Windows 使用者資料會使用 PowerShell 命令。建立受管節點群組時，您的自訂使用者資料會與 Amazon EKS 受管使用者資料結合。您的 PowerShell 命令為優先，然後是受管的使用者資料命令，所有這些命令都在一個 `<powershell></powershell>` 標籤中。  
建立 Windows 節點群組時，Amazon EKS 會更新 `aws-auth` `ConfigMap`，以允許 Linux 型節點加入叢集。服務不會自動設定 Windows AMI 的許可。如果您使用的是 Windows 節點，您將需要透過存取項目 API 或直接更新 `aws-auth` `ConfigMap` 來管理存取。如需詳細資訊，請參閱[在 EKS 叢集上部署 Windows 節點](windows-support.md)。
如果啟動範本中未指定任何 AMI ID，請勿在使用者資料中使用 Windows Amazon EKS 引導指令碼來設定 Amazon EKS。
範例使用者資料如下。  

```
<powershell>
Write-Host "Running custom user data script"
</powershell>
```

## 指定 AMI
<a name="launch-template-custom-ami"></a>

如果有下列其中一項要求，請在啟動範本 `ImageId` 欄位中指定 AMI ID。選取您對其他資訊的要求。

### 提供使用者資料將引數傳遞給 `bootstrap.sh` 檔案，其中包含 Amazon EKS 最佳化 Linux/Bottlerocket AMI
<a name="mng-specify-eks-ami"></a>

引導是一個術語，用於描述新增在執行個體啟動時可以執行的命令。例如，引導允許使用額外的 [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) 引數。您可以使用 `eksctl` 將引數傳遞給 `bootstrap.sh` 而不指定啟動範本。您也可以在啟動範本的使用者資料區段中指定資訊來執行此動作。

 **eksctl，無需指定啟動範本**   
使用下列內容，建立名為 *my-nodegroup.yaml* 的檔案。使用您自己的值取代每一個*範例值*。`--apiserver-endpoint`、`--b64-cluster-ca`，和 `--dns-cluster-ip` 引數為選用。但是，定義引述會允許 `bootstrap.sh` 指令碼避免進行 `describeCluster` 呼叫。這在經常縮減和擴增節點的私有叢集設定或叢集中非常有用。如需 `bootstrap.sh` 指令碼的詳細資訊，請參閱 GitHub 上的 [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) 檔案。  
+ 唯一需要的引數是叢集名稱 (*my-cluster*)。
+ 若要擷取 `ami-1234567890abcdef0 ` 的最佳化 AMI ID，您請參閱下列章節：
  +  [擷取建議的 Amazon Linux AMI ID](retrieve-ami-id.md) 
  +  [擷取建議的 Bottlerocket AMI ID](retrieve-ami-id-bottlerocket.md) 
  +  [擷取建議的 Microsoft Windows AMI ID](retrieve-windows-ami-id.md) 
+ 若要擷取您的叢集的 *certificate-authority*，請執行下列命令。

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ 若要擷取您的叢集的 *api-server-endpoint*，請執行下列命令。

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ `--dns-cluster-ip` 的值是結尾處為 `.10` 的服務 CIDR。若要擷取您的叢集的 *service-cidr*，請執行下列命令。例如，如果傳回的值是 `ipv4 10.100.0.0/16`，則您的值是 *10.100.0.10*。

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ 此範例使用其中包含 Amazon EKS 最佳化 AMI 的 `bootstrap.sh` 指令碼提供 `kubelet` 引數來設定自訂 `max-pods` 值。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭，但剩餘字元也可以包含連字符和底線。如需選取 *my-max-pods-value* 的說明，請參閱 。如需使用受管節點群組時如何`maxPods`決定 的詳細資訊，請參閱 [maxPods的判斷方式](choosing-instance-type.md#max-pods-precedence)。

  ```
  ---
  apiVersion: eksctl.io/v1alpha5
  kind: ClusterConfig
  
  metadata:
    name: my-cluster
    region: region-code
  
  managedNodeGroups:
    - name: my-nodegroup
      ami: ami-1234567890abcdef0
      instanceType: m5.large
      privateNetworking: true
      disableIMDSv1: true
      labels: { x86-al2-specified-mng }
      overrideBootstrapCommand: |
        #!/bin/bash
        /etc/eks/bootstrap.sh my-cluster \
          --b64-cluster-ca certificate-authority \
          --apiserver-endpoint api-server-endpoint \
          --dns-cluster-ip service-cidr.10 \
          --kubelet-extra-args '--max-pods=my-max-pods-value' \
          --use-max-pods false
  ```

  針對每一個可用的 `eksctl` `config` 檔案選項，請參閱 `eksctl` 文件中的 [Config file schema](https://eksctl.io/usage/schema/) (組態檔案結構描述)。此 `eksctl` 公用程式仍會為您建立啟動範本，並使用在 `config` 檔案提供的資料來填入其使用者資料。

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

  ```
  eksctl create nodegroup --config-file=my-nodegroup.yaml
  ```

 **啟動範本中的使用者資料**   
在啟動範本的使用者資料區段中指定下列資訊。使用您自己的值取代每一個*範例值*。`--apiserver-endpoint`、`--b64-cluster-ca`，和 `--dns-cluster-ip` 引數為選用。但是，定義引述會允許 `bootstrap.sh` 指令碼避免進行 `describeCluster` 呼叫。這在經常縮減和擴增節點的私有叢集設定或叢集中非常有用。如需 `bootstrap.sh` 指令碼的詳細資訊，請參閱 GitHub 上的 [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) 檔案。  
+ 唯一需要的引數是叢集名稱 (*my-cluster*)。
+ 若要擷取您的叢集的 *certificate-authority*，請執行下列命令。

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ 若要擷取您的叢集的 *api-server-endpoint*，請執行下列命令。

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ `--dns-cluster-ip` 的值是結尾處為 `.10` 的服務 CIDR。若要擷取您的叢集的 *service-cidr*，請執行下列命令。例如，如果傳回的值是 `ipv4 10.100.0.0/16`，則您的值是 *10.100.0.10*。

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ 此範例使用其中包含 Amazon EKS 最佳化 AMI 的 `bootstrap.sh` 指令碼提供 `kubelet` 引數來設定自訂 `max-pods` 值。如需選取 *my-max-pods-value* 的說明，請參閱 。如需使用受管節點群組時如何`maxPods`決定 的詳細資訊，請參閱 [maxPods的判斷方式](choosing-instance-type.md#max-pods-precedence)。

  ```
  MIME-Version: 1.0
  Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
  
  --==MYBOUNDARY==
  Content-Type: text/x-shellscript; charset="us-ascii"
  
  #!/bin/bash
  set -ex
  /etc/eks/bootstrap.sh my-cluster \
    --b64-cluster-ca certificate-authority \
    --apiserver-endpoint api-server-endpoint \
    --dns-cluster-ip service-cidr.10 \
    --kubelet-extra-args '--max-pods=my-max-pods-value' \
    --use-max-pods false
  
  --==MYBOUNDARY==--
  ```

### 提供使用者資料將引數傳遞給 `Start-EKSBootstrap.ps1` 檔案，其中包含 Amazon EKS 最佳化 Windows AMI
<a name="mng-specify-eks-ami-windows"></a>

引導是一個術語，用於描述新增在執行個體啟動時可以執行的命令。您可以使用 `eksctl` 將引數傳遞給 `Start-EKSBootstrap.ps1` 而不指定啟動範本。您也可以在啟動範本的使用者資料區段中指定資訊來執行此動作。

如果您想指定自訂 Windows AMI ID，請注意下列考量事項：
+ 您必須使用啟動範本，並在使用者資料區段中提供所需引導命令。若要擷取所需的 Windows ID，您可以使用[使用最佳化的 Windows AMI 建立節點](eks-optimized-windows-ami.md)中的資料表。
+ 您需滿足幾個限制和條件。例如，您必須將 `eks:kube-proxy-windows`新增至 IAM Authenticator AWS 組態映射。如需詳細資訊，請參閱[指定 AMI ID 時的限制和條件](#mng-ami-id-conditions)。

在啟動範本的使用者資料區段中指定下列資訊。使用您自己的值取代每一個*範例值*。`-APIServerEndpoint`、`-Base64ClusterCA`，和 `-DNSClusterIP` 引數為選用。但是，定義引述會允許 `Start-EKSBootstrap.ps1` 指令碼避免進行 `describeCluster` 呼叫。
+ 唯一需要的引數是叢集名稱 (*my-cluster*)。
+ 若要擷取您的叢集的 *certificate-authority*，請執行下列命令。

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ 若要擷取您的叢集的 *api-server-endpoint*，請執行下列命令。

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ `--dns-cluster-ip` 的值是結尾處為 `.10` 的服務 CIDR。若要擷取您的叢集的 *service-cidr*，請執行下列命令。例如，如果傳回的值是 `ipv4 10.100.0.0/16`，則您的值是 *10.100.0.10*。

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ 如需其他引數，請參閱 [引導指令碼組態參數](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters)。
**注意**  
如果您使用的是自訂服務 CIDR，則需要使用 `-ServiceCIDR` 參數來對其進行指定。否則，叢集中 Pod 的 DNS 解析將會失敗。

```
<powershell>
[string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1"
& $EKSBootstrapScriptFile -EKSClusterName my-cluster `
	 -Base64ClusterCA certificate-authority `
	 -APIServerEndpoint api-server-endpoint `
	 -DNSClusterIP service-cidr.10
</powershell>
```

### 由於特定安全、合規或內部政策要求，執行自訂 AMI
<a name="mng-specify-custom-ami"></a>

如需詳細資訊，請參閱*《Amazon EC2 使用者指南》*中的 [Amazon Machine Images (AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)。Amazon EKS AMI 建置規範包含用於建置基於 Amazon Linux 的自訂 Amazon EKS AMI 的資源和組態指令碼。如需詳細資訊，請參閱 GitHub 上的 [Amazon EKS AMI 建置規範](https://github.com/awslabs/amazon-eks-ami/)。若要建置使用其他作業系統安裝的自訂 AMI，則請參閱 GitHub 上的 [Amazon EKS 樣本自訂 AMI](https://github.com/aws-samples/amazon-eks-custom-amis)。

在與受管節點群組搭配使用的啟動範本中，您無法使用 AMI ID 的動態參數參考。

**重要**  
指定 AMI 時，Amazon EKS 不會針對叢集的控制平面版本驗證 AMI 中內嵌的 Kubernetes 版本。您有責任確保自訂 AMI 的 Kubernetes 版本符合 [Kubernetes 版本扭曲政策](https://kubernetes.io/releases/version-skew-policy)：  
節點上的`kubelet`版本不得比叢集版本更新
節點上的`kubelet`版本必須等於或最多 3 個次要版本 （適用於 Kubernetes 版本 `1.28`或更高版本），或最多 2 個次要版本 （適用於 Kubernetes 版本 `1.27`或更低版本）  
建立具有版本扭曲違規的受管節點群組可能會導致：
節點無法加入叢集
未定義的行為或 API 不相容
叢集不穩定或工作負載失敗
指定 AMI 時，Amazon EKS 不會合併任何使用者資料。相反，您必須負責提供所需的 `bootstrap` 命令，讓節點加入叢集。如果節點無法加入叢集，則 Amazon EKS `CreateNodegroup` 和 `UpdateNodegroupVersion` 動作也會失敗。

## 指定 AMI ID 時的限制和條件
<a name="mng-ami-id-conditions"></a>

以下是使用受管節點群組指定 AMI ID 所涉及的限制和條件：
+ 您必須建立新的節點群組，才能在指定啟動範本的 AMI ID 與不指定 AMI ID 之間切換。
+ 有較新的 AMI 版本可用時，您不會在主控台中收到通知。若要將節點群組更新為較新的 AMI 版本，您需要使用更新的 AMI ID 來建立新版本的啟動範本。然後，您需要使用新的啟動範本版本更新節點群組。
+ 如果指定 AMI ID，則無法在 API 中設定下列欄位：
  +  `amiType` 
  +  `releaseVersion` 
  +  `version` 
+ 如果您指定 AMI ID，則 API 的任何 `taints` 集合都會以非同步方式套用。若要在節點加入叢集之前套用污點，您必須使用 `--register-with-taints` 命令列旗標將污點傳遞給使用者資料的 `kubelet`。如需詳細資訊，請參閱 Kubernetes 文件中的 [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)。
+ 為 Windows 受管節點群組指定自訂 AMI ID 時，請將 `eks:kube-proxy-windows`新增至您的 AWS IAM Authenticator 組態映射。必須要有這項，DNS 才能正常運作。

  1. 開啟 AWS IAM Authenticator 組態映射以進行編輯。

     ```
     kubectl edit -n kube-system cm aws-auth
     ```

  1. 將此項目新增至與 Windows 節點關聯的每個 `rolearn` 下的 `groups` 清單中。您的組態映射看起來應該類似於 [aws-auth-cm-windows.yaml](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml)。

     ```
     - eks:kube-proxy-windows
     ```

  1. 儲存檔案並結束您的文字編輯器。
+ 對於任何使用自訂啟動範本的 AMI，受管節點群組的預設 `HttpPutResponseHopLimit` 已設定為 `2`。

# 從您的叢集刪除受管節點群組
<a name="delete-managed-node-group"></a>

本主題會描述可以如何刪除 Amazon EKS 受管節點群組。刪除受管節點群組時，Amazon EKS 會先將 Auto Scaling 群組的最小、最大和所需大小設定為零。這就會讓節點群組縮減規模。

在每個執行個體終止之前，Amazon EKS 會傳送訊號以耗盡該節點。在耗盡過程中，Kubernetes 會對節點上的每個 Pod 執行下列動作： 執行任何設定的`preStop`生命週期掛鉤、將`SIGTERM`訊號傳送至容器，然後等待 `terminationGracePeriodSeconds`正常關閉。如果節點在 5 分鐘後尚未耗盡，Amazon EKS 可讓 Auto Scaling 繼續強制終止執行個體。終止所有執行個體後，會刪除 Auto Scaling 群組。

**重要**  
如果刪除使用節點 IAM 角色的受管節點群組，且角色未被叢集中任何其他受管節點群組使用，則此角色會從 `aws-auth` `ConfigMap` 移除。如果叢集中有任何自我管理節點群組使用相同的節點 IAM 角色，則自我管理節點會轉為 `NotReady` 狀態。此外，叢集操作也會中斷。若要僅針對自我管理節點群組新增您正在使用之角色的映射，請參閱 [建立存取項目](creating-access-entries.md)，前提是您的叢集的平台版本不低於[使用 EKS 存取項目授予 IAM 使用者 Kubernetes 的存取權](access-entries.md)部分中列出的最低版本。如果您的平台版本早於存取項目所需的最低版本，您可以將項目新增回 `aws-auth` `ConfigMap`。如需詳細資訊，請在您的終端機中輸入 `eksctl create iamidentitymapping --help`。

您可以透過以下方式刪除受管節點群組：
+  [`eksctl`](#eksctl-delete-managed-nodegroup) 
+  [AWS 管理主控台](#console-delete-managed-nodegroup) 
+  [AWS CLI](#awscli-delete-managed-nodegroup) 

## `eksctl`
<a name="eksctl-delete-managed-nodegroup"></a>

 **使用 `eksctl` 刪除受管節點群組** 

輸入以下命令。使用您自己的值取代每一個 `<example value>`。

```
eksctl delete nodegroup \
  --cluster <my-cluster> \
  --name <my-mng> \
  --region <region-code>
```

如需更多選項，請參閱 `eksctl` 文件中的[刪除和耗盡節點群組](https://eksctl.io/usage/nodegroups/#deleting-and-draining-nodegroups)。

## AWS 管理主控台
<a name="console-delete-managed-nodegroup"></a>

 **使用 AWS 管理主控台 刪除受管節點群組** 

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

1. 在**叢集**頁面上，選擇包含要刪除之節點群組的叢集。

1. 在所選叢集頁面上，選擇**運算**索引標籤。

1. 在 **Node Groups** (節點群組) 區段中，選擇要刪除的節點群組。然後選擇**刪除**。

1. 在**刪除節點群組**確認對話方塊中，輸入節點群組的名稱。然後選擇**刪除**。

## AWS CLI
<a name="awscli-delete-managed-nodegroup"></a>

 **使用 CLI AWS 刪除受管節點群組** 

1. 輸入以下命令。使用您自己的值取代每一個 `<example value>`。

   ```
   aws eks delete-nodegroup \
     --cluster-name <my-cluster> \
     --nodegroup-name <my-mng> \
     --region <region-code>
   ```

1. 如果在 CLI 組態中`cli_pager=`設定 ，請使用鍵盤上的方向鍵來捲動回應輸出。完成後按下 `q` 鍵。

   如需更多選項，請參閱 CLI ` [delete-nodegroup](https://docs.aws.amazon.com/cli/latest/reference/eks/delete-nodegroup.html) `命令參考中的 命令。 * AWS *