クラスタのインストールが進行中の場合、そのクラスタをホストしているノードにバイナリと systemd サービスがインストールされ、サービスはノードのポートのリッスンを開始します。
ただし、クラスタのインストールが失敗した場合は、これらのバイナリとサービスをすべて削除する必要があります。つまり、クラスタのインストールを再試行できるように、ノードをリセットするか、完全にワイプする必要があります。この方法でノードがリセットされなければ、次にクラスタのインストールを試行するときに失敗します。
bmctl reset
コマンドは、このようなノードのクリーンアップ オペレーションを実行します。この bmctl reset
コマンドは、クラスタ全体またはクラスタの特定のノードで実行できます。このドキュメントでは、両方のモードでコマンドを実行する方法について説明します。
クラスタに bmctl reset
コマンドを適用すると、クラスタのすべてのバイナリとサービスがワイプされるため、クラスタが削除されることに注意してください。
bmctl reset cluster
でクラスタをリセットする
クラスタをリセットすると、そのクラスタは削除されます。クラスタが削除された後は、必要な構成の変更を行い、再インストールできます。
セルフマネージド クラスタをリセットする
管理クラスタ、ハイブリッド クラスタ、スタンドアロン クラスタをリセットするには、次のコマンドを実行します。
bmctl reset --cluster CLUSTER_NAME
このコマンドの CLUSTER_NAME
は、リセットするクラスタの名前に置き換えます。
クラスタのリセットが完了すると、新しいクラスタを作成できます。さらに詳しい内容については、クラスタ作成の概要をご覧ください。
ユーザー クラスタをリセットする
ユーザー クラスタをリセットまたは削除するには、bmctl reset
コマンドまたは kubectl delete
コマンドを使用します。いずれの場合も、クラスタは削除されます。bmctl reset
を使用することをおすすめします。
bmctl
を使用したユーザー クラスタのリセットまたは削除
bmctl
でユーザー クラスタをリセットまたは削除するには、次のコマンドを実行します。
bmctl reset --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
このコマンド内で、次のエントリをクラスタ環境に固有の情報に置き換えます。
CLUSTER_NAME
: リセットするユーザー クラスタの名前。ADMIN_KUBECONFIG_PATH
: 関連する管理クラスタのkubeconfig
ファイルへのパス。bmctl
では、--admin-kubeconfig
フラグのエイリアスとして--kubeconfig
の使用がサポートされます。
kubectl
を使用したユーザー クラスタの削除
kubectl
を使用してユーザー クラスタを削除するには、まずクラスタ オブジェクトを削除してから、名前空間を削除する必要があります。そうしないと、マシンをリセットするためのジョブを作成できなくなり、削除プロセスが無期限に停止する可能性があります。
kubectl
でユーザー クラスタを削除するには:
次のコマンドを実行して、クラスタ オブジェクトを削除します。
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
ファイルへのパス。
クラスタが正常に削除されたら、次のコマンドを実行して名前空間を削除します。
kubectl delete namespace CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
特定のクラスタノードをリセットする
クラスタの特定のノードをリセットする必要が生じる場合があります。たとえば、管理クラスタが削除されても、その管理クラスタで管理されているユーザー クラスタが残っている場合などです。この場合、管理クラスタは削除されているため、ユーザー クラスタ全体を削除できません。そのため、ユーザー クラスタのノードは個別にリセットする必要があります。
GCR サービス アカウントの 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 秘密鍵のパス。SERVICE_ACCOUNT_KEY_PATH
: サービス アカウント キーを含む JSON ファイルへのパス。この鍵により、bmctl
に Google Container Registry(GCR)からイメージを pull する権限が付与されます。サービス アカウント キーは、Google Cloud Console、gcloud CLI、serviceAccounts.keys.create()
メソッド、いずれかのクライアント ライブラリを使用して作成できます。詳細については、サービス アカウント キーの作成と管理をご覧ください。サービス アカウント キーファイルを作成するもう 1 つの方法は、--create-service-accounts
フラグを指定してcreate config
コマンドを実行する方法です。このコマンドの詳細については、bmctl を使用したクラスタ構成の作成と管理をご覧ください。
クラスタの詳細のリセット
bmctl cluster reset
コマンドからの出力は、次のサンプルのようになります。
bmctl reset --cluster cluster1
Creating bootstrap cluster... OK
Deleting GKE Hub member admin in project my-gcp-project...
Successfully deleted GKE Hub member admin in project my-gcp-project
Loading images... OK
Starting reset jobs...
Resetting: 1 Completed: 0 Failed: 0
...
Resetting: 0 Completed: 1 Failed: 0
Flushing logs... OK
リセット オペレーションで、bmctl
はまず GKE Hub メンバーシップの登録を削除して、影響を受けるノードのクリーンアップを行います。リセット中、ストレージのマウントと anthos-system StorageClass
からのデータも削除されます。
bmctl
は、すべてのノードで kubeadm reset
を実行し、クラスタ ネットワーキングに使用されているトンネル インターフェースを削除して、次のディレクトリを削除します。
/etc/kubernetes
/etc/cni/net.d
/root/.kube
/var/lib/kubelet
ロードバランサ ノードの場合、bmctl
は次のアクションも実行します。
keepalived
サービスとhaproxy
サービスを無効にします。keepalived
とhaproxy
の構成ファイルを削除します。
bmctl reset
コマンドは、クラスタ構成ファイルが現在の作業ディレクトリにあることを想定しています。デフォルトでは、パスは次のようになります: bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml
クラスタの作成時に --workspace-dir
フラグを使用して別のディレクトリを指定した場合は、クラスタのリセット時にそのフラグを使用して、その作業ディレクトリを指定する必要があります。