VM 彈性

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

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

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

VM 可用性檢查

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

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

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

要求權限和存取權

如要執行本頁列出的工作,您必須擁有專案虛擬機器管理員角色。按照步驟驗證您在 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

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

停用 VM 高可用性

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

  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 分區:使用者叢集工作站 VM 會從叢集的 Management API 伺服器分區。