クラスターの作成が失敗した際に、eksctl を使用せずに EKS Anywhere のリソースをクリーンアップする方法を教えてください。

所要時間2分
0

Amazon Elastic Kubernetes サービス (Amazon EKS) Anywhere クラスターは作成プロセスに失敗しました。eksctlを使用できないため、リソースを手動でクリーンアップしたいです。

簡単な説明

EKS Anywhere クラスターを作成すると、管理マシンにブートストラップクラスターも作成されます。このブートストラップクラスターは Kubernetes in Docker (KinD) クラスターで、これを使用すると EKS Anywhere クラスターを簡単に作成できます。この KinD クラスターをクリーンアップするには、KinD コンテナを停止して KinD コンテナイメージを削除します。

その他のプロバイダーの場合は、コントロールプレーンとノードの仮想マシン (VM) で追加の手順を実行する必要があります。

解決策

管理マシンのリソースをクリーンアップする (Docker 用)

失敗したクラスターの作成から不要なリソースをすべてクリーンアップするには、すべてのユースケースで次のスクリプトを使用します。

kind delete cluster コマンドを使用するには KinD のインストールが必要なため、このスクリプトではコマンドを使用しません。代わりに、EKS Anywhere では一時コンテナの KinD バイナリを使用してクラスターがセットアップされます:

EKSA_CLUSTER_NAME="YOUR_CLUSTER_NAME"
# Clean up KIND Cluster Containers  
kind_container_ids=$(docker ps -a | grep "${EKSA_CLUSTER_NAME}" | awk -F ' ' '{print $1}')  
for container_id in $kind_container_ids; do echo "deleting container with id ${container_id}"; docker rm -f ${container_id}; done

# Clean up EKS-A tools Containers  
tools_container_ids=$(docker ps -a | grep "public.ecr.aws/eks-anywhere/cli-tools" | awk -F ' ' '{print $1}')  
for container_id in $tools_container_ids; do echo "deleting container with id ${container_id}"; docker rm -f ${container_id}; done  

# Delete All EKS-Anywhere Images  
image_ids=$(docker image ls | grep "public.ecr.aws/eks-anywhere/" | awk -F ' ' '{print $3}')  
for image_id in $image_ids; do echo "deleting image with id ${image_id}"; docker image rm ${image_id}; done

# Delete Auto-generated Cluster Folder  
rm $EKSA_CLUSTER_NAME -rf

注: YOUR_CLUSTER_NAME を EKS Anywhere のクラスター名に置き換えてください。

ベアメタル、Nutanix、CloudStack、vSphere の仮想マシン上のリソースをクリーンアップする

作成プロセス中に仮想マシンが作成され、その作成が失敗した場合は、それらの VM を手動でクリーンアップする必要があります。

別の管理クラスターを使用して EKS Anywhere クラスターを作成および管理する場合は、以下の管理クラスターを使用するクラスター セクションを参照してください。EKS Anywhere クラスターが個別の管理クラスターをサポートしていない場合は、以下の管理クラスターを使用しないクラスター セクションを参照してください。

管理クラスターを使用しないクラスター

個別の管理クラスターを使用しないクラスターの場合、すべてのワーカーノード、etcd VM および API サーバーの電源をオフにして削除します。

**注:**クラスター名は通常、Nutanix、CloudStack、vSphere のクラスターに関連付けられている仮想マシンの名前にプレフィックスとして含まれます。

ベアメタルのクラスターの場合は、ターゲットマシンの電源をオフにして削除します。

管理クラスターを使用するクラスター

管理クラスターを使用する場合、個別のクラスターがワークロードクラスターの状態を監視します。ワークロードクラスターに含まれるマシンの電源がオフになると、管理クラスターによりヘルスの問題が検出されます。その後、新しい仮想マシンが起動され、ワークロードクラスターが目的の状態に戻ります。

そのため、個別の管理クラスターを使用するクラスターをクリーンアップするには、ワークロードクラスターを表すカスタムリソース (CRD) を削除します。これにより、ワークロードクラスターのすべての仮想マシンが削除されます。

**注:**次のコマンドで、WORKLOAD\ _CLUSTER\ _NAME をご使用のワークロードクラスターの名前に置き換えます。MANAGEMENT_CLUSTER_FOLDER を EKS Anywhere 管理フォルダーに置き換えます。MANAGEMENT_CLUSTER_KUBECONFIG_FILEを、管理クラスターの kubeconfig ファイルの kubeconfig ファイルに置き換えます。kubeconfig ファイルは、MANAGEMENT_CLUSTER_FOLDER にあります。

ワークロードクラスターの Cluster API リソースを削除します:

kubectl delete clusters.cluster.x-k8s.io -n eksa-system WORKLOAD_CLUSTER_NAME --kubeconfig MANAGEMENT_CLUSTER_FOLDER/MANAGEMENT_CLUSTER_KUBECONFIG_FILE

リソースが存在する場合は、クラスターの clusters.anywhere.eks.amazonaws.com リソースを削除します。

kubectl delete clusters.anywhere.eks.amazonaws.com WORKLOAD_CLUSTER_NAME --kubeconfig MANAGEMENT_CLUSTER_FOLDER/MANAGEMENT_CLUSTER_KUBECONFIG_FILE

注: clusters.anywhere.eks.amazonaws.com リソースがプロビジョニングされる前にクラスターの作成が失敗した場合、次のエラーが表示されます:

「サーバからのエラー(NotFound):clusters.anywhere.eks.amazonaws.com "WORKLOAD_CLUSTER_NAME" が見つかりません」

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ