本文說明如何設定執行個體,在停止或刪除時略過客體 OS 關機程序,藉此縮短 Compute Engine 執行個體的關機時間。
如果您將執行個體設定為在停止或刪除時略過客體 OS 關機程序,當執行個體狀態變更為 STOPPING 時,Compute Engine 會立即關閉客體 OS。加快停止或刪除執行個體的速度,以便更快釋出配額或資源。如要進一步瞭解執行個體在停止或刪除期間經歷的階段,包括清除客體 OS 關機的預設間隔,請參閱停止作業。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上的分頁,瞭解如何使用範例:
gcloud
-
安裝 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 進行驗證」。
必要的角色
如要取得設定執行個體以略過客層 OS 關機程序所需的權限,請要求管理員授予您專案的「Compute 執行個體管理員 (v1) 」(roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備將執行個體設定為略過客體 OS 關機的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要將執行個體設為略過客層 OS 關機程序,您必須具備下列權限:
-
如要建立執行個體,請按照下列步驟操作:
- 專案的
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.update
設定執行個體,略過客體 OS 關機程序
如要設定運算執行個體,在停止或刪除執行個體時略過訪客作業系統關機程序,請使用下列其中一種方法:
在現有執行個體中設定客體 OS 關機
只有在執行個體已停止 (TERMINATED) 時,才能將運算執行個體設為略過客層 OS 關機程序。
如要設定執行個體略過訪客 OS 關機程序,請選取下列其中一個選項:
gcloud
如果尚未停止執行個體,請停止執行個體。
如要將執行個體設定為略過客層 OS 關機程序,請使用
gcloud beta compute instances set-scheduling指令搭配--skip-guest-os-shutdown旗標:gcloud compute instances set-scheduling INSTANCE_NAME \ --skip-guest-os-shutdown \ --zone=ZONE更改下列內容:
INSTANCE_NAME:執行個體的名稱。ZONE:執行個體所在的可用區。
REST
如果尚未停止執行個體,請停止執行個體。
如要設定執行個體略過訪客 OS 關機程序,請對
instances.setScheduling方法發出POST要求。在要求主體中加入skipGuestOsShutdown欄位,並將其設為true:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling { "skipGuestOsShutdown": true }
如要進一步瞭解如何更新執行個體,請參閱更新執行個體屬性。
在建立執行個體時設定訪客 OS 關機
如要建立設定為略過訪客 OS 關機的運算執行個體,請選取下列任一選項:
gcloud
如要建立設定為略過客層 OS 關機的執行個體,請使用 gcloud compute instances create 指令搭配 --skip-guest-os-shutdown 旗標:
gcloud compute instances create INSTANCE_NAME \
--machine-type=MACHINE_TYPE \
--skip-guest-os-shutdown \
--zone=ZONE
更改下列內容:
INSTANCE_NAME:執行個體的名稱。MACHINE_TYPE:執行個體要使用的機型。ZONE:要建立執行個體的可用區。
REST
如要建立設定為略過客層 OS 關機的執行個體,請對 instances.insert 方法發出 POST 要求。在要求主體中,加入設為 true 的 skipGuestOsShutdown 欄位:
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": {
"skipGuestOsShutdown": true
}
}
更改下列內容:
PROJECT_ID:要在當中建立執行個體的專案 ID。ZONE:要建立執行個體的可用區。INSTANCE_NAME:執行個體的名稱。MACHINE_TYPE:執行個體要使用的機型。IMAGE_PROJECT:包含映像檔的映像檔專案,例如debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE:指定下列其中一項:
如要進一步瞭解如何建立執行個體,請參閱「建立及啟動 Compute Engine 執行個體」。
大量建立執行個體時,設定訪客 OS 關機
如要大量建立運算執行個體,並設定略過客層 OS 關機程序,請選取下列任一選項:
gcloud
如要大量建立執行個體,並設定略過客層 OS 關機程序,請使用 gcloud compute instances bulk create 指令搭配 --skip-guest-os-shutdown 旗標。
舉例來說,如要使用單一可用區中的名稱模式,大量建立執行個體,請執行下列指令:
gcloud compute instances bulk create \
--count=COUNT \
--machine-type=MACHINE_TYPE \
--name-pattern="NAME_PATTERN" \
--skip-guest-os-shutdown \
--zone=ZONE
更改下列內容:
COUNT:要建立的執行個體數量。MACHINE_TYPE:執行個體使用的機型。NAME_PATTERN:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#) 字元。舉例來說,如果您使用instance-#做為名稱模式,Compute Engine 會產生名稱開頭為instance-1、instance-2的執行個體,並持續以這種遞增模式命名,直到達到您在COUNT中指定的執行個體數量為止。ZONE:要建立執行個體的可用區。
REST
如要大量建立執行個體,並設定略過客層 OS 關機程序,請對 instances.bulkInsert 方法發出 POST 要求。在要求主體中,加入設為 true 的 skipGuestOsShutdown 欄位。
舉例來說,如要在單一區域中大量建立使用名稱模式的執行個體,請發出下列 POST 要求:
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": {
"skipGuestOsShutdown": true
}
}
}
更改下列內容:
PROJECT_ID:您要在當中大量建立執行個體的專案 ID。ZONE:要建立執行個體的可用區。COUNT:要建立的執行個體數量。NAME_PATTERN:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#) 字元。舉例來說,如果您使用instance-#做為名稱模式,Compute Engine 會產生名稱開頭為instance-1、instance-2的執行個體,並持續以這種遞增模式命名,直到達到您在COUNT中指定的執行個體數量為止。MACHINE_TYPE:執行個體使用的機型。IMAGE_PROJECT:包含映像檔的映像檔專案,例如debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE:指定下列其中一項:
如要進一步瞭解如何大量建立執行個體,請參閱大量建立執行個體。
建立執行個體範本時設定客體 OS 關機
建立執行個體範本並設定為在停止或刪除運算執行個體時略過客層 OS 關機程序後,您可以使用該執行個體範本執行下列操作:
您可以設定代管執行個體群組 (MIG) 中的執行個體,在停止或刪除時略過客層 OS 關機程序,方法如下:
如要建立設定為略過訪客 OS 關機的執行個體範本,請選取下列任一選項:
gcloud
如要建立設定為略過客層 OS 關機的執行個體範本,請使用 gcloud compute instance-templates create 指令搭配 --skip-guest-os-shutdown 旗標。
舉例來說,如要建立區域執行個體範本,並指定略過客層 OS 關機程序,請執行下列指令。如要建立全域執行個體範本,請使用相同指令,但不要加入 --instance-template-region 旗標。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE \
--skip-guest-os-shutdown
更改下列內容:
INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。REGION:要建立執行個體範本的區域。MACHINE_TYPE:要在執行個體範本中指定的機器類型。
REST
如要建立設定為略過客層 OS 關機的執行個體範本,請向下列其中一種方法提出 POST 要求:
如要建立全域執行個體範本,請使用
instanceTemplates.insert方法。如要建立地區執行個體範本,請使用
regionInstanceTemplates.insert方法:
在要求主體中,加入設為 true 的 skipGuestOsShutdown 欄位。
舉例來說,如要建立指定略過客層 OS 關機的區域執行個體範本,請發出下列 POST 要求:
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": {
"skipGuestOsShutdown": true
}
}
}
更改下列內容:
PROJECT_ID:您要在當中建立執行個體範本的專案 ID。REGION:要建立執行個體範本的區域。INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。IMAGE_PROJECT:包含映像檔的映像檔專案,例如debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE:指定下列其中一項:MACHINE_TYPE:要在執行個體範本中指定的機器類型。
如要進一步瞭解如何建立執行個體範本,請參閱建立執行個體範本。
查看客體 OS 關機設定
您可以檢查 Compute Engine 是否在停止或刪除運算執行個體時,略過訪客 OS 關機程序。
如要在執行個體中查看訪客 OS 關機時間,請選取下列任一選項:
gcloud
如要查看執行個體的詳細資料,以及是否略過客層 OS 關機程序,請使用 gcloud compute instances describe 指令:
gcloud compute instances describe INSTANCE_NAME \
--zone=ZONE
更改下列內容:
INSTANCE_NAME:執行個體的名稱。ZONE:執行個體所在的可用區。
如果您將執行個體設為略過訪客 OS 關機程序,輸出內容會包含設為 true 的 skipGuestOsShutdown 欄位,如下列範例所示:
...
scheduling:
automaticRestart: true
skipGuestOsShutdown: true
onHostMaintenance: MIGRATE
preemptible: false
provisioningModel: STANDARD
...
否則,如果缺少 skipGuestOsShutdown 欄位或設為 false,客體 OS 會使用預設關機時間。
REST
如要查看執行個體的詳細資料,以及是否略過客層 OS 關機程序,請向 instances.get 方法發出 GET 要求:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
更改下列內容:
PROJECT_ID:執行個體所在的專案 ID。ZONE:執行個體所在的可用區。INSTANCE_NAME:執行個體的名稱。
如果您將執行個體設為略過訪客 OS 關機程序,輸出內容會包含設為 true 的 skipGuestOsShutdown 欄位,如下列範例所示:
{
...
"scheduling": {
"automaticRestart": true,
"skipGuestOsShutdown": true,
"onHostMaintenance": "MIGRATE",
"preemptible": false,
"provisioningModel": "STANDARD"
},
...
}
否則,如果缺少 skipGuestOsShutdown 欄位或設為 false,客體 OS 會使用預設關機時間。