本文說明如何監控、規劃及執行叢集式 GPU (A5X、A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU)) 和一般 GPU 執行個體的排定維護作業。主動管理 Compute Engine 執行個體上即將發生的維護主機事件,可盡量減少中斷情形,並維持最佳效能。
如要瞭解維護基礎架構的其他選項,請參閱下列文章:
如要管理預留容量區塊的維護作業 (無論運算執行個體是否在其中執行),請參閱「管理所有預留項目的主機事件」。
如要管理 Cluster Director 中叢集的維護作業,請參閱「管理叢集健康狀態」。
事前準備
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。
gcloud
安裝 Google Cloud CLI,然後使用聯合身分登入 gcloud CLI。 登入後, 執行下列指令來初始化 Google Cloud CLI:
gcloud initREST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
必要的角色
如要取得管理運算執行個體主機維護事件所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的 Compute 管理員 (
roles/compute.admin) -
如要以唯讀方式存取系統事件稽核記錄:專案的記錄檢視者 (
roles/logging.viewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備管理所有運算執行個體主機維護事件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
必須具備下列權限,才能管理所有運算執行個體的主機維護事件:
-
如要查看執行個體的詳細資料:
compute.instances.get專案
總覽
如要最佳化運算執行個體的維護作業,請完成下列步驟:
瞭解及處理主機維護作業。瞭解執行個體的維護頻率和行為 (取決於機器系列),以及如何準備工作負載來處理主機維護作業。這項資訊有助於盡可能減少服務中斷,並防止資料遺失。
設定通知快訊。建立記錄式警告,在執行個體排定、開始或完成維護作業時接收通知。這種做法有助於主動規劃活動,避免意外停機。
管理所有執行個體的維護作業。查看執行個體是否已排定維護作業。如有需要,您可以手動啟動執行個體的維護作業。這項程序有助於提高工作負載對主機事件的韌性、避免停機,並盡可能提高應用程式的可用性。
瞭解及處理主機維護作業
在 Compute Engine 執行個體的生命週期中,執行個體運作的主機機器會經歷多個主機事件。主機事件可能包含以下內容:
- Compute Engine 基礎架構的預定維護作業。
- 在主機發生錯誤或收到主機故障報告後,進行非預定的緊急維護作業,修復 Compute Engine 基礎架構。
下表說明加速器最佳化機器類型的主機維護功能:
| 機型 | 一般排定維護事件頻率 | 維護行為 | 預定維護作業的提前通知 | 緊急維護作業提前通知 | 隨選維護 | 模擬維護作業 |
|---|---|---|---|---|---|---|
| A5X | 至少 90 天 | 終止並保留本機 SSD 資料 | 90 天 | 如果 啟用緊急通知,則為 7 天。否則,系統可能需要幾小時才能恢復服務。 | 是 | 否 |
| 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 有時可能會更頻繁地執行維護作業。
為避免遺失資料或進度,請設定工作負載來處理主機維護作業。舉例來說,您可以使用下列技術,在工作負載停止前儲存暫存資料和進度:
設定運算執行個體的通知快訊
您可以建立記錄式警告政策,在執行個體有排定、開始或完成的維護事件時收到通知。
如要為執行個體的維護事件建立警告,請完成下列程序。針對要建立的每個快訊,重複執行這項程序。
-
前往 Google Cloud 控制台的 「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
將「Show query」(顯示查詢) 切換鈕設為開啟。
在「查詢」窗格中,建立下列其中一項查詢。這些查詢會篩選記錄項目,找出特定維護事件。如要使用多個查詢,請重複這項程序,為每個查詢建立專屬快訊。
如要在執行個體排定維護作業時收到快訊,請按照下列步驟操作:
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"
如要驗證查詢,請按一下「執行查詢」。如果查詢有效,「Query results」(查詢結果) 窗格會顯示符合查詢的記錄項目。
在「Query results」(查詢結果) 工具列中,按一下「Actions」(動作) 清單,然後選取 「Create log alert」(建立記錄檔警告)。系統會顯示「Create logs-based alert policy」(建立記錄檔警告政策) 窗格。
在「Alert details」(快訊詳細資料) 部分,執行下列操作:
在「Alert Policy Name」(警告政策名稱) 欄位中,輸入政策名稱。
在「Policy severity level」(政策嚴重性等級) 清單中,選取「Warning」(警告) (或更高的嚴重性)。
點選「下一步」。
在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 區段中,按一下「Next」(下一步)。
在「Set notification frequency and autoclose duration」(設定通知頻率和自動關閉期限) 區段中,指定下列項目:
在「Time between notifications」(通知時間間隔) 清單中,選取接收通知的頻率。
在「Incident autoclose duration」(事件自動關閉期限) 清單中,選取 Cloud Logging 停止傳送通知並自動關閉事件的時間。
點選「下一步」。
在「Who should be notified?」(應該通知誰?) 部分,指定 Logging 要傳送通知的通知管道。
按一下「儲存」。
如要在 Logs Explorer 中查看維護事件通知範例,請參閱 Compute Engine 說明文件中的「維護通知範例」。
管理所有運算執行個體的維護作業
您可以透過下列一或多項操作,查看及控管執行個體的維護作業:
如要查看執行個體即將進行的維護作業狀態和排定時間,請查看執行個體的維護狀態。
如要立即開始維護執行個體,而非等待排定的維護時間,請手動啟動執行個體維護作業。
查看運算執行個體的維護狀態
您可以查看執行個體中繼資料的 upcomingMaintenance 欄位值,瞭解執行個體即將進行的維護作業狀態和排定時間。如果執行個體不含 upcomingMaintenance 欄位,則表示該執行個體未排定主機維護事件。如要進一步瞭解 upcomingMaintenance 中的欄位,請參閱 Compute Engine 說明文件中的「維護狀態定義」。
此外,如果執行個體已排定維護作業,upcomingGroupMaintenance 欄位會包含 maintenanceReasons 欄位。這個欄位說明執行個體排定維護作業的原因,如下表所示:
| 維護類型 | 維護原因 | 運算執行個體狀態 |
|---|---|---|
| 回報主機故障後,排定維護作業 | FAILURE_GPU_CUSTOMER_REPORTED |
僅適用於在您回報為故障的主機上執行的執行個體。 |
| 定期維護的預定維護作業 |
|
適用於運作中、已停止或已暫停的執行個體。 |
| 非預定的緊急維護作業 |
|
僅適用於執行中的執行個體。 |
如要查看執行個體中的 maintenanceReasons 欄位,必須使用 gcloud CLI 或 REST API。如要同時查看多個運算執行個體的維護狀態,請使用 Google Cloud 控制台或 REST API。否則,請選取下列其中一個選項:
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
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 查詢參數設為其他篩選運算式。
中繼資料伺服器
如要查看執行個體的維護狀態,請按照下列步驟操作:
如果您尚未連線至 Linux 或 Windows 執行個體,請先連線。
如要查看近期維護排程,請查詢
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" }如果未排定主機維護事件,輸出內容會與下列內容相似:
{ }如要查看 VM 目前的維護狀態,請查詢
maintenance-event端點:curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"如要進一步瞭解這些查詢的輸出內容,請參閱「查看輸出內容」。
手動對運算執行個體展開維護作業
您可以手動啟動執行個體的維護作業,不必等到排定時間。
視執行個體的維護狀態而定,系統會執行下列操作:
| 維護狀態 | 說明 | 顯示內容 |
|---|---|---|
| 已排定 | Compute Engine 已排定執行個體的維護作業。您可以在排定的時間前手動啟動維護作業。 |
|
| 進行中 | 維護作業進行中,無法重新安排。 |
|
| 完成 | 維護作業已完成。Compute Engine 已從執行個體中移除所有維護通知。 |
|
您可以手動同時啟動多個執行個體的維護作業,也可以個別啟動。如要刪除多個執行個體,請使用 Google Cloud 控制台。如果執行個體位於相同可用區,則可使用 gcloud CLI。如果是個別執行個體,請選取下列任一選項:
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
選取要開始維護的執行個體資料列。
按一下「 執行維護作業」。
按一下「執行維護作業」確認操作。
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:執行個體名稱。
後續步驟
如要在主機事件發生後測試工作負載,請參閱「基準測試方法」。
如要進一步瞭解如何監控 VM,請參閱「監控 VM 和 Slurm 叢集」。