在 Google Distributed Cloud 中設定 VM 的逐出政策

本文適用於在 Google Distributed Cloud 中執行虛擬機器 (VM) 的平台管理員。本文說明如何設定逐出政策,控管在維護作業期間,使用 GDC 上的 VM Runtime 的 VM 如何自動遷移至其他主機。這些設定可讓 VM 在叢集升級或主機維護期間,繼續在其他主機上執行。

事前準備

如要完成本文,您必須存取 Google Distributed Cloud 1.12.0 版 (anthosBareMetalVersion: 1.12.0) 以上叢集。您可以使用任何可執行工作負載的叢集類型。如有需要,請在 Compute Engine 上試用 Google Distributed Cloud,或參閱叢集建立總覽

驅逐政策設定

執行叢集升級或將節點設為維護模式時,您可以透過 Google Distributed Cloud 設定節點行為。GDC 上的 VM Runtime 使用逐出政策,控管叢集在這些事件期間執行的 VM 處理方式。

啟用後,GDC 上的 VM Runtime 會預設使用即時遷移功能,將 VM 工作負載移至其他主機。這項行為可將 VM 工作負載中斷的風險降到最低。透過即時遷移功能,可遷移的 VM 會從一台主機移至另一台主機,不會中斷客體 OS。

叢集升級的遷移式驅逐功能僅支援 Google Distributed Cloud 1.12 以上版本。

您可以設定下列移除政策設定:

屬性 預設 有效值
evictionStrategy LiveMigrate LiveMigrateRestart
maxMigrationAttemptsPerVM 3 範圍 [1,5] 內的整數
migrationTargetInitializationTimeout 30s 任何有效的持續時間字串,例如 1m2h1h30m

evictionStrategy

如果這個值設為 LiveMigrate,GDC 上的 VM Runtime 會嘗試將任何可遷移的 VM 從節點遷移出去,以便將節點逐出。VM 會放置在叢集中的另一個節點,並繼續執行。

如果這個值設為 Restart,GDC 上的 VM Runtime 就不會嘗試遷移 VM。節點進入維護模式時,系統會停止 VM,節點退出維護模式時,系統會重新啟動 VM。主機維護事件期間,VM 無法使用。

選擇 LiveMigrate 策略時,GDC 上的 VM 執行階段會針對無法遷移的 VM 回到 Restart 策略。

maxMigrationAttemptsPerVM

這項設定可控管特定 VM 在套用 Restart 策略前,可嘗試遷移的次數上限。

如果 evictionStrategy 設為 Restart,系統會忽略這項設定。

migrationTargetInitializationTimeout

這項設定可控制遷移作業開始前可等待的時間長度上限,一旦超過時限即視為失敗。如果遷移作業啟動時間過長,會計入 VM 工作負載的遷移失敗預算。

如果 evictionStrategy 設為 Restart,系統會忽略這項設定。

啟用及設定逐出政策

如要在 GDC 的 VM 執行階段中使用逐出政策,必須在叢集的 VMRuntime 物件中定義 evictionPolicy 設定。這項設定預設為啟用。如果您是從舊版升級,請務必手動啟用這項設定。

空物件 (例如 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 即時遷移功能。叢集最多可重試即時遷移 3 次,每次啟動程序時的逾時時間為 30 秒:

    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 自訂資源。

    VM Runtime on GDC 現在會對叢集中的 VM 套用逐出政策。

後續步驟