このページでは、Google Distributed Cloud ユーザー クラスタを削除する方法について説明します。ユーザー クラスタの削除では、クラスタをフリートから登録解除し、ワークロード、ノードプール、コントロール プレーン ノード、対応するリソース(VM、F5 パーティション、データディスクなど)を削除します。
クラスタを削除するツールを選択する
ユーザー クラスタを削除する方法は、クラスタが GKE On-Prem API に登録されているかどうかによって異なります。次のいずれかに該当する場合は、ユーザー クラスタが GKE On-Prem API に登録されています。
クラスタが、Google Cloud コンソール、Google Cloud CLI(gcloud CLI)、または Terraform を使用して作成されている場合、これらによりクラスタが GKE On-Prem API に自動的に登録されます。これらの標準アプリケーションを総称して GKE On-Prem API クライアントと呼びます。
クラスタは
gkectl
を使用して作成されましたが、GKE On-Prem API に登録されています。
クラスタが GKE On-Prem API に登録されている場合は、GKE On-Prem API クライアントを使用してクラスタを削除します。クラスタが GKE On-Prem API に登録されていない場合は、管理ワークステーションで gkectl
を使用してクラスタを削除します。
特定のプロジェクトの GKE On-Prem API に登録されているすべてのユーザー クラスタを確認するには、次のコマンドを実行します。
gcloud container vmware clusters list \ --project=PROJECT_ID \ --location=-
出力は次のようになります。
NAME LOCATION VERSION ADMIN_CLUSTER. STATE example-user-cluster-1a us-west1 1.30.0-gke.1930 example-admin-cluster-1 RUNNING
--location=-
に設定すると、すべてのリージョンのクラスタがすべて一覧取得されます。リストを絞り込む必要がある場合は、--location
を特定のリージョンに設定できます。
クラスタが表示された場合、そのクラスタは GKE On-Prem API に登録されています。プロジェクト オーナーでない場合、登録されたクラスタを削除するには、少なくともそのプロジェクトに対する Identity and Access Management ロール roles/gkeonprem.admin
が付与されている必要があります。このロールに含まれる権限の詳細については、IAM のドキュメントの GKE On-Prem API ロールをご覧ください。
ステートフル ワークロードを削除する
クラスタを削除する前に、kubectl delete
を実行してステートフル ワークロード、PVC、PV を削除します。
ユーザー クラスタを削除する
gkectl
gkectl
を使用すると、GKE On-Prem API に登録されていないクラスタを削除できます。組織のプロキシとファイアウォール ルールで、トラフィックが gkeonprem.googleapis.com
と gkeonprem.mtls.googleapis.com
(GKE On-Prem API のサービス名)に到達できるようにしている場合、gkectl
を使用できます。その後、登録済みクラスタを削除できます。
管理ワークステーションで次のコマンドを実行してクラスタを削除します。
gkectl delete cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster CLUSTER_NAME
ここで
ADMIN_CLUSTER_KUBECONFIG
は、管理クラスタの kubeconfig ファイルのパスです。CLUSTER_NAME
は、削除するユーザー クラスタの名前です。
削除が失敗し、次のようなメッセージが表示された場合:
Exit with error: ... failed to unenroll user cluster CLUSTER_NAME failed to create GKE On-Prem API client
クラスタは登録されていますが、gkectl
は GKE On-Prem API に到達できません。この場合、最も簡単な解決方法は GKE On-Prem API クライアントを使用してクラスタを削除することです。
ユーザー クラスタの削除が途中で失敗した場合は、--force
フラグを指定して gkectl
を実行すると、中間エラーを無視して削除を続行できます。
gkectl delete cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster CLUSTER_NAME \ --force
Seesaw がバンドルされたロードバランサを使用している場合は、ロードバランサを削除します。
コンソール
ユーザー クラスタが GKE On-Prem API によって管理されている場合は、次の手順でクラスタを削除します。
コンソールで、Google Kubernetes Engine クラスタの概要ページに移動します。
ユーザー クラスタが存在する Google Cloud プロジェクトを選択します。
クラスタのリストで、削除するクラスタを見つけます。[タイプ] が「外部」の場合は、クラスタが
gkectl
を使用して作成され、GKE On-Prem API に登録されていないことを示します。この場合は、[gkectl
] タブの手順に沿ってクラスタを削除します。[ステータス] 列のアイコンが問題を示している場合は、gcloud CLI タブの手順に沿ってクラスタを削除します。削除コマンドに
--ignore-errors
フラグを追加する必要があります。削除するクラスタの名前をクリックします。
[詳細] パネルで、ウィンドウの上部にある削除アイコン
をクリックします。確認のメッセージが表示されたら、クラスタの名前を入力して [確認] をクリックします。
gcloud CLI
ユーザー クラスタが GKE On-Prem API によって管理されている場合は、gcloud CLI がインストールされている PC で次のようにします。
コンポーネントを更新します。
gcloud components update
次のコマンドを使用してクラスタを削除します。
gcloud container vmware clusters delete USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
次のように置き換えます。
USER_CLUSTER_NAME
: 削除するユーザー クラスタの名前。PROJECT_ID
: 管理クラスタが登録されているプロジェクトの ID。LOCATION
: ユーザー クラスタに関連付けられた Google Cloud のロケーション。
--force
フラグを使用すると、ノードプールを持つクラスタを削除できます。--force
フラグを使用せずに、まず ノードプールを削除 してから、クラスタを削除する必要があります。--allow-missing
フラグは、標準の Google API フラグです。このフラグを指定すると、クラスタが見つからない場合にコマンドは成功を返します。コマンドから「
failed connecting to the cluster's control plane
」というテキストを含むエラーが返された場合は、管理クラスタ、Connect Agent、またはオンプレミス環境のいずれかに接続の問題があることを示しています。たとえば、ネットワークの問題など、接続の問題が一時的なものである場合は、しばらく待ってからコマンドを再試行します。
コマンドの再試行が引き続き失敗する場合は、Connect Agent のログの収集を参照して、Connect Agent に関する問題のトラブルシューティングを行ってください。
管理クラスタが削除されたことが明らかで、管理クラスタかユーザー クラスタの VM がシャットダウンされたか、アクセスできない場合は、
--ignore-errors
フラグを指定してコマンドを再試行します。
他のフラグの詳細については、gcloud CLI リファレンスをご覧ください。
リソースのクリーンアップ
クラスタの削除で問題が発生した場合は、一部の F5 または vSphere のリソースが残存する可能性があります。以下のセクションでは、こうした残されたリソースをクリーンアップする方法について説明します。
vSphere でユーザー クラスタの VM をクリーンアップする
ユーザー クラスタの VM が削除されたことを確認するには、次の操作を行います。
vSphere Web Client の左側の [ナビゲータ] メニューで、[ホストとクラスタ] メニューをクリックします。
管理クラスタのリソースプールを見つけます。これは、管理クラスタ構成ファイルの
vCenter.resourcePool
の値です。リソースプールで、名前の先頭にユーザー クラスタ名が付けられた VM を見つけます。これらはユーザー クラスタのコントロール プレーン ノードです。ユーザー クラスタに高可用性コントロール プレーンがあるかどうかによって、1 つまたは 3 つ作成されます。
ユーザー クラスタのリソースプールを探します。これは、ユーザー クラスタ構成ファイルの
vCenter.resourcePool
の値です。ユーザー クラスタの構成ファイルでリソースプールが指定されていない場合は、管理クラスタから継承されます。リソースプールで、ユーザー クラスタ内のノードプールの名前が接頭辞として使用されている VM を見つけます。これらはユーザー クラスタ内のワーカーノードです。
それぞれのコントロール プレーンノードとワーカーノードに対して以下の操作を行います。
vSphere Web Client で、VM を右クリックして [Power] > [Power Off] を選択します。
VM の電源が切れたら、VM を右クリックして、[Delete from Disk] を選択します。
ユーザー クラスタの F5 パーティションをクリーンアップする
ユーザー クラスタのパーティションにエントリが残っている場合は、次の操作を行います。
- F5 BIG-IP コンソールの右上で、クリーンアップするユーザー クラスタ パーティションに切り替えます。
- [Local Traffic] > [Virtual Servers] > [Virtual Server List] の順に選択します。
- [Virtual Servers] メニューで、すべての仮想 IP を削除します。
- [Pools] を選択し、すべてのプールを削除します。
- [Nodes] を選択し、すべてのノードを削除します。
完了後
クラスタが削除された後は、ユーザー クラスタの kubeconfig を削除できます。