本文將概要說明虛擬機器 (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,系統預設會停用客內檢查。
- 開啟 VM 的設定檔。
- 前往
spec:部分。 - 新增或修改
guestEnvironment:和guestHealthCheck:欄位,啟用檢查。 - 將
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,gvm 狀態條件就會填入 VMGuestHealth 信號。
停用 VM 高可用性
如果沒有註解,系統預設會啟用 VM 高可用性。 您可以新增註解,明確停用特定 VM 的 HA。新增註解以停用 VM 高可用性:
- 開啟 VM 的設定檔。
- 在 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 伺服器分區。