

 **協助改進此頁面** 

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

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

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

# 刪除叢集
<a name="delete-cluster"></a>

當您完成使用 Amazon EKS 叢集後，應刪除與之相關聯的資源，才不會產生任何不必要的成本。

您可以使用 `eksctl`、 AWS 管理主控台或 CLI AWS 刪除叢集。

## 考量事項
<a name="_considerations"></a>
+ 如果由於已移除叢集建立者而收到錯誤，請參閱[此篇文章](https://aws.amazon.com/premiumsupport/knowledge-center/eks-api-server-unauthorized-error)來解決問題。
+ 叢集生命週期不包括適用於 Prometheus 的 Amazon Managed Service 資源，需要獨立於叢集進行維護。刪除叢集後，確認亦同時刪除任何適用的湊集器，以免產生適用的費用。如需詳細資訊，請參閱 *Amazon Managed Service for Prometheus 使用者指南*中的[尋找及刪除湊集器](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-list-delete)。
+ 若要移除連接的叢集，請參閱 [從 Amazon EKS 主控台取消註冊 Kubernetes 叢集](deregister-connected-cluster.md) 
+ 在您可以刪除叢集之前，請確定您的叢集已停用刪除保護。

### EKS 自動模式的考量事項
<a name="_considerations_for_eks_auto_mode"></a>
+ 將刪除任何 EKS 自動模式節點，包括 EC2 受管執行個體
+ 將刪除所有負載平衡器

如需詳細資訊，請參閱[停用 EKS 自動模式](auto-disable.md)。

## 先決條件步驟
<a name="prerequisite-steps"></a>

以下是您必須先執行的步驟，才能刪除叢集。無論您用來刪除叢集的方法為何，這些步驟都適用。

1. 列出所有在叢集中執行的服務。

   ```
   kubectl get svc --all-namespaces
   ```

1. 刪除任何與 `EXTERNAL-IP` 值相關的服務。這些服務都是由 Elastic Load Balancing 負載平衡器所朝向的，且您必須在 Kubernetes 中刪除它們，以允許負載平衡器與相關資源可正確釋出。將 *service-name* 取代為如上所述列出的每個服務的名稱。

   ```
   kubectl delete svc service-name
   ```

1. 同時刪除任何輸入資源。如果您不刪除傳入資源，即使您刪除叢集，應用程式負載平衡器仍會保留。將 *inress-name* 取代為您的輸入資源名稱。

   ```
   kubectl get ingress --all-namespaces
   ```

   ```
   kubectl delete ing ingress-name
   ```

## 刪除叢集 (eksctl)
<a name="_delete_cluster_eksctl"></a>

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

```
eksctl version
```

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

1. 完成[先決條件步驟](#prerequisite-steps)。執行此操作後，請使用下列命令刪除叢集及其相關聯的節點，將 *prod* 取代為您的叢集名稱。

   ```
   eksctl delete cluster --name prod
   ```

   輸出：

   ```
   [ℹ]  using region region-code
   [ℹ]  deleting EKS cluster "prod"
   [ℹ]  will delete stack "eksctl-prod-nodegroup-standard-nodes"
   [ℹ]  waiting for stack "eksctl-prod-nodegroup-standard-nodes" to get deleted
   [ℹ]  will delete stack "eksctl-prod-cluster"
   [✔]  the following EKS cluster resource(s) for "prod" will be deleted: cluster. If in doubt, check CloudFormation console
   ```

## 刪除叢集AWS （主控台）
<a name="delete_cluster_shared_aws_console"></a>

1. 完成[先決條件步驟](#prerequisite-steps)。執行此操作後，請刪除所有節點群組和 Fargate 設定檔。

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

   1. 在左側導覽窗格中，選擇 Amazon EKS **Clusters** (叢集)，然後在叢集的標籤式清單中，選擇您要刪除的叢集名稱。

   1. 選擇 **Compute** (運算) 索引標籤，然後選取要刪除的節點群組。選擇 **Delete** (刪除)，輸入節點群組的名稱，然後選擇 **Delete** (刪除)。刪除叢集中的所有節點群組。
**注意**  
列出的節點群組僅為[受管節點群組](managed-node-groups.md)。

   1. 選擇要刪除的 **Fargate Profile** (Fargate 描述檔)，選取 **Delete** (刪除)，輸入描述檔的名稱，然後選擇 **Delete** (刪除)。刪除叢集中的所有 Fargate 描述檔。

1. 刪除所有[自我管理的 node AWS CloudFormation 堆疊](https://docs.aws.amazon.com/eks/latest/userguide/worker)。

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

   1. 選擇要刪除的節點堆疊，然後選擇 **Delete** (刪除)。

   1. 在 **Delete stack** (刪除堆疊) 確認對話方塊中，選擇 **Delete stack** (刪除堆疊)。刪除叢集中的所有自我管理節點堆疊。

1. 刪除叢集。

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

   1. 選擇要刪除的叢集並選擇 **Delete (刪除)**。

   1. 在刪除叢集確認畫面上，選擇 **Delete (刪除)**。

1. （選用） 刪除 VPC AWS CloudFormation 堆疊。

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

   1. 選取要刪除的 VPC 堆疊，然後選擇 **Delete** (刪除)。

   1. 在 **Delete stack** (s刪除堆疊) 確認對話方塊中，選擇 **Delete stack** (刪除堆疊)。

## 刪除叢集 (AWS CLI)
<a name="delete_cluster_shared_aws_cli"></a>

1. 完成[先決條件步驟](#prerequisite-steps)。執行此操作後，請刪除所有節點群組和 Fargate 設定檔。

   1. 使用下列命令列出叢集中的節點群組。

      ```
      aws eks list-nodegroups --cluster-name my-cluster
      ```
**注意**  
列出的節點群組僅為[受管節點群組](managed-node-groups.md)。

   1. 使用下列命令來刪除每個節點群組。刪除叢集中的所有節點群組。

      ```
      aws eks delete-nodegroup --nodegroup-name my-nodegroup --cluster-name my-cluster
      ```

   1. 使用下列命令列出您叢集中的 Fargate 描述檔。

      ```
      aws eks list-fargate-profiles --cluster-name my-cluster
      ```

   1. 使用下列命令來刪除每個 Fargate 描述檔。刪除叢集中的所有 Fargate 描述檔。

      ```
      aws eks delete-fargate-profile --fargate-profile-name my-fargate-profile --cluster-name my-cluster
      ```

1. 刪除所有[自我管理的 node AWS CloudFormation 堆疊](https://docs.aws.amazon.com/eks/latest/userguide/worker)。

   1. 使用下列命令列出您的可用 AWS CloudFormation 堆疊。在產生輸出中尋找節點範本名稱。

      ```
      aws cloudformation list-stacks --query "StackSummaries[].StackName"
      ```

   1. 使用以下命令，將 *node-stack* 取代為您節點堆疊的名稱，來刪除工作節點堆疊。刪除叢集中的所有自我管理節點堆疊。

      ```
      aws cloudformation delete-stack --stack-name node-stack
      ```

1. 使用以下命令，將 *my-cluster* 替換為您的叢集名稱以刪除叢集。

   ```
   aws eks delete-cluster --name my-cluster
   ```

1. （選用） 刪除 VPC AWS CloudFormation 堆疊。

   1. 使用下列命令列出您的可用 AWS CloudFormation 堆疊。在產生輸出中尋找 VPC 範本名稱。

      ```
      aws cloudformation list-stacks --query "StackSummaries[].StackName"
      ```

   1. 使用以下命令，將 *my-vpc-stack* 替換為您的 VPC 堆疊名稱以刪除 VPC 堆疊。

      ```
      aws cloudformation delete-stack --stack-name my-vpc-stack
      ```

# 避免 EKS 叢集遭到意外刪除
<a name="deletion-protection"></a>

意外刪除 EKS 叢集可能會影響 Kubernetes 叢集運作。

現在可以避免 EKS 叢集遭到意外刪除。如果您在叢集上啟用了刪除保護，必須先停用刪除保護，才能刪除叢集。

刪除保護的目的是防止意外發生。您應謹慎限制授權刪除叢集的人員。

如果您嘗試刪除已啟用刪除保護的作用中叢集，您將收到 `InvalidRequestException`。

**重要**  
如果您在叢集上啟用刪除保護，您必須**同時**擁有 UpdateClusterConfig 和 DeleteCluster IAM 許可，方能先移除刪除保護，最後刪除叢集。

**注意**  
如果叢集狀態為建立中、失敗或刪除中，即使啟用了刪除保護，您也可以刪除叢集。

## 對現有叢集啟用刪除保護
<a name="_to_enable_deletion_protection_for_an_existing_cluster"></a>

您只能在狀態為作用中的叢集上執行此操作。

```
aws eks update-cluster-config --name <cluster-name> --region <aws-region> --deletion-protection
```

## 停用現有叢集的刪除保護
<a name="_to_disable_deletion_protection_for_an_existing_cluster"></a>

```
aws eks update-cluster-config --name <cluster-name> --region <aws-region> --no-deletion-protection
```