本文說明如何為 Compute Engine 執行個體設定主機維護政策,以決定執行個體在主機事件期間的行為。如要進一步瞭解主機維護政策,請參閱主機維護政策。
主機維護政策會決定執行個體在執行所在主機需要維護或發生錯誤時的回應方式。設定執行個體的主機維護政策有助於執行下列操作:
盡量減少停機時間。
防範資料遺失。
限制
主機維護政策有下列限制:
使用 E2 機型的虛擬機器執行個體只能在主機維護事件期間即時遷移,Spot VM 或先占 VM 除外。
下列執行個體只能在主機維護事件期間停止:
不支援即時遷移的執行個體,例如附加超過 18 TiB Titanium SSD 的 Z3 執行個體、裸機執行個體,或附加 GPU 的 VM。
Spot VM 或先占 VM。
發生主機錯誤或程式停止後,Spot VM 和先占 VM 無法自動重新啟動。
事前準備
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 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
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得設定 Compute 執行個體主機維護政策所需的權限,請要求管理員授予您專案的 Compute Instance 管理員 (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備為運算執行個體設定主機維護政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要為運算執行個體設定主機維護政策,您必須具備下列權限:
-
如何建立執行個體:
- 專案的
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 的預設設定,也是 Z3 執行個體 (附加的 Titanium SSD 超過 18 TiB)、裸機執行個體,以及附加 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 磁碟復原資料的時間長度。此屬性預設為未設定。您可以將這項屬性設為下列其中一個值:未設定:Compute Engine 會使用預設等待時間:
Z3 VM:6 小時
所有其他類型的執行個體:1 小時
0 到 168 之間的整數:等待的小時數。將這項屬性設為
0
,表示 Compute Engine 不會復原本機 SSD 資料,並立即重新啟動執行個體。
主機錯誤逾時 (
hostErrorTimeoutSeconds
):這個屬性會決定 Compute Engine 等待重新啟動無回應執行個體的時間長度。您必須先設定這項設定,執行個體才會停止回應。 請使用足夠長的逾時時間,讓執行個體從無回應狀態中復原。您可以將這項屬性設為下列其中一項:未設定:Compute Engine 最多會等待 330 秒 (5 分 30 秒)。這是任何類型執行個體的預設設定。
90 到 330 之間的整數:等待時間 (以秒為單位),每次增加 30 秒。
設定執行個體的主機維護政策
根據預設,運算執行個體會使用主機維護政策的預設設定。如要自訂這些設定,請使用下列其中一種方法:
為現有執行個體設定政策
變更現有執行個體的主機維護政策前,請確認下列事項:
您無法變更下列類型執行個體的維護行為 (
onHostMaintenance
):使用 E2 機器類型的 VM。
Spot VM 或先占 VM。
不支援即時遷移的執行個體。
您無法將 Spot VM 或先占 VM 設為在主機錯誤或程式化停止後自動重新啟動。
如要變更已連結本機 SSD 磁碟的執行個體中,本機 SSD 資料復原的逾時時間,請使用 gcloud CLI 或 REST API。否則,請選取下列任一選項:
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在「Name」(名稱) 欄中,按一下要更新的執行個體名稱。系統隨即會顯示執行個體的詳細資料頁面。
按一下「Edit」(編輯)
。系統隨即顯示可編輯執行個體屬性的頁面。在「管理」部分,您可以執行下列一或多項操作:
如要變更維護事件期間的行為,請從「在主機維護期間」清單中選取其他選項
如要變更重新啟動無回應執行個體前的逾時時間,請從「主機錯誤逾時」清單中選取其他選項。
如要變更主機發生錯誤或程式停止後是否要重新啟動執行個體,請從「自動重新啟動」清單中選取其他選項。
按一下 [儲存]。
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 磁碟,請加入
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
:執行個體的維護行為。值可以是TERMINATE
或MIGRATE
。
在建立執行個體時設定政策
建立運算執行個體時,您可以設定主機維護政策。
如要在建立已連結本機 SSD 磁碟的執行個體時,設定本機 SSD 資料復原逾時,請使用 gcloud CLI 或 REST API。 否則,請選取下列任一選項:
主控台
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
在「Name」(名稱) 欄位中,輸入執行個體的名稱。
在「Region」(區域) 和「Zone」(可用區) 欄位中,指定要在哪個區域和可用區建立執行個體。
指定執行個體的機器類型。
在導覽選單中,按一下「進階」。
在「佈建模式」部分,展開「VM 佈建模式進階設定」,然後執行下列一或多項操作:
如要設定維護事件期間的行為,請在「On host maintenance」(主機維護) 清單中,選取下列任一選項:
如要在主機維護期間遷移執行個體,請選取「遷移 VM 執行個體 (建議選項)」。
如要在主機維護事件期間停止執行個體,請選取「終止 VM 執行個體」。
如要設定逾時時間,讓系統在無回應的執行個體重新啟動前等待一段時間,請在「主機錯誤逾時」清單中選取下列其中一個選項:
如要不指定主機錯誤逾時,請選取「Unspecified (default)」(未指定 (預設))。
如要指定主機錯誤逾時時間,請選取其中一個可用選項,最長為 5 分 30 秒。
如要設定執行個體在當機或停止時是否要重新啟動,請在「自動重新啟動」清單中選取下列其中一個選項:
如要在主機發生錯誤或程式停止後自動重新啟動執行個體,請選取「開啟 (建議)」。
如要防止執行個體在主機發生錯誤或程式化停止後自動重新啟動,請選取「關閉」。
點選「建立」。
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.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
:指定下列其中一項: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 執行個體。
大量建立執行個體時設定政策
如要在大量建立執行個體時設定主機維護政策,請選取下列其中一個選項:
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
:執行個體的維護行為。值可以是TERMINATE
或MIGRATE
。如果您要建立 Spot VM、先占 VM 或不支援即時遷移的執行個體,則只能使用TERMINATE
。NAME_PATTERN
:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#
) 字元。舉例來說,使用instance-#
做為名稱模式,會產生名稱開頭為instance-1
、instance-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-1
、instance-2
的執行個體,並持續產生執行個體,直到COUNT
指定的執行個體數量為止。MACHINE_TYPE
:要使用的機器類型。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項: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
。
如要進一步瞭解如何大量建立執行個體,請參閱大量建立 VM。
在建立執行個體範本時設定政策
建立執行個體範本時,您可以設定主機維護政策。使用範本建立的所有運算執行個體,都會沿用範本中指定的主機維護政策。
如要在建立指定本機 SSD 磁碟的執行個體範本時,設定本機 SSD 資料復原逾時,請使用 gcloud CLI 或 REST API。否則,請選取下列任一選項:
主控台
前往 Google Cloud 控制台的「Instance Templates」(執行個體範本) 頁面。
按一下「建立執行個體範本」。「建立執行個體範本」頁面隨即顯示。
在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。
在「位置」部分中,選取下列其中一個選項:
如要建立區域執行個體範本,請選取「區域 (建議)」,然後選取要建立範本的區域。
如要建立全域執行個體範本,請選取「全域」。
在「機器設定」部分,指定執行個體範本的機器類型。
在「佈建模式」部分,展開「VM 佈建模式進階設定」,然後執行下列一或多項操作:
如要變更維護事件期間的行為,請在「On host maintenance」(主機維護期間) 清單中,選取下列其中一個選項:
如要在主機維護期間遷移執行個體,請選取「遷移 VM 執行個體 (建議選項)」。
如要在主機維護事件期間停止執行個體,請選取「終止 VM 執行個體」。
如要變更重新啟動無回應執行個體前的逾時時間,請在「主機錯誤逾時」清單中選取下列任一選項:
如要不指定主機錯誤逾時,請選取「Unspecified (default)」(未指定 (預設))。
如要指定主機錯誤逾時時間,請選取其中一個可用選項,最長為 5 分 30 秒。
如要變更執行個體當機或停止時是否重新啟動,請在「自動重新啟動」清單中選取下列任一選項:
如要在主機發生錯誤或程式停止後自動重新啟動執行個體,請選取「開啟 (建議)」。
如要防止執行個體在主機發生錯誤或程式化停止後自動重新啟動,請選取「關閉」。
點選「建立」。
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
要求:如要建立地區執行個體範本:
regionInstanceTemplates.insert
方法如要建立全域執行個體範本,請使用
instanceTemplates.insert
方法。
在要求主體的
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
:指定下列其中一項: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。否則,請選取下列任一選項:
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在「名稱」欄中,按一下要查看的執行個體。系統隨即會顯示執行個體詳細資料頁面。
在「詳細資料」分頁的「管理」部分,您可以在「可用性政策」部分查看下列資訊:
在「主機維護」欄位中,您可以查看執行個體的主機維護行為事件。
在「主機錯誤逾時」欄位中,您可以查看執行個體在偵測到無回應後,重新啟動或停止執行個體前等待的時間量。如果未設定值 (—),預設等待時間為 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 } } }
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-29 (世界標準時間)。
-