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

GDC VM 執行階段的淘汰政策,可控管叢集升級和主機維護事件期間,虛擬機器 (VM) 的處理方式。設定這些政策後,系統會自動將工作負載即時遷移至其他主機,維持正常運作時間,或在維護作業完成後停止並重新啟動 VM。

事前準備

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

淘汰政策設定

執行叢集升級或將節點設為維護模式時,您可以使用 Google Distributed Cloud 設定節點行為。VM Runtime on GDC 會使用淘汰政策,控管叢集如何處理在這些事件期間執行的 VM。

啟用後,GDC 上的 VM 執行階段預設會使用即時遷移功能,將 VM 工作負載移至其他主機。這項行為可盡量減少 VM 工作負載可能受到的干擾。透過即時遷移,可遷移的 VM 會從一部主機移至另一部主機,不會中斷客體 OS。

可設定的淘汰政策如下:

屬性 預設 有效值
evictionStrategy LiveMigrate LiveMigrate、Restart
maxMigrationAttemptsPerVM 3 範圍 [1,5] 內的整數
migrationTargetInitializationTimeout 30s 任何有效的時間長度字串,例如 1m、2h 或 1h30m

evictionStrategy

如果這個值設為 LiveMigrate,GDC VM 執行階段會嘗試將所有可遷移的 VM 從節點移出,以便將其剔除。VM 會移至叢集中的其他節點,並繼續運作。

如果這個值設為 Restart,GDC 上的 VM 執行階段就不會嘗試遷移 VM。相反地,當節點進入維護模式時,VM 會停止,並在節點退出維護模式時重新啟動。主機維護事件期間,VM 無法使用。

如果選擇 LiveMigrate 策略,GDC VM 執行階段會針對無法遷移的 VM 改用 Restart 策略。

maxMigrationAttemptsPerVM

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

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

migrationTargetInitializationTimeout

這項設定可控管遷移作業開始前的最長等待時間,超過這個時間就會視為失敗。如果遷移作業耗費過多時間才開始,就會計入 VM 工作負載的遷移失敗預算。

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

啟用及設定淘汰政策

如要在 VM Runtime on GDC 中使用淘汰政策,必須在叢集的 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。

後續步驟