ノードのリセットとクラスタの削除

Anthos on bare metal をインストールすると、そのクラスタをホストしているノードにバイナリ サービスと systemd サービスがインストールされ、サービスによるノード上のポートのリッスンが開始されます。

ただし、クラスタのインストールが失敗した場合は、これらのバイナリとサービスをすべて削除する必要があります。つまり、クラスタのインストールを再試行できるように、ノードをリセットするか、完全にワイプする必要があります。この方法でノードがリセットされなければ、次にクラスタのインストールを試行するときに失敗します。

このページでは、この特定のノードのクリーンアップ オペレーションを実施する方法と、クラスタを削除する方法について説明します。

削除方法の選択

クラスタを削除する方法は、次のものによって異なります。

Anthos clusters on bare metal には、次の削除方法があります。

  • bmctl:

    • 特定のノードをリセットするには、bmctl reset nodes を使用します。
    • bmctl reset を使用して、管理クラスタ、ユーザー クラスタ、ハイブリッド クラスタ、スタンドアロン クラスタを削除します。

    ノードをリセットしたり、クラスタを削除したりするために bmctl を使用する場合、このコマンドは、クラスタ構成ファイルが現在の作業ディレクトリ内に存在することを前提としています。デフォルトでは、パスは次のようになります。

    bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml

    クラスタの作成時に --workspace-dir フラグを使用して別のディレクトリを指定した場合は、クラスタのリセット時にそのフラグを使用して、その作業ディレクトリを指定する必要があります。

  • kubectl:

    • ユーザー クラスタのみを削除するには、kubectl delete cluster を使用します。他のクラスタタイプでは、このコマンドを実行しないでください。
    • kubectl delete cluster を使用する場合は、クラスタを削除した後に、クラスタが存在する名前空間も削除する必要があります。
  • Google Cloud コンソール:

    • コンソールを使用して、作成したユーザー クラスタや、Anthos 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

クラスタの削除が完了したら、新しいクラスタを作成します。さらに詳しい内容については、クラスタ作成の概要をご覧ください。

ユーザー クラスタの削除

Console

ユーザー クラスタがコンソールで作成された場合、または Anthos On-Prem API で管理されるように構成されている場合は、次の手順でクラスタを削除します。クラスタの作成方法がわからない場合は、次の手順でクラスタの削除にコマンドライン ツールを使用する必要があるかどうかを判断します。

  1. コンソールで、[Anthos クラスタ] ページに移動します。

    [Anthos クラスタ] ページに移動

  2. ユーザー クラスタが存在するクラウド プロジェクトを選択します。

  3. クラスタのリストで、削除するクラスタをクリックします。

  4. [詳細] パネルで、[タイプ] が [Anthos(Bare Metal User)] の場合、次の手順でクラスタを削除します。

    1. [詳細] パネルで、[詳細を表示] をクリックします。

    2. ウィンドウの上部にある [削除] をクリックします。

    3. 確認のメッセージが表示されたら、もう一度 [削除] をクリックします。

    [種類] が [外部] の場合は、クラスタがコマンドライン ツールを使用して作成され、Anthos On-Prem API で管理されていないことを示します。この場合は、コマンドライン ツールのいずれかを使用してクラスタを削除します。

bmctl

bmctl を使用すると、bmctl または kubectl で作成されたユーザー クラスタを削除できます。

次のコマンドを実行して、bmctl でユーザー クラスタを削除します。

bmctl reset --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH

このコマンド内で、次のエントリをクラスタ環境に固有の情報に置き換えます。

  • 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

kubectl を使用すると、bmctl または kubectl で作成されたユーザー クラスタを削除できます。kubectl を使用してユーザー クラスタを削除するには、まずクラスタ オブジェクトを削除してから、名前空間を削除する必要があります。そうしないと、マシンをリセットするためのジョブを作成できなくなり、削除プロセスが無期限に停止する可能性があります。

kubectl でユーザー クラスタを削除するには:

  1. 次のコマンドを実行して、クラスタ オブジェクトを削除します。

    kubectl delete cluster CLUSTER_NAME -n CLUSTER_NAMESPACE \
        --kubeconfig ADMIN_KUBECONFIG_PATH
    

    このコマンド内で、次のエントリをクラスタ環境に固有の情報に置き換えます。

    • CLUSTER_NAME: 削除するユーザー クラスタの名前。

    • CLUSTER_NAMESPACE: クラスタの名前空間。デフォルトでは、ベアメタル版 Anthos クラスタのクラスタ名前空間は、先頭に cluster- が付いたクラスタの名前です。たとえば、クラスタに test という名前を付けると、名前空間の名前は cluster-test のようになります。

    • ADMIN_KUBECONFIG_PATH: 関連する管理クラスタの kubeconfig ファイルへのパス。

  2. クラスタが正常に削除されたら、次のコマンドを実行して名前空間を削除します。

    kubectl delete namespace CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
    

特定のクラスタノードをリセットする

クラスタの特定のノードをリセットする必要が生じる場合があります。たとえば、管理クラスタが削除されても、その管理クラスタで管理されているユーザー クラスタが残っている場合などです。この場合、管理クラスタは削除されているため、ユーザー クラスタ全体を削除できません。そのため、ユーザー クラスタのノードは個別にリセットする必要があります。

ノードをリセットするには、Google Container Registry(GCR)への読み取りアクセス権を持つサービス アカウントが必要です。bmctl コマンドは、このサービス アカウントの JSON キーファイルを引数と想定しています。クラスタの個々のノードをリセットするには、次のコマンドを実行します。

bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \
    --ssh-key-private-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 サービスが削除されます。
  • keepalivedhaproxy の構成ファイルが削除されます。