管理所有運算執行個體的主機事件

本文說明如何監控、規劃及執行叢集 GPU (A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU)) 和一般 GPU 執行個體的排定維護作業。主動管理 Compute Engine 執行個體上即將發生的維護主機事件,可將服務中斷情形降至最低,並維持最佳效能。

如要瞭解更多基礎架構維護選項,請參閱下列文章:

事前準備

選取這個頁面上您打算如何使用範例的分頁:

控制台

使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

gcloud

安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

gcloud init

REST

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

    安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI

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

必要的角色

如要取得管理 Compute 執行個體主機維護事件所需的權限,請要求管理員授予您下列 IAM 角色:

  • 專案的 Compute 管理員 (roles/compute.admin)
  • 如要取得系統事件稽核記錄的唯讀存取權: 專案的「記錄檢視者」 (roles/logging.viewer)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備管理運算執行個體主機維護事件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要管理運算執行個體的主機維護事件,必須具備下列權限:

  • 如要查看執行個體的詳細資料: compute.instances.get 在專案中

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

總覽

如要最佳化運算執行個體的維護作業,請完成下列步驟:

  1. 瞭解及處理主機維護作業。瞭解執行個體依據機器系列進行維護的頻率和行為,以及如何準備工作負載來處理主機維護作業。這項資訊有助於減少中斷情形,並防止資料遺失。

  2. 設定通知快訊。建立記錄快訊,在執行個體維護作業排定、開始或完成時接收通知。這種做法有助於您主動規劃活動,避免發生非預期的停機時間。

  3. 管理執行個體的維護作業。查看執行個體是否已排定維護作業。如有需要,您可以手動啟動執行個體的維護作業。這個程序有助於提高工作負載的彈性,以便主辦活動、避免停機,並盡可能提高應用程式的可用性。

瞭解及處理主機維護作業

Compute Engine 執行個體生命週期中,執行個體所在的主體機器將經歷多個主機事件。主辦方活動可包含以下內容:

  • Compute Engine 基礎架構的預定維護作業。
  • 在主機發生錯誤或回報故障後,進行非預期的緊急維護,以修復 Compute Engine 基礎架構。

下表說明加速器最佳化機型的主機維護功能:

機型 定期維護作業的典型頻率 維護行為 預定維護作業的進階通知 緊急維護作業的進階通知 隨選維護 模擬維護作業
A4X Max 和 A4X 至少 90 天 終止於 本機 SSD 資料保存 90 天 如果 啟用緊急通知,則為 7 天。否則需要幾小時。
A4 至少 90 天 終止於 本機 SSD 資料保存 90 天 如果 啟用緊急通知,則為 7 天。否則需要幾小時。
A3 Ultra 至少 90 天 終止於 本機 SSD 資料保存 90 天 如果 啟用緊急通知,則為 7 天。否則需要幾小時。
A3 Mega 和 A3 High
(8 個 GPU)
至少 90 天 終止於 本機 SSD 資料保存 90 天 如果 啟用緊急通知,則為 7 天。否則需要幾小時。
A3 Edge 最少 30 天 終止並重新啟動 7 天 如果 啟用緊急通知,則為 7 天。否則需要幾小時。

上表顯示的維護頻率為概略值,而非保證值。Compute Engine 有時執行維護的頻率可能會更高。

為避免遺失資料或進度,請設定工作負載來處理主機維護作業。舉例來說,您可以使用下列技術,在工作負載停止前儲存暫存資料和進度:

設定 Compute 執行個體的通知快訊

您可以建立記錄檔式警告政策,在執行個體排定、開始或完成維護事件時收到通知。

如要為執行個體的維護事件建立快訊,請完成下列程序。針對要建立的每項快訊重複這個程序。

  1. 前往 Google Cloud 控制台的 「Logs Explorer」頁面

    前往「Logs Explorer」(記錄檔探索工具)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

  2. 將「顯示查詢」切換鈕設為開啟。

  3. 在「查詢」窗格中,建立下列其中一個查詢。這些查詢會篩選記錄檔項目,找出特定維護事件。如要使用多個查詢,請重複這個程序,為每個查詢建立專屬快訊。

    • 如要在執行個體排定維護作業時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "scheduled"
      
    • 如要在執行個體的維護期間開始時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "ongoing"
      
    • 如要在執行個體維護作業開始時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instance.terminateOnHostMaintenance" severity>=DEFAULT
      
    • 如要在執行個體維護作業完成時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "completed"
      
  4. 如要驗證查詢,請按一下「執行查詢」。如果查詢有效,「Query results」(查詢結果) 窗格會顯示符合查詢的記錄項目。

  5. 在「查詢」結果工具列中,按一下「動作」清單,然後選取 「建立記錄檔警告」。系統會顯示「建立記錄檔警告政策」窗格。

  6. 在「警報詳細資料」部分,執行下列操作:

    1. 在「Alert Policy Name」(快訊政策名稱) 欄位中,輸入政策名稱。

    2. 在「政策嚴重程度」清單中,選取「警告」 (或更嚴重的程度)。

    3. 點選「下一步」

  7. 在「Choose logs to include in the alert」(選擇要加入快訊的記錄) 區段中,按一下「Next」(下一步)

  8. 在「設定通知頻率和自動關閉時間長度」部分,指定下列項目:

    1. 在「通知時間間隔」清單中,選取接收通知的頻率。

    2. 在「事件自動關閉期限」清單中,選取 Cloud Logging 停止傳送通知並自動關閉事件的時間長度。

    3. 點選「下一步」

  9. 在「Who should be notified?」(應該通知誰?) 部分,指定 Logging 要傳送通知的通知管道

  10. 按一下 [儲存]

如要在 Logs Explorer 中查看維護事件通知範例,請參閱 Compute Engine 說明文件中的「維護通知範例」。

管理運算執行個體的維護作業

您可以透過下列一或多種方式,查看及控管執行個體的維護作業:

查看 Compute 執行個體的維護狀態

如要查看執行個體即將進行的維護作業狀態和排定時間,請檢查執行個體中繼資料中的 upcomingMaintenance 欄位值。如果執行個體不含 upcomingMaintenance 欄位,則表示系統未排定該執行個體的主機維護事件。如要進一步瞭解 upcomingMaintenance 中的欄位,請參閱 Compute Engine 說明文件中的「維護狀態定義」。

此外,如果執行個體排定進行維護,upcomingGroupMaintenance 欄位會包含 maintenanceReasons 欄位。這個欄位說明系統為執行個體安排維護作業的原因,如下表所示:

維護類型 維護原因 運算執行個體狀態
回報主機故障後,系統會安排維護作業 FAILURE_GPU_CUSTOMER_REPORTED 僅適用於在您回報為有故障的主機上執行的執行個體。
定期維護的預定維護作業
  • PLANNED_UPDATE:預定基礎架構維護作業
  • PLANNED_NETWORK_UPDATE:預定網路維護作業
適用於執行中、已停止或已暫停的執行個體。
非預期的緊急維護作業
  • FAILURE_DISK:由於執行個體連結的磁碟發生錯誤,因此排定非預期的維護作業。
  • FAILURE_GPU:因 GPU 相關錯誤而排定的非預期維護作業。
  • FAILURE_GPU_TEMPERATURE:非預期維護。GPU 達到高溫後,因 GPU 相關錯誤而排定維護時間。
  • FAILURE_GPU_XID:在收到因 GPU 相關錯誤而發出的 Xid 訊息後,進行非預期的維護作業。
  • FAILURE_INFRA:因基礎架構發生錯誤而安排的非預期維護作業。
  • FAILURE_INTERFACE:因 NIC 發生錯誤而排定的非預期維護作業。
  • FAILURE_MEMORY:由於執行個體記憶體發生錯誤,因此排定非預期維護作業。
  • FAILURE_NETWORK:因網路發生錯誤而排定的非預期維護作業。
  • FAILURE_NVLINK:由於 NVLink 發生錯誤,因此排定非預期的維護作業。
僅適用於執行中的執行個體。

如要在執行個體中查看 maintenanceReasons 欄位,請使用 gcloud CLI 或 REST API。如要同時查看多個運算執行個體的維護狀態,請使用 Google Cloud 控制台或 REST API。否則,請選取下列其中一個選項:

控制台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 在「維護狀態」欄中,Compute Engine 會顯示執行個體的維護狀態。如果「VM instances」(虛擬機器執行個體) 表格中未顯示這個資料欄,請按一下「Column display options」(資料欄顯示選項) view_column,選取「Maintenance status」(維護狀態) 核取方塊,然後按一下「OK」(確定)

gcloud

如要查看執行個體的維護狀態,請使用 gcloud compute instances describe 指令並加上 --flatten=resourceStatus.upcomingMaintenance 旗標:

gcloud compute instances describe INSTANCE_NAME \
    --flatten=resourceStatus.upcomingMaintenance \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:執行個體名稱。

  • ZONE:執行個體所在的可用區。

輸出結果會與下列其中一項類似:

  • 如果系統已排定執行個體的主機維護事件,輸出內容會類似於下列內容:

    ---
    canReschedule: true
    latestWindowStartTime: '2025-11-01T19:00:00Z'
    maintenanceReasons:
    - 'PLANNED_UPDATE'
    - 'PLANNED_NETWORK_UPDATE'
    maintenanceStatus: 'PENDING'
    type: 'SCHEDULED'
    windowEndTime: '2025-11-01T22:00:00Z'
    windowStartTime: '2025-11-01T19:00:00Z'
    
  • 如果執行個體未排定主機維護事件,輸出內容會類似下列範例:

    ---
    null
    

REST

如要查看執行個體的維護狀態,請發出下列其中一項 GET 要求。提出要求時,您必須加入 fields 查詢參數,才能只顯示執行個體的名稱、機型和即將進行的維護作業。您也必須加入 filter 查詢參數,才能只依特定機型篩選執行個體。

  • 如要查看所有區域的執行個體: instances.aggregatedList 方法

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE
    
  • 如要查看特定可用區中的執行個體:instances.list 方法

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE
    

更改下列內容:

  • PROJECT_ID:您建立執行個體的專案 ID。

  • ZONE:執行個體所在的可用區。

  • MACHINE_TYPE:要用來篩選執行個體的機型。

如果執行個體排定要進行主機維護事件,則執行個體會包含 upcomingMaintenance 欄位:

{
  "items": [
    {
      "name": "vm-01",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
      "resourceStatus": {
        "upcomingMaintenance": {
          "canReschedule": true,
          "latestWindowStartTime": "2024-11-01T19:00:00Z",
          "maintenanceStatus": "PENDING",
          "maintenanceReasons": [
            "PLANNED_UPDATE",
            "PLANNED_NETWORK_UPDATE"
          ],
          "type": "SCHEDULED",
          "windowEndTime": "2024-11-01T22:00:00Z",
          "windowStartTime": "2024-11-01T19:00:00Z"
        }
      }
    },
    ...
  ]
}

(選用) 如要進一步縮小執行個體清單範圍,請將 filter 查詢參數設為其他篩選運算式

中繼資料伺服器

如要查看執行個體的維護狀態,請按照下列步驟操作:

  1. 如果尚未連線,請連線至 LinuxWindows 執行個體

  2. 如要查看近期維護排程,請查詢 upcoming-maintenance 端點:

    curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"
    

    如果系統已排定執行個體的主機維護事件,輸出內容會類似於下列內容:

    "Upcoming maintenance": {
      "can_reschedule": "true",
      "latest_window_start_time": "2024-12-01T19:00:01Z",
      "maintenance_reasons": [
        "PLANNED_UPDATE",
        "PLANNED_NETWORK_UPDATE"
      ],
      "maintenance_status": "PENDING",
      "type": "SCHEDULED",
      "window_end_time": "2024-12-01T21:00:01Z",
      "window_start_time": "2024-12-01T19:00:01Z"
    }
    

    如果未排定主機維護事件,輸出內容會類似以下內容:

    { }
    
  3. 如要查看 VM 目前的維護狀態,請查詢 maintenance-event 端點:

    curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"
    

    如要進一步瞭解這些查詢的輸出內容,請參閱「查看輸出內容」。

手動啟動 Compute 執行個體的維護作業

您可以手動啟動執行個體的維護作業,不必等待排定的時間。

視執行個體的維護狀態而定,會發生下列情況:

維護狀態 說明 顯示內容
已排定 Compute Engine 已排定執行個體的維護作業。您可以在排定的時間前手動啟動維護作業。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「Ready to run - will run on DATE」(準備執行 - 將於 DATE 執行)
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 PENDING
進行中 維護作業正在進行中。你無法重新安排發布時程。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「Running」(執行中)
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 ONGOING
完成 維護作業已完成。Compute Engine 已從執行個體中移除所有維護通知。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「最新版本」
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 COMPLETE

您可以同時或個別為多個執行個體手動啟動維護作業。如要使用多個執行個體,請使用 Google Cloud 控制台;如要使用位於同一區域的執行個體,請使用 gcloud CLI。如要選取個別執行個體,請選擇下列任一選項:

控制台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 選取要開始維護的執行個體列。

  3. 按一下「執行維護作業」

  4. 按一下「執行維護作業」確認操作。

gcloud

如要手動啟動同一區域內一或多個執行個體的維護作業,請使用 gcloud compute instances perform-maintenance 指令

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

更改下列內容:

  • INSTANCE_NAMES:以空格分隔的執行個體名稱清單,例如 vm-01 vm-02 vm-03

  • ZONE:執行個體所在的可用區。

REST

如要手動啟動執行個體的維護作業,請對 instances.performMaintenance 方法發出 POST 要求:

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

更改下列內容:

  • PROJECT_ID:您建立執行個體的專案 ID。

  • ZONE:執行個體所在的可用區。

  • INSTANCE_NAME:執行個體名稱。

後續步驟