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

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

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

事前準備

選取這個頁面上範例的預計用途分頁:

控制台

使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。

gcloud

在 Google Cloud 控制台啟用 Cloud Shell。

啟用 Cloud Shell

Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。

REST

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

    安裝 Google Cloud CLI。

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

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

必要的角色

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

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

這些預先定義的角色具備管理所有運算執行個體主機維護事件所需的權限。如要查看確切的必要權限,請展開「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 有時可能會更頻繁地執行維護作業。

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

設定運算執行個體的通知快訊

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

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

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

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

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

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

  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. 在「Query」(查詢) 結果工具列中,按一下「Actions」(動作) 清單,然後選取 「Create log alert」(建立記錄檔警告)。系統會顯示「建立記錄檔警告政策」窗格。

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

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

    2. 在「Policy severity level」(政策嚴重性等級) 清單中,選取「Warning」(警告) (或更高的嚴重性)。

    3. 點選「下一步」。

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

  8. 在「Set notification frequency and autoclose duration」(設定通知頻率和自動關閉期限) 區段中,指定下列項目:

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

    2. 在「Incident autoclose duration」(事件自動關閉期限) 清單中,選取 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 會在「Maintenance status」(維護狀態) 欄中顯示執行個體的維護狀態。如果「VM instances」(VM 執行個體) 表格中未顯示這個資料欄,請按一下 view_column「Column display options」(資料欄顯示選項),勾選「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. 如果您尚未連線至 Linux 或 Windows 執行個體,請先連線。

  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 Engine 正在對執行個體進行排定的維護作業。您可以在排定的時間前手動啟動維護作業。
  • 在 Google Cloud 控制台中,維護狀態會顯示為 準備執行 - 將於 DATE執行」。
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 PENDING。
進行中 維護作業正在進行中。你無法重新安排時間。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「Running」(執行中)。
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 ONGOING。
完成 維護作業已完成。Compute Engine 已從執行個體中移除所有維護通知。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「Up-to-date」(最新)。
  • 在 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:執行個體名稱。

後續步驟