Anthos VM ランタイムを有効または無効にする

このドキュメントでは、VMRuntime カスタム リソースを更新するか、bmctl コマンドを実行して、Anthos VM ランタイムを有効または無効にする方法について説明します。

準備

Anthos VM ランタイムを有効または無効にするには、次のリソースとツールにアクセスする必要があります。

Anthos VM ランタイムを有効にする

Anthos VM ランタイムは、Anthos clusters on bare metal バージョン 1.10 以降に自動的にインストールされますが、デフォルトでは無効になっています。Anthos clusters on bare metal で VM リソースを実行するには、その前に、Anthos VM ランタイムを有効にする必要があります。

bmctl

  • ランタイムを有効にするには、bmctl ツールを使用します。

    bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
    

    クラスタの kubeconfig ファイルのパスを指定します。Anthos clusters on bare metal は、クラスタの作成時に管理ワークステーションに kubeconfig ファイルを生成します。デフォルトでは、パスは bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig です。

    Anthos VM ランタイムがすでに有効になっている場合、コマンドはエラーを返します。

エミュレーションや画像形式などの追加設定は、VMRuntime カスタム リソースを編集することで構成できます。

カスタム リソース

ランタイムを有効にするには、VMRuntime カスタム リソースを更新します。このカスタム リソースは、デフォルトでインストールされます。

  1. VMRuntime カスタム リソースを編集します。

    kubectl edit vmruntime
    
  2. 仕様に enabled:true を設定します。

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      # useEmulation defaults to "false" if not set.
      useEmulation: true
      # vmImageFormat defaults to "qcow2" if not set.
      vmImageFormat: qcow2
    

    前述の spec セクションでは、次の値を設定できます。

    • enabled: true に設定して Anthos VM ランタイムを有効にします。
    • useEmulation: ノードがハードウェア仮想化をサポートしていない場合や、それが不明な場合は、値を true に設定します。使用可能な場合、ハードウェア仮想化は、ソフトウェア エミュレーションよりもパフォーマンスが優れています。指定しない場合、useEmulation フィールドはデフォルトで false になります。
    • vmImageFormat: rawqcow2 の 2 つのディスク イメージ形式値をサポートします。vmImageFormat を設定しない場合、Anthos VM ランタイムは raw ディスク イメージ形式を使用して VM を作成します。raw 形式によって、書き込み形式のコピーである qcow2 よりもパフォーマンスが向上しますが、より多くのディスクを使用する場合があります。VM のイメージ形式の詳細については、QEMU ドキュメントのディスク イメージのファイル形式をご覧ください。
  3. カスタム リソースをエディタに保存します。

  4. VMRuntime カスタム リソースが有効になっていることを確認します。

    kubectl describe vmruntime vmruntime
    

    VMRuntime カスタム リソースの詳細には、Status セクションが含まれています。VMRuntime.Status.Readytrue として表示されていれば、Anthos VM ランタイムが有効になり、機能します。

Anthos VM ランタイムを無効にする

Anthos VM ランタイムを使用する必要がもうなくなったら、この機能を無効にできます。

bmctl

  • ランタイムを無効にするには、bmctl ツールを使用します。

    bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \
      --force=true
    

    クラスタの kubeconfig ファイルへのパスと次の構成オプションの値を指定します。

    • --force: true に設定して、既存の VM リソースを削除することを確定します。デフォルト値は false です。

カスタム リソース

ランタイムを無効にするには、VMRuntime カスタム リソースを更新します。

  1. VMRuntime カスタム リソースを編集します。

    kubectl edit vmruntime
    
  2. 仕様に enabled:false を設定します。

    apiVersion: vm.cluster.gke.io/v1`
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: false
      useEmulation: true
      vmImageFormat: qcow2
    
  3. 更新したカスタム リソース仕様をエディタに保存します。

  4. VMRuntime カスタム リソースが無効になっていることを確認するには、vm-system 名前空間で実行されている Pod を表示します。

    kubectl get pods --namespace vm-system
    

    vmruntime-controller-manager デプロイメントに属する Pod のみが名前空間で実行されている場合、Anthos VM ランタイムが無効になります。

VM の実行の動作について理解する

baremetal.cluster.gke.io/vmrumtime-force-disable アノテーションを Anthos VM ランタイム リソースで使用すると、クラスタ内で VM が実行されている間にランタイムが無効になっている場合の動作を定義できます。

次の例は、このアノテーションの値がデフォルトで false に設定されていることを示しています。

  // VM runtime yaml file
  apiVersion: vm.cluster.gke.io/v1
  kind: VMRuntime
  metadata:
    annotations:
      baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
    name: vmruntime
  [...]

このアノテーションが false に設定されている場合、Anthos VM ランタイムは実行中の VM の保護を試みます。Anthos VM ランタイムを無効にする前に、実行中のすべての VM を削除するか、前のセクションで示すように bmctl disable vmruntime コマンドで --force=true パラメータを指定します。

次の表は、このアノテーションが true または false に設定されているときに、--force=true パラメータを指定している場合としていない場合に、実行中の VM に何が起こるかを示しています。

Cluster State --force parameter vmrumtime-force-disable アノテーション 動作
VM はありません なし なし Anthos VM ランタイムを無効にする
既存の VM 正しい 正しい 実行中のすべての VM と関連リソースを削除します。Anthos VM ランタイムを無効にします。
正しい 誤り 実行中のすべての VM と関連リソースを削除します。Anthos VM ランタイムを無効にします。
誤り 正しい 実行中の VM と関連リソースの削除を求めます。実行中のすべての VM が削除されたら、Anthos VM ランタイムを無効にします。
誤り 誤り 実行中のいかなる既存の VM も削除しないでください。Anthos VM ランタイムは無効にしないでください。bmctl コマンドは、エラーを返します。

次のステップ