

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# クラスターを削除
<a name="delete-cluster"></a>

Amazon EKS クラスターの使用が終了したら、関連付けられたリソースを削除して、不要なコストが発生しないようにする必要があります。

`eksctl`、AWS マネジメントコンソール、またはAWS CLI を使用してクラスターを削除できます。

## 考慮事項
<a name="_considerations"></a>
+ クラスター作成者が削除されたためにエラーが発生した場合は、[この記事](https://aws.amazon.com/premiumsupport/knowledge-center/eks-api-server-unauthorized-error)を参照して解決してください。
+ Amazon Managed Service for Prometheus リソースはクラスターのライフサイクル外にあるため、クラスターとは別途維持する必要があります。クラスターを削除するときは、対象コストを抑えるために、該当するスクレイパーも削除してください。詳細については、「*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 Auto Mode に関する考慮事項
<a name="_considerations_for_eks_auto_mode"></a>
+ EC2 マネージドインスタンスを含む、すべての EKS Auto Mode ノードが削除されます
+ すべてのロードバランサーが削除されます

詳細については、「[EKS 自動モードl を無効にする](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. Ingress リソースも削除します。Ingress リソースを削除しない場合、クラスターを削除しても Application Load Balancer は残ります。*ingress-name* をお使いの Ingress リソースの名前に置き換えます。

   ```
   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` ドキュメントの「[インストール](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 **[クラスター]** を選択し、クラスターのタブ付きリストから、削除するクラスター名を選択します。

   1. **[コンピューティング]** タブを選択し、削除するノードグループを選択します。**[削除]** を選択し、ノードグループの名前を入力し、**[削除]** を選択します。クラスター内のすべてのノードグループを削除します。
**注記**  
ここでリストに表示されるノードグループは、[マネージド型ノードグループ](managed-node-groups.md)のみです。

   1. 削除する **[Fargate プロファイル]** を選択し、**[削除]** を選択し、プロファイルの名前を入力した上で **[削除]** を選択します。クラスター内のすべてのFargate プロファイルを削除します。

1. すべての[セルフマネージド型ノードの AWS CloudFormation スタック](https://docs.aws.amazon.com/eks/latest/userguide/worker)を削除します。

   1. [AWS CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

   1. 削除するノードスタックを選択し、**[削除]** を選択します。

   1. **[スタックの削除]** 確認ダイアログボックスで、**[スタックを削除]** をクリックします。クラスター内のすべてのセルフマネージド型ノードスタックを削除します。

1. クラスターを削除します。

   1. [Amazon EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters)を開きます。

   1. 削除するクラスターを選択し、**[削除]** を選択します。

   1. クラスターの削除確認画面で、**[削除]** を選択します。

1. (オプション) VPC AWS CloudFormation スタックを削除します。

   1. [AWS CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

   1. 削除する VPC スタックを選択し、**[削除]** をクリックします。

   1. **[スタックの削除]** 確認ダイアログボックスで、**[スタックを削除]** をクリックします。

## クラスターを削除する (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. すべての[セルフマネージド型ノードの 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. 以下のコマンドを使用して、VPC スタックを削除します。*my-vpc-stack* は実際の 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
```