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

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

主機維護政策會決定執行個體在執行所在主機需要維護或發生錯誤時的回應方式。設定執行個體的主機維護政策有助於執行下列操作:

  • 盡量減少停機時間。

  • 防範資料遺失。

限制

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

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

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

    • 不支援即時遷移的執行個體,例如 H4D 執行個體、附加超過 18 TiB Titanium SSD 的 Z3 執行個體、裸機執行個體,或是附加 GPU 的 VM。

    • Spot VM 或先占 VM。

  • 發生主機錯誤或程式停止後,Spot VM 和先占 VM 無法自動重新啟動。

事前準備

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

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

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

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

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

  • 設定預設地區和區域
  • REST

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

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 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 權限
    • 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中啟用 compute.networks.useExternalIp
    • 為 VM 指定子網路:專案或所選子網路的 compute.subnetworks.use
    • 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM,請在專案或所選子網路上擁有 compute.subnetworks.useExternalIp 權限
    • 如要為專案中的 VM 設定 VM 執行個體中繼資料,請執行下列指令:compute.instances.setMetadata
    • 如要為 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

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

可用的主機維護屬性

您可以自訂運算執行個體在排定維護或非預期主機事件期間的行為。除非另有指定,否則 Compute Engine 會在您建立執行個體、大量執行個體或執行個體範本時,使用預設設定。

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

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

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

    • 終止:Compute Engine 會停止執行個體,這是 Spot VM 或先占 VM 的預設設定,也是 H4D 執行個體、附加超過 18 TiB Titanium SSD 的 Z3 執行個體、裸機執行個體,以及附加 GPU 或 TPU 的執行個體唯一支援的設定。

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

    • 開啟:Compute Engine 會自動重新啟動執行個體。這是所有類型執行個體的預設設定,但 Spot VM 和先佔 VM 除外。請按照下列步驟指定這項設定:

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

      • 如果是 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 磁碟資料的時間長度。這項屬性預設為未設定。您可以將這個屬性設為下列其中一個值:

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

      • 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. 按一下「編輯」,系統隨即顯示可編輯執行個體屬性的頁面。

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

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

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

    • 如要變更主機發生錯誤或程式停止後是否要重新啟動執行個體,請從「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:執行個體的維護行為。值可以是 TERMINATEMIGRATE

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

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

REST

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

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

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

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

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

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

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

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

POST https://compute.googleapis.com/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:執行個體的維護行為。值可以是 TERMINATEMIGRATE

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

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

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

控制台

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

    前往「建立執行個體」

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

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

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

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

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

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

      • 如要在主機維護期間遷移執行個體,請選取「遷移 VM 執行個體 (建議選項)」

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

    • 如要設定逾時時間,讓系統在無回應的執行個體重新啟動前等待一段時間,請在「主機錯誤逾時」清單中選取下列其中一個選項:

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

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

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

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

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

  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:執行個體的維護行為。值可以是 TERMINATEMIGRATE。如果您要建立 Spot VM、先占 VM 或不支援即時遷移的執行個體,則只能使用 TERMINATE

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

REST

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

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

  • 如要設定自動重新啟動行為,請採取下列其中一項做法:

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

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

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

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

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

POST https://compute.googleapis.com/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:執行個體的維護行為。值可以是 TERMINATEMIGRATE。如果您要建立 Spot VM 或不支援即時遷移的執行個體,則只能使用 TERMINATE

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

大量建立執行個體時設定政策

如要在大量建立執行個體時設定主機維護政策,請選取下列其中一個選項:

gcloud

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

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

  • 如要設定自動重新啟動行為,請採取下列其中一項做法:

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

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

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

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

舉例來說,如要設定主機維護行為、在主機發生錯誤或排定停止後自動重新啟動執行個體、設定本機 SSD 資料復原逾時,以及設定主機錯誤逾時,請執行下列指令。以下範例也會在單一可用區中建立執行個體,並指定執行個體的名稱模式:

gcloud compute instances bulk create \
    --count=COUNT \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --name-pattern=NAME_PATTERN \
    --restart-on-failure \
    --zone=ZONE

更改下列內容:

  • COUNT:要建立的執行個體數量。

  • 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:執行個體的維護行為。值可以是 TERMINATEMIGRATE。如果您要建立 Spot VM、先占 VM 或不支援即時遷移的執行個體,則只能使用 TERMINATE

  • NAME_PATTERN:執行個體的名稱模式。如要取代執行個體名稱中的一連串數字,請使用一連串井字號 (#) 字元。舉例來說,使用 instance-# 做為名稱模式,會產生名稱開頭為 instance-1instance-2 的執行個體,並持續產生執行個體,直到 COUNT 指定的執行個體數量為止。

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

REST

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

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

  • 如要設定自動重新啟動行為,請採取下列其中一項做法:

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

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

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

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

舉例來說,如要設定主機維護行為、在主機發生錯誤或排定停止後自動重新啟動執行個體、設定本機 SSD 資料復原逾時,以及設定主機錯誤逾時,請發出下列要求。以下範例也會在單一可用區中建立執行個體,並指定執行個體的名稱模式:

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

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "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:要建立執行個體的可用區。

  • COUNT:要建立的執行個體數量。

  • NAME_PATTERN:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#) 字元。舉例來說,使用 instance-# 做為名稱模式,會產生名稱開頭為 instance-1instance-2 的執行個體,並持續產生執行個體,直到 COUNT 指定的執行個體數量為止。

  • 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:執行個體的維護行為。值可以是 TERMINATEMIGRATE。如果您要建立 Spot VM、先占 VM 或不支援即時遷移的執行個體,則只能使用 TERMINATE

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

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

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

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

控制台

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

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

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

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

  4. 在「位置」部分,選取下列任一選項:

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

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

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

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

    • 如要變更維護事件期間的行為,請在「在主機維護期間」清單中選取下列任一選項:

      • 如要在主機維護期間遷移執行個體,請選取「遷移 VM 執行個體 (建議選項)」

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

    • 如要變更逾時時間,讓系統在重新啟動沒有回應的執行個體前等待一段時間,請在「主機錯誤逾時」清單中選取下列其中一個選項:

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

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

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

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

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

  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:執行個體的維護行為。值可以是 TERMINATEMIGRATE。如果您在執行個體範本中指定不支援即時遷移的 Spot VM、先占 VM 或執行個體類型,則只能使用 TERMINATE

REST

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

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

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

  • 如要設定自動重新啟動行為,請採取下列其中一項做法:

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

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

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

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

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

POST https://compute.googleapis.com/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:執行個體的維護行為。值可以是 TERMINATEMIGRATE。如果您在執行個體範本中指定不支援即時遷移的 Spot VM、先占 VM 或執行個體類型,則只能使用 TERMINATE

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

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

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

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

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

控制台

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

    前往 VM 執行個體

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

  3. 在「詳細資料」分頁的「管理」部分,您可以在「可用性政策」部分查看下列資訊:

    • 在「主機維護」欄位中,您可以查看執行個體的主機維護行為事件。

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

    • 在「自動重新啟動」重新啟動欄位中,您可以查看執行個體在當機後是否會自動重新啟動,或是 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.googleapis.com/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
    }
  }
}

後續步驟