設定運算執行個體的主機維護政策

本文說明如何設定 Compute Engine 執行個體的主機維護政策,決定主機事件期間的行為。如要進一步瞭解主機維護政策,請參閱「主機維護政策」。

主機維護政策會決定當執行個體運作的主機需要維護或發生錯誤時,執行個體應如何回應。設定執行個體的主機維護政策,有助於執行下列操作:

  • 盡量減少停機時間。

  • 防範資料遺失。

限制

主機維護政策有以下限制:

  • 使用 E2 機型的虛擬機器執行個體,只能在主機維護事件期間即時遷移,除非是 Spot VM 或先占 VM。

  • 下列執行個體只能在主機維護事件期間停止:

    • 不支援即時遷移的執行個體,例如:
      • H4D 執行個體
      • Titanium SSD 附加容量超過 18,000 GiB 的 Z3 執行個體
      • Z4D 和 Z4M 執行個體,連接超過 42,000 GiB 的 Titanium SSD
      • 具有 Cloud RDMA 網路介面的執行個體
      • 裸機執行個體
      • 已連接 GPU 或 TPU 的 VM
    • Spot VM 或先占 VM。
  • 發生主機錯誤或排定的停止作業後,Spot VM 和先占 VM 無法自動重新啟動。

事前準備

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

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

    控制台

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

    gcloud

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

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

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

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

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

必要的角色

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

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

所需權限

您必須具備下列權限,才能設定運算執行個體的主機維護政策:

  • 如要建立執行個體,請按照下列步驟操作:
    • 專案的 compute.instances.create 權限
    • 如要使用自訂映像檔建立 VM,請在映像檔上compute.images.useReadOnly
    • 如要使用快照建立 VM,請在快照上compute.snapshots.useReadOnly
    • 如要使用執行個體範本建立 VM,請在執行個體範本上按一下「compute.instanceTemplates.useReadOnly」
    • 如要將舊版網路指派給 VM,請在專案中執行 compute.networks.use
    • 如要為 VM 指定靜態 IP 位址,請在專案中執行 compute.addresses.use
    • 如要在使用舊版網路時,為 VM 指派外部 IP 位址,請在專案上執行 compute.networks.useExternalIp
    • 如要為 VM 指定子網路:compute.subnetworks.use 專案或所選子網路
    • 如要在使用虛擬私有雲網路時,為 VM 指派外部 IP 位址,請在專案或所選子網路上,指派 compute.subnetworks.useExternalIp 角色
    • 如要為專案中的 VM compute.instances.setMetadata 設定 VM 執行個體中繼資料,請按照下列步驟操作:
    • 如要設定 VM 的標記,請在 VM 上執行 compute.instances.setTags
    • 如要設定 VM 的標籤,請在 VM 上執行 compute.instances.setLabels
    • 如要設定 VM 使用的服務帳戶,請在 VM 上執行 compute.instances.setServiceAccount
    • 如要為 VM 建立新磁碟,請在專案中執行 compute.disks.create
    • 如要以唯讀或讀寫模式連接現有磁碟,請在磁碟上compute.disks.use
    • 如要以唯讀模式連接現有磁碟:在磁碟上compute.disks.useReadOnly
  • 如要建立執行個體範本,請在專案中執行 compute.instanceTemplates.create
  • 如要更新執行個體的主機維護政策,請在執行個體上執行 compute.instances.setScheduling

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

可用的主機維護屬性

您可以自訂運算執行個體在排定維護作業或非預期主機事件期間的行為。除非另有指定,否則在建立 執行個體或執行個體範本。

您可以設定下列主機維護屬性:

  • 維護行為 (onHostMaintenance):主機維護事件期間,執行個體會發生什麼情況,可能導致執行個體重新啟動。您可以將這項屬性設為下列其中一項:

    • 遷移:Compute Engine 會自動將執行個體即時遷移至其他主機。除了 Spot VM 和先占 VM 以外,這是所有類型執行個體的預設設定。

    • 終止:Compute Engine 會停止執行個體。這是 Spot VM 或先占 VM 的預設設定,也是 H4D 執行個體、連接超過 18,000 GiB Titanium SSD 的 Z3 執行個體、連接超過 42,000 GiB Titanium SSD 的 Z4D 和 Z4M 執行個體、具有 Cloud RDMA 網路介面的執行個體、裸機執行個體,以及連接 GPU 或 TPU 的執行個體唯一支援的設定。

  • 自動重新啟動 (automaticRestart):如果執行個體當機,或 Compute Engine 因排定的停止作業 (例如維護事件) 而停止執行個體,是否要重新啟動執行個體。您可以將這項屬性設為下列其中一個值:

    • 啟用:Compute Engine 會自動重新啟動執行個體。除了 Spot VM 和先占 VM 以外,這是所有類型執行個體的預設設定。這項設定的指定方式如下:

      • 如果是 Google Cloud 控制台,請在「Advanced」(進階) 窗格的「Automatic restart」(自動重新啟動) 清單中,選取「On (recommended)」(開啟 (建議))。

      • 如果是 Google Cloud CLI,請使用 --restart-on-failure 旗標。

      • 如果是 REST,請將 automaticRestart 欄位設為 true。

    • 關閉:Compute Engine 不會重新啟動執行個體。這是 Spot VM 或先占 VM 的預設設定。這項設定的指定方式如下:

      • 如果是 Google Cloud 控制台,請在「Advanced」(進階) 窗格的「Automatic restart」(自動重新啟動) 清單中,選取「Off」(關閉)。

      • 如果是 gcloud CLI,請使用 --no-restart-on-failure 旗標。

      • 如果是 REST,請將 automaticRestart 欄位設為 false。

  • 本機 SSD 資料復原逾時 (localSsdRecoveryTimeout):這項設定僅適用於已連接本機 SSD 磁碟的執行個體。這項設定會決定 Compute Engine 在主機發生錯誤後,等待多久才復原本機 SSD 磁碟的資料。根據預設,這項屬性未設定。

    您可以將 localSsdRecoveryTimeout 屬性設為下列其中一項:

    • 未設定:Compute Engine 會使用預設等待時間:

      • Z4M 裸機執行個體和 Z3 裸機 z3-highmem-192-highlssd-metal:168 小時

      • Z4D、Z4M 和 Z3 VM:6 小時

      • 所有其他類型的執行個體:1 小時

    • 0 到 168 之間的整數:等待的小時數。如果將這項屬性設為 0,Compute Engine 就不會復原本機 SSD 資料,而是立即重新啟動執行個體。

  • 主機錯誤逾時 (hostErrorTimeoutSeconds):這項屬性決定 Compute Engine 等待多久後,會重新啟動沒有回應的執行個體。您必須在執行個體停止回應前完成這項設定。請設定足夠的逾時時間,讓執行個體能從無回應狀態中復原。您可以將這項屬性設為下列其中一個值:

    • 未設定:Compute Engine 最多會等待 330 秒 (5 分 30 秒)。這是所有類型執行個體的預設設定。

    • 90 到 330 之間的整數:等待時間 (以秒為單位),以 30 秒為單位遞增。

設定執行個體的主機維護政策

根據預設,運算執行個體會使用主機維護政策的預設設定。如要自訂這些設定,請使用下列其中一種方法:

設定現有執行個體的政策

變更現有執行個體的主機維護政策前,請確認下列事項:

  • 您無法變更下列類型執行個體的維護行為 (onHostMaintenance):

  • 您無法將 Spot VM 或先占 VM 設為在主機錯誤或排定的停止作業後自動重新啟動。

如要變更已連接本機 SSD 磁碟的執行個體本機 SSD 資料復原逾時時間,請使用 gcloud CLI 或 REST API。否則,請選取下列任一選項:

控制台

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

    前往 VM 執行個體

  2. 在「Name」(名稱) 欄中,按一下要更新的執行個體名稱。系統會顯示執行個體詳細資料頁面。

  3. 按一下「Edit」(編輯)。系統隨即會顯示可編輯執行個體屬性的頁面。

  4. 在「管理」部分,您可以執行下列一或多項操作:

    • 如要變更維護事件期間的行為,請從「On host maintenance」(主機維護時) 清單中選取其他選項

    • 如要變更重新啟動無回應執行個體前的逾時時間,請從「Host error timeout」(主機錯誤逾時) 清單中選取其他選項。

    • 如要變更主機發生錯誤或排定停止後是否重新啟動執行個體,請從「Automatic restart」(自動重新啟動) 清單中選取其他選項。

  5. 按一下「儲存」。

gcloud

如要變更現有執行個體的主機維護政策,請使用 gcloud compute instances set-scheduling 指令,並搭配下列一或多個旗標:

  • 如要變更主機維護行為,請加入 --maintenance-policy 旗標。

  • 如要變更自動重新啟動行為,請採取下列任一做法:

    • 如要自動重新啟動執行個體,請加入 --restart-on-failure 旗標。

    • 如要防止執行個體自動重新啟動,請加入 --no-restart-on-failure 旗標。

  • 如果執行個體已連接本機 SSD 磁碟,請加入 --local-ssd-recovery-timeout 旗標,變更本機 SSD 資料復原逾時時間。

  • 如要變更主機錯誤逾時時間,請加入 --host-error-timeout-seconds 旗標。

舉例來說,如要變更主機維護行為、在主機發生錯誤或排定停止後自動重新啟動執行個體、變更本機 SSD 資料復原逾時時間,以及變更主機錯誤逾時時間,請執行下列指令:

gcloud compute instances set-scheduling INSTANCE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:執行個體名稱。

  • ERROR_DETECTION_TIMEOUT:Compute Engine 重新啟動無回應執行個體前的秒數。值必須介於 90 (90 秒) 和 330 (330 秒,或 5 分 30 秒) 之間。只能以 30 秒為單位遞增。

  • MAINTENANCE_POLICY:執行個體的維護行為。可能的值為 TERMINATE 或 MIGRATE。

  • LOCAL_SSD_RECOVERY_TIMEOUT:從連接的本機 SSD 磁碟復原資料所需時數。值必須介於 0 (0 小時) 和 168 (168 小時,或 7 天) 之間。如果將這個欄位設為 0,Compute Engine 就不會復原本機 SSD 資料。

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

REST

如要變更現有執行個體的主機維護政策,請向 instances.setScheduling 方法提出 POST 要求。在要求主體中,加入下列一或多個欄位:

  • 如要變更主機維護行為,請加入 onHostMaintenance 欄位。

  • 如要變更自動重新啟動行為,請採取下列任一做法:

    • 如要自動重新啟動執行個體,請加入 automaticRestart 欄位。

    • 如要防止執行個體自動重新啟動,請加入 automaticRestart 欄位。

  • 如果執行個體已連接本機 SSD 磁碟,如要變更本機 SSD 資料復原逾時時間,請加入 localSsdRecoveryTimeout 欄位。

  • 如要變更主機錯誤逾時,請加入 hostErrorTimeoutSeconds 欄位。

舉例來說,如要變更主機維護行為、在主機發生錯誤或排定停止後自動重新啟動執行個體、變更本機 SSD 資料復原逾時,以及變更主機錯誤逾時,請提出下列要求:

POST https://compute./compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling

{
  "automaticRestart": AUTOMATIC_RESTART,
  "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
  "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
  "onHostMaintenance": "MAINTENANCE_POLICY"
}

更改下列內容:

  • PROJECT_ID:執行個體所在專案的 ID。

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

  • INSTANCE_NAME:執行個體名稱。

  • AUTOMATIC_RESTART:執行個體當機或 Compute Engine 依排程停止執行個體時,執行個體的自動重新啟動行為。指定下列其中一個值:

    • 如要讓 Compute Engine 自動重新啟動執行個體,請執行下列操作: true

    • 如要避免自動重新啟動:false

  • ERROR_DETECTION_TIMEOUT:重新啟動無回應執行個體前的秒數。值必須介於 90 (90 秒) 和 330 (330 秒,或 5 分鐘 30 秒) 之間。只能以 30 秒為單位遞增。

  • LOCAL_SSD_RECOVERY_TIMEOUT:從連接的本機 SSD 磁碟復原資料所需時數。值必須介於 0 (0 小時) 和 168 (168 小時,或 7 天) 之間。如果將這個欄位設為 0,Compute Engine 就不會復原本機 SSD 資料。

  • MAINTENANCE_POLICY:執行個體的維護行為。可能的值為 TERMINATE 或 MIGRATE。

在建立執行個體時設定政策

建立運算執行個體時,您可以設定主機維護政策。

如要在建立已連接本機 SSD 磁碟的執行個體時,設定本機 SSD 資料復原逾時時間,請使用 gcloud CLI 或 REST API。否則,請選取下列任一選項:

控制台

  1. 前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「Create an instance」(建立執行個體)

  2. 在「Name」(名稱) 欄位中,輸入執行個體的名稱。

  3. 在「Region」(區域) 和「Zone」(可用區) 欄位中,指定要在哪個區域和可用區建立執行個體。

  4. 指定執行個體的機型。

  5. 在導覽選單中,按一下「Advanced」(進階)。

  6. 在「Provisioning model」(佈建模式) 部分,展開「VM provisioning model advanced settings」(VM 佈建模式進階設定),然後執行下列一或多項操作:

    • 如要設定維護事件期間的行為,請在「On host maintenance」(主機維護時) 清單中選取下列其中一個選項:

      • 如要在主機維護事件期間遷移執行個體,請選取「Migrate VM instance (recommended)」(遷移 VM 執行個體 (建議))。

      • 如要在主機維護事件期間停止執行個體,請選取「Terminate VM instance」(終止 VM 執行個體)。

    • 如要設定重新啟動無回應執行個體前的逾時時間,請在「Host error timeout」(主機錯誤逾時) 清單中選取下列其中一個選項:

      • 如不指定主機錯誤逾時,請選取「Unspecified (default)」(未指定 (預設))。

      • 如要指定主機錯誤逾時時間,請選取其中一個可用選項,最長可達 5 分 30 秒。

    • 如要設定是否在執行個體停止運作或停止時重新啟動,請在「Automatic restart」(自動重新啟動) 清單中選取下列其中一個選項:

      • 如要在主機發生錯誤或排定停止後自動重新啟動執行個體,請選取「On (recommended)」(開啟 (建議))。

      • 如要防止執行個體在主機發生錯誤或程式化停止後自動重新啟動,請選取「Off」(關閉)。

  7. 點選「建立」。

gcloud

如要在建立執行個體時設定主機維護政策,請使用 gcloud compute instances create 指令,並搭配下列一或多個旗標:

  • 如要設定主機維護行為,請加入 --maintenance-policy 旗標。

  • 如要設定自動重新啟動行為,請執行下列其中一項操作:

    • 如要自動重新啟動執行個體,請加入 --restart-on-failure 旗標。

    • 如要防止執行個體自動重新啟動,請加入 --no-restart-on-failure 旗標。

  • 如果執行個體已連接本機 SSD 磁碟,請加入 --local-ssd-recovery-timeout 旗標,設定本機 SSD 資料復原逾時時間。

  • 如要設定主機錯誤逾時,請加入 --host-error-timeout-seconds 旗標。

舉例來說,如要設定主機維護行為、在主機發生錯誤或排定停止後自動重新啟動執行個體、設定本機 SSD 資料復原逾時,以及設定主機錯誤逾時,請執行下列指令:

gcloud compute instances create INSTANCE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:執行個體的名稱。

  • ERROR_DETECTION_TIMEOUT:重新啟動無回應執行個體前的秒數。值必須介於 90 (90 秒) 和 330 (330 秒,或 5 分鐘 30 秒) 之間。只能以 30 秒為單位遞增。

  • LOCAL_SSD_RECOVERY_TIMEOUT:從連接的本機 SSD 磁碟復原資料所需時數。值必須介於 0 (0 小時) 和 168 (168 小時,或 7 天) 之間。如果將這個欄位設為 0,Compute Engine 就不會復原本機 SSD 資料。

  • MACHINE_TYPE:要使用的機型。

  • MAINTENANCE_POLICY:執行個體的維護行為。值可以是 TERMINATE 或 MIGRATE。如果您建立的是 Spot VM、先占 VM 或不支援即時遷移的執行個體,則只能使用 TERMINATE。

  • ZONE:要建立執行個體的可用區。

REST

如要在建立執行個體時設定主機維護政策,請向 instances.insert 方法發出 POST 要求。在要求主體的 scheduling 欄位中,加入下列一或多個欄位:

  • 如要設定主機維護行為,請加入 onHostMaintenance 欄位。

  • 如要設定自動重新啟動行為,請執行下列其中一項操作:

    • 如要自動重新啟動執行個體,請加入 automaticRestart 欄位。

    • 如要防止執行個體自動重新啟動,請加入 automaticRestart 欄位。

  • 如果執行個體已連接本機 SSD 磁碟,請加入 localSsdRecoveryTimeout 欄位,設定本機 SSD 資料復原逾時時間。

  • 如要設定主機錯誤逾時,請加入 hostErrorTimeoutSeconds 欄位。

舉例來說,如要設定主機維護行為、在主機錯誤或排定的停止作業後自動重新啟動執行個體、設定本機 SSD 資料復原逾時,以及設定主機錯誤逾時,請提出如下要求:

POST https://compute./compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "automaticRestart": AUTOMATIC_RESTART,
    "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
    "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
    "onHostMaintenance": "MAINTENANCE_POLICY"
  }
}

更改下列內容:

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

  • ZONE:要建立執行個體的可用區。

  • INSTANCE_NAME:執行個體的名稱。

  • MACHINE_TYPE:要使用的機型。

  • IMAGE_PROJECT:包含映文件的映文件專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE:指定下列其中一項:

    • OS 映像檔的特定版本,例如 debian-12-bookworm-v20240617。

    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。這會指定最新且未淘汰的 OS 映像檔。例如,如果指定 family/debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • AUTOMATIC_RESTART:執行個體當機或 Compute Engine 依排程停止執行個體時,執行個體的自動重新啟動行為。指定下列其中一個值:

    • 如要讓 Compute Engine 自動重新啟動執行個體,請執行下列操作: true

    • 如要避免自動重新啟動:false

  • ERROR_DETECTION_TIMEOUT:重新啟動無回應執行個體前的秒數。值必須介於 90 (90 秒) 和 330 (330 秒,或 5 分鐘 30 秒) 之間。只能以 30 秒為單位遞增。

  • LOCAL_SSD_RECOVERY_TIMEOUT:從連接的本機 SSD 磁碟復原資料所需時數。這個值必須介於 0 (0 小時) 和 168 (168 小時,或 7 天) 之間。如果將這個欄位設為 0,Compute Engine 就不會復原本機 SSD 資料。

  • MAINTENANCE_POLICY:執行個體的維護行為。值可以是 TERMINATE 或 MIGRATE。如果您建立的是 Spot VM 或不支援即時遷移的執行個體,則只能使用 TERMINATE。

如要進一步瞭解如何建立執行個體,請參閱「建立及啟動 Compute Engine 執行個體」。

在建立執行個體範本時設定政策

您可以在建立執行個體範本時設定主機維護政策。使用範本建立的所有運算執行個體,都會沿用範本中指定的主機維護政策。

如要在建立指定本機 SSD 磁碟的執行個體範本時,設定本機 SSD 資料復原逾時時間,請使用 gcloud CLI 或 REST API。否則,請選取下列任一選項:

控制台

  1. 前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本) 頁面

  2. 按一下「Create instance template」(建立執行個體範本)。「Create instance template」(建立執行個體範本) 頁面隨即顯示。

  3. 在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。

  4. 在「地區」部分,選取下列其中一個選項:

    • 如要建立區域執行個體範本,請選取「Regional (recommended)」(區域 (建議)),然後選取要建立範本的區域。

    • 如要建立全域執行個體範本,請選取「Global」(全域)。

  5. 在「Machine configuration」(機器設定) 部分,指定執行個體範本的機器類型。

  6. 在「Provisioning model」(佈建模式) 部分,展開「VM provisioning model advanced settings」(VM 佈建模式進階設定),然後執行下列一或多項操作:

    • 如要變更維護事件期間的行為,請在「On host maintenance」(主機維護時) 清單中選取下列其中一個選項:

      • 如要在主機維護事件期間遷移執行個體,請選取「Migrate VM instance (recommended)」(遷移 VM 執行個體 (建議))。

      • 如要在主機維護事件期間停止執行個體,請選取「Terminate VM instance」(終止 VM 執行個體)。

    • 如要變更重新啟動無回應執行個體前的逾時時間,請在「Host error timeout」(主機錯誤逾時) 清單中選取下列其中一個選項:

      • 如不指定主機錯誤逾時,請選取「Unspecified (default)」(未指定 (預設))。

      • 如要指定主機錯誤逾時時間,請選取其中一個可用選項,最長可達 5 分 30 秒。

    • 如要變更是否在執行個體當機或停止時重新啟動,請在「Automatic restart」(自動重新啟動) 清單中選取下列其中一個選項:

      • 如要在主機發生錯誤或排定停止後自動重新啟動執行個體,請選取「On (recommended)」(開啟 (建議))。

      • 如要防止執行個體在主機發生錯誤或程式化停止後自動重新啟動,請選取「Off」(關閉)。

  7. 點選「建立」。

gcloud

如要在建立執行個體範本時設定主機維護政策,請使用 gcloud compute instance-templates create 指令,並搭配下列一或多個旗標:

  • 如要設定主機維護行為,請加入 onHostMaintenance 欄位。

  • 如要設定自動重新啟動行為,請執行下列其中一項操作:

    • 如要自動重新啟動執行個體,請加入 automaticRestart 欄位。

    • 如要防止執行個體自動重新啟動,請加入 automaticRestart 欄位。

  • 如果執行個體已連接本機 SSD 磁碟,請加入 localSsdRecoveryTimeout 欄位,設定本機 SSD 資料復原逾時時間。

  • 如要設定主機錯誤逾時,請加入 hostErrorTimeoutSeconds 欄位。

舉例來說,如要設定主機維護行為、在主機發生錯誤或排定停止後自動重新啟動執行個體、設定本機 SSD 資料復原逾時,以及設定主機錯誤逾時,請執行下列指令。以下範例也會建立區域執行個體範本。如要建立全域執行個體範本,請使用相同指令,但不加上 --instance-template-region 旗標。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --instance-template-region=REGION \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

  • ERROR_DETECTION_TIMEOUT:重新啟動無回應執行個體前的秒數。值必須介於 90 (90 秒) 和 330 (330 秒,或 5 分鐘 30 秒) 之間。只能以 30 秒為單位遞增。

  • REGION:要建立執行個體範本的區域。

  • LOCAL_SSD_RECOVERY_TIMEOUT:從連接的本機 SSD 磁碟復原資料所需時數。值必須介於 0 (0 小時) 和 168 (168 小時,或 7 天) 之間。如果將這個欄位設為 0,Compute Engine 就不會復原本機 SSD 資料。

  • MACHINE_TYPE:要使用的機型。

  • MAINTENANCE_POLICY:執行個體的維護行為。值可以是 TERMINATE 或 MIGRATE。如果您在執行個體範本中指定 Spot VM、先占 VM 或不支援即時遷移的執行個體類型,則只能使用 TERMINATE。

REST

如要在建立執行個體範本時設定主機維護政策,請向下列其中一種方法提出 POST 要求:

在要求主體的 scheduling 欄位中,加入下列一或多個欄位:

  • 如要設定主機維護行為,請加入 onHostMaintenance 欄位。

  • 如要設定自動重新啟動行為,請執行下列其中一項操作:

    • 如要自動重新啟動執行個體,請加入 automaticRestart 欄位。

    • 如要防止執行個體自動重新啟動,請加入 automaticRestart 欄位。

  • 如果執行個體已連接本機 SSD 磁碟,請加入 localSsdRecoveryTimeout 欄位,設定本機 SSD 資料復原逾時時間。

  • 如要設定主機錯誤逾時,請加入 hostErrorTimeoutSeconds 欄位。

舉例來說,如要設定主機維護行為、在主機錯誤或排定的停止作業後自動重新啟動執行個體、設定本機 SSD 資料復原逾時,以及設定主機錯誤逾時,請提出如下要求。以下範例也會建立區域執行個體範本。

POST https://compute./compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "automaticRestart": AUTOMATIC_RESTART,
      "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
      "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

更改下列內容:

  • PROJECT_ID:要建立執行個體範本的專案 ID。

  • REGION:要建立執行個體範本的區域。

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

  • IMAGE_PROJECT:包含映文件的映文件專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE:指定下列其中一項:

    • OS 映像檔的特定版本,例如 debian-12-bookworm-v20240617。

    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。這會指定最新且未淘汰的 OS 映像檔。例如,如果指定 family/debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • MACHINE_TYPE:要使用的機型。

  • AUTOMATIC_RESTART:執行個體當機或 Compute Engine 依排程停止執行個體時,執行個體的自動重新啟動行為。指定下列其中一個值:

    • 如要讓 Compute Engine 自動重新啟動執行個體,請執行下列操作: true

    • 如要避免自動重新啟動:false

  • ERROR_DETECTION_TIMEOUT:重新啟動無回應執行個體前的秒數。值必須介於 90 (90 秒) 和 330 (330 秒,或 5 分鐘 30 秒) 之間。只能以 30 秒為單位遞增。

  • LOCAL_SSD_RECOVERY_TIMEOUT:從連接的本機 SSD 磁碟復原資料所需時數。值必須介於 0 (0 小時) 和 168 (168 小時,或 7 天) 之間。如果將這個欄位設為 0,Compute Engine 就不會復原本機 SSD 資料。

  • MAINTENANCE_POLICY:執行個體的維護行為。值可以是 TERMINATE 或 MIGRATE。如果您在執行個體範本中指定 Spot VM、先占 VM 或不支援即時遷移的執行個體類型,則只能使用 TERMINATE。

如要進一步瞭解如何建立執行個體範本,請參閱「建立執行個體範本」。

查看執行個體的主機維護政策

如要查看執行個體的主機維護政策,請查看執行個體的詳細資料。

使用 gcloud CLI 或 REST API 查看執行個體的詳細資料時,只有在建立或更新執行個體時指定 localSsdRecoveryTimeout 和 hostErrorTimeoutSeconds 欄位,才能查看這些欄位。

如要查看已連接本機 SSD 磁碟的執行個體,其本機 SSD 資料復原逾時時間,請使用 gcloud CLI 或 REST API。否則,請選取下列任一選項:

控制台

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

    前往 VM 執行個體

  2. 在「Name」(名稱) 欄中,按一下要查看的執行個體。系統會顯示執行個體詳細資料頁面。

  3. 在「Details」(詳細資料) 分頁的「Management」(管理) 區段中,您可以在「Availability policies」(可用性政策) 區段中查看下列內容:

    • 在「On host maintenance」(主機維護期間) 欄位中,您可以查看執行個體的主機維護行為事件。

    • 在「Host error timeout」(主機錯誤逾時) 欄位中,您可以查看執行個體偵測到無回應後,等待重新啟動或停止的時間。如果未設定值 (—),預設等待時間為 5 分 30 秒。

    • 在「Automatic restart」(自動重新啟動) 欄位中,您可以查看執行個體是否會在當機後自動重新啟動,或 Compute Engine 是否會因排定的停止作業而停止執行個體。

gcloud

如要查看執行個體的主機維護政策,請使用 gcloud compute instances describe 指令,並將 --flatten 旗標設為 scheduling:

 gcloud compute instances describe INSTANCE_NAME \
    --flatten=scheduling \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:執行個體的名稱。

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

輸出結果會與下列內容相似:

---
scheduling:
  automaticRestart: true
  hostErrorTimeoutSeconds: 120
  localSsdRecoveryTimeout:
    nanos: 0
    seconds: '10800'
  onHostMaintenance: MIGRATE
  preemptible: false
  provisioningModel: STANDARD

REST

如要查看執行個體的主機維護政策,請向 instances.get 方法發出 GET 要求。在要求網址中,加入 fields 查詢參數,並將其設為 scheduling:

  GET https://compute./compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?fields=scheduling

更改下列內容:

  • PROJECT_ID:執行個體所在的專案。

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

  • INSTANCE_NAME:執行個體的名稱。

輸出結果會與下列內容相似:

{
  "scheduling": {
    "onHostMaintenance": "MIGRATE",
    "automaticRestart": true,
    "preemptible": false,
    "provisioningModel": "STANDARD",
    "localSsdRecoveryTimeout": {
      "seconds": "10800",
      "nanos": 0
    }
  }
}

後續步驟