プリフライト チェックについて

ベアメタル版 Anthos クラスタでは、さまざまな状況でプリフライト チェックを実行できます。

  • ベアメタル版 Anthos クラスタは、bmctl を使用して管理クラスタ、ハイブリッド クラスタ、スタンドアロン クラスタ、ユーザー クラスタ、ノードプール リソースを作成または更新する際、プリフライト チェックを実行します。チェックで不合格になると、何も行われません。また、こうしたチェックをバイパスすることもできます。
  • ベアメタル版 Anthos クラスタでは、管理者クラスタやハイブリッド クラスタから Kubernetes リソースをユーザー クラスタに適用するときに、内部のプリフライト チェックも実行されます。このチェックは、影響を受けるユーザー クラスタに変更が適用される前に実行されます。チェックで不合格になると、何も行われません。これらのチェックをバイパスすることも、明示的に実行することもできます。

bmctl を使用したクラスタ作成時のプリフライト チェック

bmctl コマンドを使用して 管理ハイブリッドスタンドアロン、またはユーザー クラスタを作成すると、変更が行われる前に、ベアメタル版 Anthos クラスタがプリフライト チェックを自動的に実行します。

チェックに合格すると、ベアメタル版 Anthos クラスタがクラスタを作成します。

自動プリフライト チェックの結果の無視

自動化されたプリフライト チェックをバイパスする場合は、コマンドでオプションの --force フラグを使用します。

プリフライト チェックの個別実行

クラスタを作成する前に、プリフライト チェックを単独で実行して、マシンとノードのリソースがチェックに合格することを確認することもできます。

  • 次のコマンドは、指定されたクラスタ構成ファイルを検証しますが、クラスタ自体の作成は行いません。

    bmctl check config --cluster CLUSTER_NAME

  • このコマンドは、マシンとネットワークにクラスタを作成する準備が整っているかどうかを確認します。

    bmctl check preflight --cluster CLUSTER_NAME

ベアメタル版 Anthos クラスタ 1.7.0 以降のバージョンのみ、bmctl を使用したユーザー クラスタの作成がサポートされます。

ユーザー クラスタ作成に対するプリフライト チェック

既存の管理クラスタまたはハイブリッド クラスタからユーザー クラスタが作成されます。ベアメタル版 Anthos クラスタでは、変更前にプリフライト チェックを自動的に実行します。また、クラスタを作成する前に kubectl でプリフライト チェックを実行することもできます。

  1. マルチクラスタ セットアップでユーザー クラスタを作成するの手順に沿って、ユーザー クラスタ構成ファイルを作成します。

  2. 新しいユーザー クラスタの Namespace を作成します。たとえば、user1 という名前の新しいユーザー クラスタを作成するために、cluster-user1 という名前の Namespace を作成できます。Namespace を作成する kubectl コマンドは次のとおりです。ここで、ADMIN_KUBECONFIG には、管理クラスタの kubeconfig ファイルのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create namespace cluster-user1
    

  3. SSH 秘密鍵ファイルをシークレットとして新しい Namespace にアップロードし、認証情報を確立します。コマンドの例を次に示します。ここで、ADMIN_KUBECONFIG には管理クラスタの kubeconfig ファイルへのパスを指定し、SSH_PRIVATE_KEY_FILE_PATH には SSH 秘密鍵ファイルへのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create secret generic ssh-key -n cluster-user1 --from-file=id_rsa=SSH_PRIVATE_KEY_FILE_PATH
    

  4. 以下の構成で、新しいプリフライト チェック YAML ファイルを作成します。configYAML フィールドには、ステップ 1 で作成したユーザー クラスタ構成ファイルのテキストの内容を入力します。

    apiVersion: baremetal.cluster.gke.io/v1
    kind: PreflightCheck
    metadata:
    generateName: preflightcheck-
    namespace: cluster-user1
    spec:
    configYAML: |
    # insert user cluster config file content here.
    
  5. kubectl コマンドを使用して、ユーザー クラスタのプリフライト チェックを実行します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f USER_CLUSTER_PREFLIGHT_CHECK_CONFIG
    

    次のように置き換えます。

    • ADMIN_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス
    • USER_CLUSTER_PREFLIGHT_CHECK_CONFIG: 前の手順で作成したプリフライト チェック YAML ファイルへのパス

    たとえば、cluster1 という名前の管理クラスタと user1-preflight.yaml という名前のユーザー クラスタのプリフライト チェック構成ファイルの場合、コマンドは次のようになります。

    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig create -f user1-preflight.yaml
    

    プリフライト チェックのジョブ ID とともに次のメッセージが返されます。

    preflightcheck.baremetal.cluster.gke.io/preflightcheck-g7hfo4 created
  6. kubectl コマンドを使用して、プリフライト チェック ジョブのステータスを確認します。

    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig -n cluster-user1 get preflightchecks preflightcheck-g7hfo4
    

プリフライト チェック ジョブで不合格となった場合は、ステータスと詳細なジョブログをチェックして、不合格となったチェックを確認します。ジョブで指摘された問題を適切に修正したら、再度チェックを実行します。

既存のクラスタに対する内部プリフライト チェック

また、既存の管理クラスタやハイブリッド クラスタに Kubernetes リソースを適用するときも、ベアメタル版 Anthos が内部プリフライト チェックを実行します。チェックに失敗した場合、ベアメタル版 Anthos クラスタは、明確にチェックをバイパスしていない限り、関連ノードを変更しません。

Kubernetes リソース適用時のプリフライト チェックのバイパス

既存のクラスタにリソースを適用する際に内部プリフライト チェックを無視する場合は、クラスタ YAML ファイルの BypassPreflightCheck フィールドを true に設定する必要があります。

以下は、クラスタ構成 YAML ファイルの一部ですが、bypassPreflightCheck フィールドが true に設定されています。

# Sample cluster config to bypass preflight check errors:

apiVersion: v1
kind: Namespace
metadata:
  name: cluster-user1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: user1
  namespace: cluster-user1
spec:
  type: user
  bypassPreflightCheck: true
  # Anthos cluster version.
  anthosBareMetalVersion: 1.7.7
....

プリフライト チェックの再有効化

新しいプリフライト チェック ラウンドを明示的にトリガーできます。その結果、プリフライト チェックが正常終了した後にベアメタル版 Anthos がクラスタを更新または新規作成できます。

  1. 次の構成で、新しいプリフライト チェック YAML ファイルを作成します。namespace フィールドと clusterName フィールドに作成するクラスタの名前を入力します。

    apiVersion: baremetal.cluster.gke.io/v1
    kind: PreflightCheck
    metadata:
    generateName: preflightcheck-
    namespace: CLUSTER_NAMESPACE
    spec:
    clusterName: CLUSTER_NAME
    

  2. kubectl コマンドを使用して、クラスタのプリフライト チェックを実行します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f CLUSTER_PREFLIGHT_CHECK_CONFIG
    

    次のように置き換えます。

    • ADMIN_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス
    • CLUSTER_PREFLIGHT_CHECK_CONFIG: 以前に作成したプリフライト チェック YAML ファイルへのパス

    たとえば、cluster1 という名前の管理クラスタと user1-preflight.yaml という名前のユーザー クラスタのプリフライト チェック構成ファイルの場合、コマンドは次のようになります。

    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig create -f user1-preflight.yaml
    
    システムは、プリフライト チェックのジョブ ID で応答します。
    preflightcheck.baremetal.cluster.gke.io/preflightcheck-g7hfo4 created
    

  3. kubectl コマンドを使用して、プリフライト チェック ジョブのステータス ID をクエリします。

    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig -n cluster-cluster1 get preflightchecks preflightcheck-g7hfo4
    

プリフライト チェック ジョブが正常に終了すると、ベアメタル版 Anthos はクラスタは、クラスタとそのリソースを作成します。

インストールのプリフライト チェックの詳細

ベアメタル版 Anthos クラスタは、プリフライト チェックを実行する際にさまざまなオペレーティング システム、ソフトウェア、マシンの前提条件をチェックします。

詳細については、インストールの前提条件の概要をご覧ください。