GDCV for Bare Metal で VM のエビクション ポリシーを構成する

このドキュメントは、GKE on Bare Metal で仮想マシン(VM)を実行するプラットフォーム管理者を対象としています。このドキュメントでは、GDC 上の VM ランタイムを使用する VM がメンテナンス イベント中に他のホストに自動的に移行する方法を制御するエビクション ポリシーの構成方法について説明します。これらの構成設定を使用すると、クラスタをアップグレードしたり、ホストでメンテナンスを行ったりしても、他のホストでは VM を継続して実行できます。

準備

このドキュメントの内容を最後まで行うには、GKE on Bare Metal バージョン 1.12.0(anthosBareMetalVersion: 1.12.0)以降のクラスタにアクセスする必要があります。ワークロードを実行可能な、どのクラスタタイプでも使用できます。必要に応じて、Compute Engine の GDCV for Bare Metal を試すか、クラスタ作成の概要をご覧ください。

エビクション ポリシーの設定

GKE on Bare Metal を使用すると、クラスタをアップグレードしたり、ノードをメンテナンス モードにする際のノードの動作を構成できます。GDC 上の VM ランタイムは、これらのイベント中に実行される VM をクラスタがどのように取り扱うかを制御するエビクション ポリシーを使用します。

有効にすると、GDC 上の VM ランタイムはデフォルトでライブ マイグレーションを使用して VM ワークロードを別のホストに移動します。この動作により、VM ワークロードが中断する可能性を最小限に抑えられます。ライブ マイグレーションでは、ゲスト OS を中断することなく、移行可能な VM をあるホストから別のホストに移動します。

次のエビクション ポリシー設定を構成できます。

プロパティ デフォルト 有効な値
evictionStrategy LiveMigrate LiveMigrateRestart
maxMigrationAttemptsPerVM 3 [1,5] の範囲内の整数
migrationTargetInitializationTimeout 30s 有効な長さの文字列(1m2h1h30m

evictionStrategy

この値が LiveMigrate に設定されている場合、GDC 上の VM ランタイムは、移行可能な VM をノードから移行して強制排除しようとします。VM はクラスタ内の別のノードに配置され、引き続き実行されます。

この値が Restart に設定されている場合、GDC 上の VM ランタイムは VM の移行を試みません。代わりに、ノードがメンテナンス モードになると VM は停止し、ノードがメンテナンス モードから離れると VM が再起動します。ホスト メンテナンス イベント中は VM が利用できなくなります。

LiveMigrate 戦略を選択すると、GDC 上の VM ランタイムは、移行不能な VM では Restart 戦略にフォールバックします。

maxMigrationAttemptsPerVM

この設定は、Restart 戦略が適用される前に特定の VM に対して実行できる移行の試行の最大数を制御します。

evictionStrategyRestart に設定されている場合、この設定は無視されます。

migrationTargetInitializationTimeout

この設定は、移行が失敗とみなされずに、移行が開始するまでにかけることができる最長時間を制御します。開始に時間がかかりすぎる移行は、VM ワークロードの移行予算にカウントされます。

evictionStrategyRestart に設定されている場合、この設定は無視されます。

エビクション ポリシーを有効にして構成する

GDC 上の VM ランタイムでエビクション ポリシーを使用するには、クラスタの VMRuntime オブジェクトで evictionPolicy 設定を定義する必要があります。この設定は、Anthos clusters on bare metal バージョン 1.12 以降でデフォルトで有効になっています。以前のバージョンからアップグレードする場合は、この設定を手動で有効にする必要があります。

空のオブジェクト(evictionPolicy: {} など)では、デフォルト設定でエビクション ポリシーが有効になります。デフォルトの動作を変更するには、evictionPolicy オブジェクトに構成オプションを追加します。

エビクション ポリシーを有効にして構成するには、次の手順を完了します。

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

    kubectl edit vmruntime vmruntime
    
  2. 空のオブジェクトを使用して evictionPolicy セクションを追加または更新して、デフォルトのエビクション ポリシー設定を使用するか、または必要な設定を追加します。

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      disableCDIUploadProxyVIP: false
      enabled: true
      evictionPolicy: {}
      useEmulation: false
    

    evictionPolicy が入力されていない場合(evictionPolicy: null など)、またはマニフェストに含まれていない場合、特別なアクションは実行されません。VM は強制的に立ち退かされます。

    次のマニフェストの例は、VM のライブ マイグレーションを有効にする方法、またはメンテナンスが完了した後に同じホストで VM を再起動する方法を示しています。

    ライブ マイグレーション

    次のエビクション ポリシーの例では、VM のライブ マイグレーションを有効にします。クラスタはライブ マイグレーションを、プロセスを起動するたびに30 秒のタイムアウトで、3 回まで再試行できます。

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      disableCDIUploadProxyVIP: false
      enabled: true
      evictionPolicy:
        evictionStrategy: LiveMigrate
        maxMigrationAttemptsPerVM: 3
        migrationTargetInitializationTimeout: 30s
      useEmulation: false
    

    再起動

    次のエビクション ポリシーの例では、エビクションでどの VM に対しても移行が試みられることはありません。VM は現在のホストで停止され、ホストのメンテナンス イベントが終了すると再起動されます。

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      disableCDIUploadProxyVIP: false
      enabled: true
      evictionPolicy:
        evictionStrategy: Restart
      useEmulation: false
    
  3. エディタで、VMRuntime カスタム リソースを保存して閉じます。

    これで GDC 上の VM ランタイムが、クラスタ内の VM にエビクション ポリシーを適用するようになりました。

次のステップ