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

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

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

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

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

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

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

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

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

クラスタを作成する前にプリフライト チェックを自動的に実行することもできます。マシンとノードのリソースが確実にチェックに合格するため時間を節約できます。

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

    bmctl check config --cluster CLUSTER_NAME

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

    bmctl check preflight --cluster CLUSTER_NAME

bmctl を使用してユーザー クラスタを作成することはできません(この点を防止するためにプリフライト チェックがあります)。

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

既存の管理クラスタまたはハイブリッド クラスタからユーザー クラスタが作成され、kubectl を使用してプリフライト チェックが実行されます。これらのチェックの結果に基づいて、ユーザー クラスタを作成する前にエラーがあるかどうかを確認して修正することができます。

管理クラスタまたはハイブリッド クラスタが作成されて稼働すると、ユーザー クラスタを作成する前に 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 コマンドを使用して、ユーザー クラスタのプリフライト チェックを実行します。ここで、ADMIN_KUBECONFIG は管理クラスタの kubeconfig ファイルのパスを指定し、USER_CLUSTER_PREFLIGHT_CHECK_CONFIG は前の手順で作成したプリフライト チェック YAML ファイルへのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f USER_CLUSTER_PREFLIGHT_CHECK_CONFIG
    
    たとえば、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: v1.6.2
....

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

新しいプリフライト チェック ラウンドを明示的にトリガーできます。その結果、プリフライト チェックが正常終了した後にベアメタル版 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 コマンドを発行してクラスタのプリフライト チェックを実行します。ここで、ADMIN_KUBECONFIG は管理クラスタの kubeconfig ファイルへのパスを指定し、CLUSTER_PREFLIGHT_CHECK_CONFIGユーザー クラスタのプリフライト チェックのステップ 1 で事前に作成したプリフライト チェック YAML ファイルへのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f CLUSTER_PREFLIGHT_CHECK_CONFIG
    
    たとえば、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 クラスタは、プリフライト チェックを実行する際にさまざまなオペレーティング システム、ソフトウェア、マシンの前提条件をチェックします。

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