VM 韌性

本文將概要說明虛擬機器 (VM) 的復原能力,以及應用程式運算子可啟用哪些選用檢查,以便在 Google Distributed Cloud (GDC) 氣隙環境中,從 VM 內部取得更深入的洞察資料。

本文適用於應用程式運算子群組中負責操作 VM 的開發人員。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

GDC 中的 VM 提供高可用性,可在基礎架構或客機發生故障時,提升服務連續性。您也可以設定系統發出選用的健康狀態信號,進一步瞭解 VM 狀態。

VM 可用性檢查

系統提供下列 VM 可用性檢查:

檢查作業名稱 說明 緩解動作支援 信號可用性
訪客健康檢查 驗證客體 OS 健康狀態。其他客內檢查的先決條件。 In-Guest Check
儲存空間檢查 驗證 VM 的基礎儲存空間健康狀態。 In-Guest Check
輸出檢查 驗證與知名內部端點的連線。 入住期間的檢查和外部檢查
Ingress 檢查 使用設定的 Ingress (VirtualMachineExternalAccess) 驗證 VM 可存取性。 In-Guest Check

如果 VM 經常發生故障,緩解措施可能會重新啟動 VM,並重新排程至其他節點。

要求權限和存取權

如要執行本頁列出的工作,您必須擁有專案的「VirtualMachine 管理員」角色。請按照步驟驗證,確認您在 VM 所在專案的命名空間中,具備專案 VirtualMachine 管理員 (project-vm-admin) 角色。

啟用訪客檢查

如果沒有 guestHealthCheck,系統預設會停用客內檢查。

如要啟用或停用 VM 的客體檢查,您必須更新 VM 規格中的 GuestEnvironment。如果已安裝訪客代理程式,這項設定會從 VM 內部收集指標。如果沒有 guestHealthCheck,系統預設會停用客體內檢查。

  1. 開啟 VM 的設定檔。
  2. 前往 spec: 部分。
  3. 新增或修改 guestEnvironment:guestHealthCheck: 欄位,啟用檢查功能。
  4. enable 欄位設為 true。

以下是 YAML 檔案中的設定範例:

spec:
  compute:
    virtualMachineType: n2-standard-2-gdc
  guestEnvironment:
    guestHealthCheck:
      enable: true

驗證檢查

設定 VM 後,您可以檢查虛擬機器的 Status 中的 Condition,確認可用性檢查的狀態。

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n NAMESPACE_NAME \
  get gvm -o yaml

輸出內容會顯示各項檢查的狀態。舉例來說,如果啟用 guestHealthCheck,系統就會填入 VMGuestHealth 信號的 gvm 狀態條件。

停用 VM 高可用性

如果沒有註解,系統預設會啟用 VM 高可用性。 您可以新增註解,明確停用特定 VM 的 HA。新增註解,停用 VM HA:

  1. 開啟 VM 的設定檔。
  2. 在 VM 的中繼資料中新增 highavailability.virtualmachine.gdc.goog/enable: false 註解,即可停用高可用性。

以下是 YAML 檔案中的註解範例:

metadata:
  annotations:
    highavailability.virtualmachine.gdc.goog/enable: false

節點故障緩解

自動補救措施可解決 VM 故障問題,並維持高可用性。當基礎架構無法再支援執行中的 VM 時,系統會嘗試隔離健康狀態不良的節點,並將 VM 重新排程至健康狀態良好的節點。下列情況可能會觸發節點層級的緩解措施:

  • API 伺服器中的節點分割區:由於下列情況,主機 VM 的裸機節點會從 Management API 伺服器分割:

    • API 伺服器與節點之間的網路連線中斷。
    • 節點上的 kubelet 代理程式已停止運作。
    • 節點偵測到電源故障。
  • 使用者叢集 VM 分區:使用者叢集 worker VM 會從叢集的 Management API 伺服器分割。