GKE on Bare Metal クラスタをインストールすると、そのクラスタをホストしているノードにバイナリ サービスと systemd サービスがインストールされ、サービスによるノード上のポートのリッスンが開始されます。
ただし、クラスタのインストールが失敗した場合は、これらのバイナリとサービスをすべて削除する必要があります。つまり、クラスタのインストールを再試行できるように、ノードをリセットするか、完全にワイプする必要があります。この方法でノードがリセットされなければ、次にクラスタのインストールを試行するときに失敗します。
このページでは、この特定のノードのクリーンアップ オペレーションを実施する方法と、クラスタを削除する方法について説明します。
削除方法の選択
クラスタの削除に使用する方法は、次の条件によって異なります。
- クラスタの種類。
- クラスタ全体を削除するのではなく特定のノードのみをクリーンアップする場合。
- クラスタが作成された方法。
GKE on Bare Metal には、次の削除方法があります。
Google Cloud コンソールまたは Google Cloud CLI:
GKE On-Prem API で管理されるユーザー クラスタを削除するには、Google Cloud コンソールまたは gcloud CLI を使用します。次のいずれかに該当する場合は、ユーザー クラスタが GKE On-Prem API によって管理されています。
クラスタは Google Cloud コンソールまたは gcloud CLI で作成されたため、クラスタを管理するように GKE On-Prem API が自動的に構成されている。
クラスタは
bmctl
を使用して作成されているものの、GKE On-Prem API で管理されるように構成されている。
bmctl
:bmctl reset nodes
を使用して特定のノードをリセットします。bmctl reset
を使用して、次のクラスタタイプを削除します。- 管理クラスタ、ハイブリッド クラスタ、スタンドアロン クラスタ(セルフマネージド クラスタと呼ばれます)。これには、GKE On-Prem API で管理される管理クラスタが含まれます。
- GKE On-Prem API で管理されていないユーザー クラスタ。
bmctl
を使用してノードをリセットする場合やクラスタを削除する場合、このコマンドはクラスタ構成ファイルが現在の作業ディレクトリにあることを想定しています。デフォルトでは、パスは次のようになります。bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml
クラスタの作成時に
--workspace-dir
フラグを使用して別のディレクトリを指定した場合は、クラスタのリセット時にそのフラグを使用して、その作業ディレクトリを指定する必要があります。kubectl
:- GKE On-Prem API クラスタで管理されていないユーザー クラスタのみを削除するには、
kubectl delete cluster
を使用します。他のクラスタタイプでは、このコマンドを実行しないでください。 - なお、
kubectl delete cluster
を使用する場合、クラスタを削除した後は、クラスタが存在している名前空間も削除する必要があります。
- GKE On-Prem API クラスタで管理されていないユーザー クラスタのみを削除するには、
クラスタを削除し、必要な構成の変更を行ったら、クラスタを再インストールできます。
セルフマネージド クラスタの削除
管理クラスタ、ハイブリッド クラスタ、またはスタンドアロン クラスタを削除するには、次のコマンドを実行します。
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
このコマンドは、クラスタを削除するだけでなく、クラスタ メンバーもフリートから削除します。
GKE On-Prem API で管理される管理クラスタの場合は、Google Cloud にある API のリソースも削除する必要があります。そうしないと、そのクラスタが、Google Cloud コンソールの [GKE クラスタ] ページに表示されます。管理クラスタの GKE On-Prem API リソースは、次のコマンドを使用して削除します。
gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --ignore-errors
以下を置き換えます。
FLEET_HOST_PROJECT_ID
: 管理クラスタがメンバーであったフリートのプロジェクト ID。REGION
: GKE On-Prem API がクラスタ メタデータを保存する Google Cloud リージョン。
--ignore-errors
フラグを使用すると、ベアメタルの管理クラスタ リソースの登録解除中にエラーが発生した場合でも、登録解除は成功します。
クラスタの削除が完了したら、新しいクラスタを作成できます。さらに詳しい内容については、クラスタ作成の概要をご覧ください。
ユーザー クラスタの削除
ユーザー クラスタが GKE On-Prem API によって管理されている場合は、コンソールまたは gcloud CLI を使用してクラスタを削除します。それ以外の場合は、bmctl
か kubectl
を使用してクラスタを削除します。
bmctl
bmctl
または kubectl
で作成された、GKE 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
で作成された、GKE 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
コンソール
ユーザー クラスタが GKE On-Prem API によって管理されている場合は、次の手順でクラスタを削除します。
コンソールで、Google Kubernetes Engine クラスタの概要ページに移動します。
ユーザー クラスタが存在する Google Cloud プロジェクトを選択します。
クラスタのリストで、削除するクラスタをクリックします。
クラスタのリストで、削除するクラスタを見つけます。[種類] が [外部] の場合は、クラスタが
bmctl
を使用して作成され、GKE On-Prem API に登録されていないことを示します。この場合は、[bmctl
] タブまたは [kubectl
] タブの手順に沿ってクラスタを削除します。[ステータス] 列のアイコンが問題を示している場合は、[gcloud CLI] タブの手順に沿ってクラスタを削除します。削除コマンドに
--ignore-errors
フラグを追加する必要があります。削除するクラスタの名前をクリックします。
[詳細] パネルで、ウィンドウの上部にある
[削除] をクリックします。確認のメッセージが表示されたら、クラスタの名前を入力して [削除] をクリックします。
gcloud CLI
ユーザー クラスタが GKE 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.15.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
を使用して削除され、GKE On-Prem API リソースが Google Cloud に残っている場合は、--ignore-errors
を含める必要があります。そのような場合は、コンソールの [GKE クラスタ] ページに、クラスタが異常な状態で表示され続ける現象が見られます。
他のフラグの詳細については、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
の構成ファイルが削除されます。