Google Distributed Cloud Virtual for Bare Metal クラスタのインストール中に、そのクラスタをホストするノードにバイナリと systemd サービスがインストールされ、それらのサービスがノード上のポートでリッスンを開始します。
ただし、クラスタのインストールが失敗した場合は、これらのバイナリとサービスをすべて削除する必要があります。つまり、クラスタのインストールを再試行できるように、ノードをリセットするか、完全にワイプする必要があります。この方法でノードがリセットされなければ、次にクラスタのインストールを試行するときに失敗します。
このページでは、この特定のノードのクリーンアップ オペレーションを実施する方法と、クラスタを削除する方法について説明します。
削除方法の選択
クラスタの削除に使用する方法は、次の条件によって異なります。
- クラスタの種類。
- クラスタ全体を削除するのではなく特定のノードのみをクリーンアップする場合。
- クラスタが作成された方法。
GKE on Bare Metal には、次の削除方法があります。
Google Cloud コンソールまたは Google Cloud CLI:
コンソールまたは gcloud CLI を使用して、Anthos On-Prem API によって管理されているユーザー クラスタを削除します。次のいずれかに該当する場合は、ユーザー クラスタが Anthos On-Prem API によって管理されています。
クラスタは、Google Cloud コンソールまたは gcloud CLI で作成されたため、クラスタを管理するように Anthos On-Prem API が自動的に構成されている。
クラスタが
bmctl
を使用して作成されたものの、Anthos On-Prem API で管理されるように構成されている。
bmctl
:bmctl reset nodes
を使用して特定のノードをリセットします。bmctl reset
を使用して、Anthos On-Prem API で管理されていない管理クラスタ、ハイブリッド クラスタ、スタンドアロン クラスタ、ユーザー クラスタを削除します。
bmctl
を使用してノードをリセットする場合、またはクラスタを削除する場合、このコマンドではクラスタ構成ファイルが現在の作業ディレクトリにあることを想定しています。デフォルトでは、パスは次のようになります。bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml
クラスタの作成時に
--workspace-dir
フラグを使用して別のディレクトリを指定した場合は、クラスタのリセット時にそのフラグを使用して、その作業ディレクトリを指定する必要があります。kubectl
:kubectl delete cluster
を使用して、Anthos On-Prem API クラスタで管理されていないユーザー クラスタのみを削除します。他のクラスタタイプでは、このコマンドを実行しないでください。- なお、
kubectl delete cluster
を使用する場合、クラスタを削除した後は、クラスタが存在している名前空間も削除する必要があります。
クラスタを削除し、必要な構成の変更を行ったら、クラスタを再インストールできます。
セルフマネージド クラスタの削除
管理クラスタ、ハイブリッド クラスタ、またはスタンドアロン クラスタを削除するには、次のコマンドを実行します。
bmctl reset --cluster CLUSTER_NAME
このコマンドの CLUSTER_NAME
は、リセットするクラスタの名前に置き換えます。
bmctl cluster reset
コマンドからの出力は、次のサンプルのようになります。
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
クラスタの削除が完了したら、新しいクラスタを作成できます。さらに詳しい内容については、クラスタ作成の概要をご覧ください。
ユーザー クラスタの削除
ユーザー クラスタが Anthos On-Prem API によって管理されている場合は、コンソールまたは gcloud CLI を使用してクラスタを削除します。それ以外の場合は、bmctl
または kubectl
を使用してクラスタを削除します。
bmctl
bmctl
または kubectl
で作成された、Anthos On-Prem API に登録されていないユーザー クラスタは、bmctl
を使用して削除できます。
bmctl
でユーザー クラスタを削除するには、次のコマンドを実行します。
bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
このコマンド内で、次のエントリをクラスタ環境に固有の情報に置き換えます。
USER_CLUSTER_NAME
: 削除するユーザー クラスタの名前。ADMIN_KUBECONFIG_PATH
: 関連する管理クラスタのkubeconfig
ファイルへのパス。bmctl
では、--admin-kubeconfig
フラグのエイリアスとして--kubeconfig
の使用がサポートされます。
bmctl cluster reset
コマンドからの出力は、次のサンプルのようになります。
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
kubectl
bmctl
または kubectl
で作成された、Anthos On-Prem API に登録されていないユーザー クラスタは、kubectl
を使用して削除できます。kubectl
を使用してユーザー クラスタを削除するには、まずクラスタ オブジェクトを削除してから、名前空間を削除する必要があります。そうしないと、マシンをリセットするためのジョブを作成できなくなり、削除プロセスが停止し続ける可能性があります。
kubectl
でユーザー クラスタを削除するには:
次のコマンドを実行して、クラスタ オブジェクトを削除します。
kubectl delete cluster USER_CLUSTER_NAME -n USER_CLUSTER_NAMESPACE \ --kubeconfig ADMIN_KUBECONFIG_PATH
このコマンド内で、次のエントリをクラスタ環境に固有の情報に置き換えます。
USER_CLUSTER_NAME
: 削除するユーザー クラスタの名前。USER_CLUSTER_NAMESPACE
: クラスタの名前空間。デフォルトでは GKE on Bare Metal のクラスタ名前空間は、先頭にcluster-
が付いたクラスタの名前です。たとえば、クラスタにtest
という名前を付けると、名前空間の名前はcluster-test
のようになります。ADMIN_KUBECONFIG_PATH
: 関連する管理クラスタのkubeconfig
ファイルへのパス。
クラスタが正常に削除されたら、次のコマンドを実行して名前空間を削除します。
kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
コンソール
ユーザー クラスタが Anthos On-Prem API によって管理されている場合は、次の手順でクラスタを削除します。
コンソールで [GKE Enterprise クラスタ] ページに移動します。
ユーザー クラスタが存在する Google Cloud プロジェクトを選択します。
クラスタのリストで、削除するクラスタをクリックします。
[詳細] パネルで、[タイプ] が [Anthos(ベアメタル: ユーザー)] の場合は、次の手順に沿ってクラスタを削除します。
[詳細] パネルで、[詳細を表示] をクリックします。
ウィンドウの上部にある
[削除] をクリックします。確認のメッセージが表示されたら、もう一度 [削除] をクリックします。
[種類] が [外部] の場合は、クラスタがコマンドライン ツールを使用して作成され、Anthos On-Prem API で管理されていないことを示します。この場合は、
bmctl
またはkubectl
を使用してクラスタを削除します。
gcloud CLI
ユーザー クラスタが Anthos On-Prem API によって管理されている場合は、gcloud CLI がインストールされている PC で、次の手順に沿ってクラスタを削除します。
自分の Google アカウントでログインします。
gcloud auth login
コンポーネントを更新します。
gcloud components update
クラスタのリストを取得して、削除コマンドで正しいクラスタ名が指定されていることを確認します。
gcloud container bare-metal clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
以下を置き換えます。
FLEET_HOST_PROJECT_ID
: クラスタが作成されたプロジェクトの ID。LOCATION
: ユーザー クラスタに関連付けられた Google Cloud のロケーション。
出力は次のようになります。
NAME LOCATION VERSION ADMIN_CLUSTER STATE example-user-cluster-1a us-west1 1.14.11 example-admin-cluster-1 RUNNING
次のコマンドを実行してクラスタを削除します。
gcloud container bare-metal clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
以下を置き換えます。
USER_CLUSTER_NAME
: 削除するユーザー クラスタの名前。FLEET_HOST_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 のログの収集をご覧ください。たとえば、ネットワークの問題など、接続の問題が一時的なものである場合は、しばらく待ってからコマンドを再試行します。
管理クラスタが削除されたことがわかっている場合、あるいは管理者またはユーザー クラスタのノードマシンがシャットダウンまたはオフラインになった場合「は、
--ignore-errors
フラグを指定してコマンドを再試行します。また、クラスタが
bmctl
またはkubectl
を使用して削除され、Anthos On-Prem API リソースが Google Cloud に残っている場合は、--ignore-errors
を含める必要があります。そのような場合は、Google Cloud コンソールの [Anthos クラスタ] ページに、クラスタが異常な状態で表示され続ける現象が見られます。
他のフラグの詳細については、gcloud CLI リファレンスをご覧ください。
特定のクラスタノードをリセットする
クラスタの特定のノードをリセットする必要が生じる場合があります。たとえば、管理クラスタが削除されても、その管理クラスタで管理されているユーザー クラスタが残っている場合などです。この場合、管理クラスタは削除されているため、ユーザー クラスタ全体を削除できません。そのため、ユーザー クラスタのノードは個別にリセットする必要があります。
ノードをリセットするには、Google Container Registry(GCR)への読み取りアクセス権を持つサービス アカウントが必要です。bmctl
コマンドは、このサービス アカウントの JSON キーファイルを引数と想定しています。クラスタの個々のノードをリセットするには、次のコマンドを実行します。
bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \ --ssh-private-key-path SSH_KEY_PATH \ --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \ --login-user root
このコマンド内で、次のエントリをクラスタ環境に固有の情報に置き換えます。
NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS
: 削除するノードの IP アドレスのカンマ区切りリスト。SSH_KEY_PATH
: SSH 秘密鍵のパス。 これは、リセットの際にノードとの SSH 接続を確立するための鍵です。SERVICE_ACCOUNT_KEY_PATH
: サービス アカウント キーを含む JSON ファイルへのパス。このキーにより、bmctl
に Google Container Registry からイメージを pull する権限が付与されます。サービス アカウント キーは、コンソールまたは gcloud CLI を使用して作成できます。詳細については、サービス アカウント キーの作成と管理をご覧ください。サービス アカウント キーファイルを作成するもう 1 つの方法は、--create-service-accounts
フラグを指定してcreate config
コマンドを実行する方法です。このコマンドの詳細については、bmctl を使用したクラスタ構成の作成と管理をご覧ください。
クラスタ削除の詳細
削除の際に、クラスタのフリート メンバーシップ登録、ストレージ マウント、anthos-system StorageClass
のデータが削除されます。
すべてのノードで、クラスタ ネットワーキングに使用されているトンネル インターフェースが削除され、次のディレクトリが削除されます。
/etc/kubernetes
/etc/cni/net.d
/root/.kube
/var/lib/kubelet
ロードバランサ ノードの場合:
keepalived
サービスとhaproxy
サービスが削除されます。keepalived
とhaproxy
の構成ファイルが削除されます。