手動啟動主機維護事件

本頁面說明如何在支援的 Compute Engine 執行個體上手動啟動主機維護事件。這項功能可讓您啟動維護事件,控管執行個體維護作業的時間。如果工作負載可能受到效能降低或停機時間影響,且您需要維護期間在特定時間開始,這項功能就非常實用。

手動啟動維護事件時,主機維護作業會立即開始。您無法指定維護事件的開始日期或時間。如果不使用這項功能,維護事件就會在即將進行維護通知中指出的時間發生。

如要先測試應用程式如何處理維護事件,可以模擬維護事件。

支援的機器系列

您可以手動為使用下列機器類型的執行個體,啟動主機維護事件:

事前準備

  • 如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。

必要的角色

如要取得管理 VM 維護作業所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備管理 VM 維護作業所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

必須具備下列權限,才能管理 VM 維護作業:

  • 如要取得運算執行個體的相關資訊,請執行下列指令: compute.instances.get

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

手動啟動主機維護事件

Compute Engine 會透過多種方式傳送即將進行維護作業的通知。您可以根據通知中的資訊,決定何時手動啟動維護事件。

查看通知資訊

您可以透過下列任一方式查看維護事件通知:

如果主機維護事件的通知包含 canReschedule=True 和 maintenanceStatus=Pending,您可以選擇在指定時間開始維護,或等待維護事件在 windowStartTime 指定的時間發生。

如果沒有通知,且您嘗試手動啟動維護事件,系統會顯示下列訊息:

There is no reschedulable upcoming maintenance.

這則訊息表示未排定任何維護事件,您不需要採取任何行動。

開始維護事件

您可以選擇在特定時間啟動主機維護作業,不必等到排定的時間。使用 Google Cloud CLI 或 REST 觸發維護事件,事件會立即啟動。

gcloud

如要啟動維護事件,請使用 compute instances perform-maintenance 指令。輸入指令後,主機維護作業就會立即開始。

gcloud compute instances perform-maintenance INSTANCE_NAME \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:運算執行個體的名稱。
  • ZONE:執行個體所在的可用區。

回覆內容如下:

resourceStatus:
  upcomingMaintenance:
    canReschedule: false
    latestWindowStartTime: '2025-01-15T19:57:17Z'
    maintenanceStatus: ONGOING
    type: SCHEDULED
    windowEndTime: '2025-01-15T23:57:11Z'
    windowStartTime: '2025-01-15T19:57:16Z'

在回應中,canReschedule 設為 false,maintenanceStatus 則設為 ONGOING,表示主機維護作業正在進行中。

REST

如要啟動維護事件,請使用 instances.performMaintenance 方法建構 POST 要求。

POST: https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME/performMaintenance

更改下列內容:

  • PROJECT_NAME:專案名稱
  • ZONE:運算執行個體所在的可用區
  • INSTANCE_NAME:執行個體的名稱

回應的形式如下所示:

upcomingMaintenance:{
  "canReschedule":false
  "latestWindowStartTime": "2023-12-01T19:00:01Z"
  "maintenanceStatus":"ONGOING"
  "type":"SCHEDULED"
  "windowEndTime": "2023-12-01T22:00:00Z"
  "windowStartTime": "2023-12-01T19:00:00Z"
}

在回應中,canReschedule 設為 false,maintenanceStatus 則設為 ONGOING,表示主機維護作業正在進行中。

後續步驟