本文說明如何為 Compute Engine 執行個體設定主機維護政策,以便決定主機事件期間的行為。如要進一步瞭解主機維護政策,請參閱「主機維護政策」。
主機維護政策會決定執行個體在執行所在主機需要維護或發生錯誤時的回應方式。為執行個體設定主機維護政策,有助於您執行下列操作:
盡量減少停機時間。
防止資料遺失。
限制
主機維護政策適用下列限制:
使用 E2 機型的虛擬機器執行個體只能在主機維護事件期間進行即時遷移,除非是 Spot VM 或先占 VM。
只有在主機維護事件期間,才能停止下列執行個體:
不支援即時遷移的執行個體,例如裸機執行個體或已附加 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
必要的角色
如要取得設定 Compute 執行個體主機維護政策所需的權限,請要求管理員為您授予專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色包含為運算執行個體設定主機維護政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要為 Compute Engine 執行個體設定主機維護政策,您必須具備下列權限:
-
如要建立執行個體,請按照下列步驟操作:
- 專案的
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:
compute.instances.setMetadata
設定 VM 執行個體中繼資料 - 如何為 VM 設定標記:
compute.instances.setTags
- 如何為 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 執行個體、裸機執行個體,以及連結 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 控制台中,請在「進階」窗格中的「自動重新啟動」清單中,選取「關閉」。
如為 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,讓這些 VM 在主機發生錯誤或在預定時間停止後自動重新啟動。
如要在已連結本機 SSD 磁碟的執行個體中變更本機 SSD 資料復原逾時時間,請使用 gcloud CLI 或 REST API。否則,請選取下列任一選項:
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在「Name」欄中,按一下要更新的執行個體名稱。系統隨即會顯示執行個體的詳細資料頁面。
按一下「Edit」(編輯)
。畫面隨即顯示可讓您編輯執行個體屬性的頁面。在「管理」部分,您可以執行下列一或多項操作:
如要變更維護事件期間的行為,請從「On host maintenance」清單中選取其他選項
如要變更重新啟動無回應執行個體前的逾時期限,請從「Host error timeout」清單中選取其他選項。
如要變更在主機發生錯誤或停止執行時,是否要重新啟動執行個體,請從「自動重新啟動」清單中選取其他選項。
按一下 [儲存]。
gcloud
如要變更現有執行個體的主機維護政策,請使用 gcloud compute instances set-scheduling
指令,並搭配下列一或多個旗標:
如要變更主機維護行為,請加入
--maintenance-policy
標記。如要變更自動重新啟動行為,請採取下列其中一種做法:
如要自動重新啟動執行個體,請加入
--restart-on-failure
標記。如要防止執行個體自動重新啟動,請加入
--no-restart-on-failure
標記。
如果執行個體已連接本機 SSD 磁碟,如要變更本機 SSD 資料復原逾時時間,請加入
--local-ssd-recovery-timeout
旗標。如要變更主機錯誤逾時時間,請加入
--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.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」(建立執行個體) 頁面。
在「名稱」欄位中輸入執行個體的名稱。
在「區域」和「可用區」欄位中,指定要建立執行個體的區域和可用區。
指定執行個體的機器類型。
在導覽選單中,按一下「進階」。
在「Provisioning model」(佈建模式) 部分,展開「VM provisioning model advanced settings」(VM 佈建模式進階設定),然後執行下列一或多項操作:
如要設定維護事件期間的行為,請在「主機維護」清單中選取下列任一選項:
如要在主機維護事件期間遷移執行個體,請選取「Migrate VM instance (recommended)」(遷移 VM 執行個體 (建議))。
如要在主機維護事件期間停止執行個體,請選取「Terminate VM instance」。
如要在重新啟動無回應的執行個體前設定逾時時間,請在「Host error timeout」清單中選取下列任一選項:
如要不指定主機錯誤逾時值,請選取「不明 (預設)」。
如要指定主機錯誤逾時時間,請選取其中一個可用選項,最多為 5 分 30 秒。
如要設定在執行個體當機或停止時是否要重新啟動,請在「自動重新啟動」清單中選取下列任一選項:
如要在主機發生錯誤或停止執行時自動重新啟動執行個體,請選取「On (recommended)」。
如要避免在主機發生錯誤或停止時,執行個體自動重新啟動,請選取「關閉」。
按一下 [建立]。
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」(執行個體範本) 頁面。
按一下「建立執行個體範本」。系統隨即會顯示「Create instance template」頁面。
在「Name」欄位中,輸入執行個體範本的名稱。
在「地區」部分中,選取下列其中一個選項:
如要建立區域執行個體範本,請選取「Regional (recommended)」(區域 (建議),然後選取要建立範本的區域。
如要建立全域執行個體範本,請選取「Global」(全域)。
在「Machine configuration」(機器設定) 區段中,指定執行個體範本的機器類型。
在「Provisioning model」(佈建模式) 部分,展開「VM provisioning model advanced settings」(VM 佈建模式進階設定),然後執行下列一或多項操作:
如要變更維護事件期間的行為,請在「On host maintenance」清單中選取下列任一選項:
如要在主機維護事件期間遷移執行個體,請選取「Migrate VM instance (recommended)」(遷移 VM 執行個體 (建議))。
如要在主機維護事件期間停止執行個體,請選取「Terminate VM instance」。
如要在重新啟動無回應的執行個體前變更逾時期限,請在「Host error timeout」清單中選取下列任一選項:
如要不指定主機錯誤逾時值,請選取「不明 (預設)」。
如要指定主機錯誤逾時時間,請選取其中一個可用選項,最多為 5 分 30 秒。
如要變更在執行個體當機或停止時是否要重新啟動,請在「自動重新啟動」清單中選取下列任一選項:
如要在主機發生錯誤或停止執行時自動重新啟動執行個體,請選取「On (recommended)」。
如要避免在主機發生錯誤或停止時,執行個體自動重新啟動,請選取「關閉」。
按一下 [建立]。
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 執行個體) 頁面。
在「Name」欄中,按一下要查看的執行個體。系統隨即會顯示提供執行個體詳細資料的頁面。
在「Details」分頁的「Management」部分,您可以查看「可用性政策」部分中的下列資訊:
在「主機維護期間」欄位中,您可以查看執行個體的主機維護行為事件。
在「主機錯誤逾時」欄位中,您可以查看在偵測到執行個體無回應後,系統會等待多久時間才會重新啟動或停止執行個體。如果未設定值 (—),則預設等待時間為 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
}
}
}