トラブルシューティング: クラスタの診断とリセット

クラスタを診断またはチェックして、問題をデバッグし、クラスタの状態のスナップショットを取得できます。また、インストールの途中で失敗してクラスタからエラーが返された場合や、クラスタが正しく実行できない場合は、クラスタをリセットできます。

bmctl check cluster を使用したクラスタの診断

作成したクラスタの状態を取得するには、bmctl check cluster コマンドを使用します。コマンドのフラグを指定すると、コマンドの診断範囲を指定して、重要な情報を取得できます。bmctl check cluster コマンドは、ユーザー クラスタでは使用できません。

診断情報により、問題の検出とデプロイのデバッグを効率的に行うことができます。コマンドを実行すると、定義した範囲に関連するクラスタとノード構成ファイルがすべて収集され、1 つの tar アーカイブにパッケージ化されます。

bmctl check cluster --snapshot --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG

このコマンドは、指定したクラスタ内のすべてのシステム コンポーネントとマシンから収集したデバッグ情報を含む tar アーカイブを出力します。

ADMIN_KUBECONFIG には kubeconfig ファイルのパスを指定し、CLUSTER_NAME にはクラスタの名前を指定します。

収集する診断情報の範囲は、次のコマンドフラグで変更できます。

  • --snapshot-scenario all フラグを指定すると、指定したクラスタのすべての Pod が対象になるため、診断のスナップショットの範囲が広がります。
bmctl check cluster --snapshot --snapshot-scenario all --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
  • --snapshot-dry-run フラグは、--snapshot-config string フラグと連携して機能します。--snapshot-dry-run フラグを使用すると、構成ファイルが出力されます。このファイルを変更して診断範囲をカスタマイズできます。診断範囲には特定の Pod、名前空間、ノードコマンドなどが含まれます。

--snapshot-dry-run フラグで作成した出力ファイルを変更したら、次のようにそのファイルを入力として使用し、--snapshot-config string フラグで指定した範囲を診断できます。このフラグを省略すると、デフォルト構成が適用されます。

bmctl check cluster --snapshot --snapshot-dry-run --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
  • --snapshot-config フラグを使用すると、bmctl コマンドはスナップショットの構成ファイルで指定された範囲オプションを使用します。通常は、--snapshot-dry-run フラグを使用してスナップショットの構成ファイルを作成します。
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG

管理クラスタのインストール / アップグレードが停止した場合のスナップショットを作成する

管理クラスタ、ハイブリッド クラスタ、スタンドアロン クラスタをインストールするときに、bmctl が次の出力でスタックする場合に

  • クラスタ kubeconfig の準備が完了するまで待機しています。
  • クラスタの準備が完了するまで待機しています。
  • ノードプールの準備が完了するまで待機する

または、管理クラスタ、ハイブリッド クラスタ、スタンドアロン クラスタのアップグレード時に

  • アップグレードが完了するのを待機しています。

次のコマンドを実行して、ブートストラップ クラスタを使用してスナップショットを取得できます。

bmctl check cluster --snapshot --kubeconfig <var>WORKSPACE_DIR</var>/.kindkubeconfig --cluster <var>CLUSTER_NAME</var>

bmctl reset cluster によるクラスタのリセット

クラスタが正しくインストールされなかった場合、ノードをリセットしてクリーンな状態に戻すことができます。その後、構成を変更してクラスタを再インストールできます。bmctl reset cluster コマンドは、ユーザー クラスタでは使用できません。

クラスタをリセットするには、次のコマンドを実行します。

bmctl reset --cluster CLUSTER_NAME

reset コマンドはクラスタ全体に適用されます。クラスタ内のノードのサブセットを対象にするオプションはありません。

コマンドからの出力は、次のサンプルのようになります。

bmctl reset -c 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 からのデータも削除されます。

bcmctl は、すべてのノードに kubeadm reset を実行し、クラスタ ネットワーキングに使用されているトンネル インターフェースを削除して、次のディレクトリを削除します。

  • /etc/kubernetes
  • /etc/cni/net.d
  • /root/.kube
  • /var/lib/kubelet

ロードバランサ ノードの場合、bmctl は次のアクションも実行します。

  • keepalived サービスと haproxy サービスを無効にします。
  • keepalivedhaproxy の構成ファイルを削除します。

リセットツールは、クラスタの構成ファイルが現在の作業ディレクトリの次の場所にあることを前提としています。

bmctl-workspace/cluster name/cluster name.yaml