本文說明如何使用 Cluster Director 套件提供的主機維護功能。本文說明如何監控、規劃及執行 Compute Engine 執行個體的排定維護作業。如要管理預留容量區塊的維護作業 (無論運算執行個體是否在這些區塊上執行),請參閱「管理所有預留項目的主機事件」。
主動管理執行個體上即將發生的主機維護事件,可將服務中斷情形降到最低,並維持最佳效能。
事前準備
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
必要的角色
如要取得管理 Compute 執行個體主機維護事件所需的權限,請要求管理員授予您下列 IAM 角色:
-
Compute 管理員 (
roles/compute.admin) 專案 -
如要取得系統事件稽核記錄的唯讀存取權:
專案的「記錄檢視者」 (
roles/logging.viewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備管理運算執行個體主機維護事件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要管理運算執行個體的主機維護事件,必須具備下列權限:
-
如要查看執行個體的詳細資料:
compute.instances.get在專案中
總覽
如要最佳化運算執行個體的維護作業,請完成下列步驟:
瞭解及處理主機維護作業。瞭解執行個體依據機器系列進行維護的頻率和行為,並瞭解如何準備工作負載來處理主機維護作業。這項資訊有助於減少中斷情形,並防止資料遺失。
設定通知快訊。建立記錄快訊,在執行個體排定、開始或完成維護作業時接收通知。這個方法有助於您主動規劃活動,避免發生非預期的停機時間。
管理執行個體的維護作業。查看執行個體是否已排定維護作業。如有需要,您可以手動啟動執行個體的維護作業。這個程序可協助您提高工作負載的彈性,以便主辦活動、避免停機,並盡可能提高應用程式的可用性。
瞭解及處理主機維護作業
在 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 天。否則需要幾小時。 | 是 | 是 |
上表顯示的維護頻率為概略值,而非保證值。Compute Engine 有時執行維護的頻率可能會更高。
為避免遺失資料或進度,請設定工作負載來處理主機維護作業。舉例來說,您可以使用下列技術,在工作負載停止前儲存暫時資料和進度:
設定運算執行個體的通知快訊
您可以建立記錄檔式警告政策,在執行個體排定、開始或完成維護事件時收到通知。
如要為執行個體的維護事件建立快訊,請完成下列程序。針對要建立的每項快訊重複這個程序。
-
前往 Google Cloud 控制台的 「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
將「顯示查詢」切換鈕設為開啟。
在「查詢」窗格中,建立下列其中一個查詢。這些查詢會篩選記錄檔項目,找出特定維護事件。如要使用多個查詢,請重複這個程序,為每個查詢建立專屬快訊。
如要在執行個體排定維護作業時收到快訊,請按照下列步驟操作:
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」(查詢結果) 窗格會顯示符合查詢的記錄項目。
在「查詢」結果工具列中,按一下「動作」清單,然後選取 「建立記錄檔警告」。系統會顯示「建立記錄檔警告政策」窗格。
在「警報詳細資料」部分,執行下列操作:
在「快訊政策名稱」欄位中,輸入政策名稱。
在「政策嚴重程度」清單中,選取「警告」 (或更嚴重的程度)。
點選「下一步」。
在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 區段中,按一下「Next」(下一步)。
在「設定通知頻率和自動關閉時間長度」部分,指定下列項目:
在「通知時間間隔」清單中,選取通知頻率。
在「事件自動關閉期限」清單中,選取 Cloud Logging 停止傳送通知並自動關閉事件的時間長度。
點選「下一步」。
在「Who should be notified?」(應該通知誰?) 部分,指定 Logging 要傳送通知的通知管道。
按一下 [儲存]。
如要在記錄檔探索工具中查看維護事件通知範例,請參閱 Compute Engine 說明文件中的「維護通知範例」。
管理運算執行個體的維護作業
您可以透過下列一或多種方式,查看及控管執行個體的維護作業:
如要查看執行個體即將進行的維護作業狀態和排定時間,請查看執行個體的維護狀態。
如要立即開始維護執行個體,不必等待排定的維護時間,請手動開始維護執行個體。
查看 Compute 執行個體的維護狀態
如要查看執行個體即將進行的維護作業狀態和排定時間,請檢查執行個體中繼資料中的 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 會顯示執行個體的維護狀態。如果「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 查詢參數設為其他篩選運算式。
中繼資料伺服器
如要查看執行個體的維護狀態,請按照下列步驟操作:
如果尚未連線,請連線至 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 叢集」。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2026-02-26 (世界標準時間)。