如要建立大量相同且彼此獨立的虛擬機器 (VM) 執行個體,請使用 Google Cloud CLI 或 Compute Engine API 批次建立 VM。您可以在區域中的所有可用區建立這些 VM,也可以將 VM 分散到特定可用區。
如要瞭解詳情和相關限制,請參閱「關於大量建立 VM」。如要建立附加 GPU 的執行個體,請改為參閱「大量建立 GPU VM」。
事前準備
- 如要建立 VM 和任何相關資源,請確認您有足夠的配額和必要權限。
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
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」。
必要的角色
如要取得大量建立 VM 所需的權限,請要求管理員為您授予專案的 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備大量建立 VM 所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要大量建立 VM,必須具備下列權限:
-
專案的
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 設定標記,請按照下列步驟操作:
compute.instances.setTags
在 VM 上 -
如要為 VM 設定標籤,請按照下列步驟操作:
compute.instances.setLabels
在 VM 上 -
如要設定 VM 使用的服務帳戶:
compute.instances.setServiceAccount
在 VM 上 -
為 VM 建立新磁碟:
compute.disks.create
專案的 -
如要以唯讀或讀寫模式附加現有磁碟:
磁碟的
compute.disks.use
-
如要以唯讀模式連接現有磁碟:
compute.disks.useReadOnly
磁碟的
在區域中大量建立 VM
如要在區域中大量建立 VM,請使用 gcloud CLI 或 Compute Engine API。
如果您指定機器類型或額外硬體 (例如 GPU 或本機 SSD) 的支援,Compute Engine 會將 VM 放置在區域內支援機器類型和額外硬體的區域中。
gcloud
如要在區域中大量建立 VM,請使用下列
gcloud compute instances bulk create
指令:gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]
更改下列內容:
NAME_PATTERN:VM 的名稱模式。使用一連串的雜湊 (
#
) 字元,讓 Compute Engine 替換成一連串數字。舉例來說,如果名稱模式為vm-#
,就會產生vm-1
和vm-2
等 VM 名稱,最多可產生--count
指定的 VM 數量,但該數量必須小於或等於名稱模式允許的 VM 數量。使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。
PREDEFINED_NAMES:要建立的 VM 預先定義名稱清單。如果使用這個旗標並指定
COUNT
,COUNT
必須等於提供的名稱數量。REGION:要在其中建立 VM 的區域。
COUNT:要建立的 VM 數量。這個值必須小於或等於
NAME_PATTERN
允許的 VM 數量。或者,如果使用--predefined-names
,則不必指定COUNT
,但如果指定,則必須等於提供的名稱數量。MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為:
值 說明 未設定 預設值為 COUNT
。如果 Compute Engine 無法建立COUNT
指定數量的 VM,要求就會失敗,且不會建立任何 VM。1
Compute Engine 會盡可能建立 VM,最多 COUNT
個。大於 1
且小於COUNT
Compute Engine 會建立至少 MIN_COUNT
個 VM,最多COUNT
個 VM。如果無法建立MIN_COUNT
VM,要求就會失敗,且不會建立任何 VM。LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為
allow
(預設值) 和deny
。以下是這個標記的範例值:--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分配情形。使用
--location-policy
標記指定區域。下表列出這個旗標的有效值:值 說明 ANY_SINGLE_ZONE
強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 BALANCED
嘗試在區域內的所有可用區平均分配 VM。 ANY
允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。
REST
如要在某個區域中大量建立 VM,請使用下列
instances.bulkInsert
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }
更改下列內容:
PROJECT_ID:專案 ID。
REGION:要在其中建立 VM 的區域。
NAME_PATTERN:VM 的名稱模式。指定這個或
perInstanceProperties
。使用一連串的雜湊 (#
) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,使用vm-#
做為名稱模式會產生vm-1
和vm-2
等名稱的 VM,最多可達--count
指定的 VM 數量,且該數量必須小於或等於名稱模式允許的 VM 數量。使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。
PREDEFINED_NAME_1、PREDEFINED_NAME_2 等:要建立的 VM 預先定義名稱清單。指定這個或
namePattern
。如果使用這個標記並指定COUNT
,COUNT
必須等於提供的名稱數量。COUNT:要建立的 VM 數量。這個值必須小於或等於
NAME_PATTERN
允許的 VM 數量。或者,如果使用perInstanceProperties
,則不必指定COUNT
,但如果指定,則必須等於提供的名稱數量。MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為:
值 說明 未設定 預設值為 COUNT
。如果 Compute Engine 無法建立COUNT
指定數量的 VM,要求就會失敗,且不會建立任何 VM。1
Compute Engine 會盡可能建立 VM,最多 COUNT
個。大於 1
且小於COUNT
Compute Engine 會建立至少 MIN_COUNT
個 VM,最多COUNT
個 VM。如果無法建立MIN_COUNT
VM,要求就會失敗,且不會建立任何 VM。LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為
ALLOW
(預設值) 和DENY
。以下是這個欄位的範例值:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分布情形。使用
locationPolicy
欄位指定區域。下表列出這個欄位的有效值:值 說明 ANY_SINGLE_ZONE
強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 BALANCED
嘗試在區域內的所有可用區平均分配 VM。 ANY
允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。
在可用區中大量建立 VM
如要在可用區中大量建立 VM,請使用 gcloud CLI 或 Compute Engine API。
gcloud
如要在特定可用區中大量建立 VM,請使用下列
gcloud compute instances bulk create
指令。gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
更改下列內容:
NAME_PATTERN:VM 的名稱模式。使用一連串的雜湊 (
#
) 字元,讓 Compute Engine 替換成一連串數字。舉例來說,如果名稱模式為vm-#
,就會產生vm-1
和vm-2
等 VM 名稱,最多可產生--count
指定的 VM 數量,但該數量必須小於或等於名稱模式允許的 VM 數量。使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。
PREDEFINED_NAMES:要建立的 VM 預先定義名稱清單。如果使用這個旗標並指定
COUNT
,COUNT
必須等於提供的名稱數量。ZONE:用於建立 VM 的可用區。
COUNT:要建立的 VM 數量。這個值必須小於或等於
NAME_PATTERN
允許的 VM 數量。或者,如果使用--predefined-names
,則不必指定COUNT
,但如果指定,則必須等於提供的名稱數量。MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為:
值 說明 未設定 預設值為 COUNT
。如果 Compute Engine 無法建立COUNT
指定數量的 VM,要求就會失敗,且不會建立任何 VM。1
Compute Engine 會盡可能建立 VM,最多 COUNT
個。大於 1
且小於COUNT
Compute Engine 會建立至少 MIN_COUNT
個 VM,最多COUNT
個 VM。如果無法建立MIN_COUNT
VM,要求就會失敗,且不會建立任何 VM。
REST
如要在可用區中大量建立 VM,請使用下列
instances.bulkInsert
方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }
更改下列內容:
PROJECT_ID:專案 ID。
ZONE:用於建立 VM 的可用區。
NAME_PATTERN:VM 的名稱模式。指定這個或
perInstanceProperties
。使用一連串的雜湊 (#
) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,使用vm-#
做為名稱模式會產生vm-1
和vm-2
等名稱的 VM,最多可達--count
指定的 VM 數量,且該數量必須小於或等於名稱模式允許的 VM 數量。使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。
PREDEFINED_NAME_1、PREDEFINED_NAME_2 等:要建立的 VM 預先定義名稱清單。指定這個或
namePattern
。如果使用這個標記並指定COUNT
,COUNT
必須等於提供的名稱數量。COUNT:要建立的 VM 數量。這個值必須小於或等於
NAME_PATTERN
允許的 VM 數量。或者,如果使用perInstanceProperties
,則不必指定COUNT
,但如果指定,則必須等於提供的名稱數量。MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為:
值 說明 未設定 預設值為 COUNT
。如果 Compute Engine 無法建立COUNT
指定數量的 VM,要求就會失敗,且不會建立任何 VM。1
Compute Engine 會盡可能建立 VM,最多 COUNT
個。大於 1
且小於COUNT
Compute Engine 會建立至少 MIN_COUNT
個 VM,最多COUNT
個 VM。如果無法建立MIN_COUNT
VM,要求就會失敗,且不會建立任何 VM。
大量建立具有自訂主機名稱的 VM
您可以使用 gcloud CLI 或 Compute Engine API,在區域或可用區中大量建立具有自訂主機名稱的 VM。
您必須針對自訂主機名稱手動設定 DNS 記錄。詳情請參閱「限制」一節。
如果您未指定主機名稱,Compute Engine 會將 VM 的主機名稱設為下列其中一項:
VM_NAME.c.PROJECT_ID.internal
啟用全域 DNS 時VM_NAME.ZONE.c.PROJECT_ID.internal
啟用可用區 DNS 時
詳情請參閱內部 DNS 名稱。
gcloud
如要在特定地區中,使用自訂主機名稱大量建立 VM,請使用下列
gcloud beta compute instances bulk create
指令。gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]
更改下列內容:
NAME_PATTERN:VM 的名稱模式。使用一連串的雜湊 (
#
) 字元,讓 Compute Engine 替換成一連串數字。舉例來說,如果名稱模式為vm-#
,就會產生vm-1
和vm-2
等 VM 名稱,最多可產生--count
指定的 VM 數量,但該數量必須小於或等於名稱模式允許的 VM 數量。使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。
PREDEFINED_NAMES:要建立的 VM 預先定義名稱清單。如果使用這個旗標並指定
COUNT
,COUNT
必須等於提供的名稱數量。[VM_NAME=HOSTNAME, ...]: a VM 的預先定義名稱和完整網域主機名稱的鍵值組清單,您要為 VM 指派這些名稱。自訂主機名稱必須符合 RFC 1035 的有效主機名稱要求。
REGION:用於建立 VM 的可用區。
COUNT:要建立的 VM 數量。這個值必須小於或等於
NAME_PATTERN
允許的 VM 數量。或者,如果使用--predefined-names
,則不必指定COUNT
,但如果指定,則必須等於提供的名稱數量。MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為:
值 說明 未設定 預設值為 COUNT
。如果 Compute Engine 無法建立COUNT
指定數量的 VM,要求就會失敗,且不會建立任何 VM。1
Compute Engine 會盡可能建立 VM,最多 COUNT
個。大於 1
且小於COUNT
Compute Engine 會建立至少 MIN_COUNT
個 VM,最多COUNT
個 VM。如果無法建立MIN_COUNT
VM,要求就會失敗,且不會建立任何 VM。LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為
ALLOW
(預設值) 和DENY
。以下是這個欄位的範例值:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分布情形。使用
locationPolicy
欄位指定區域。下表列出這個欄位的有效值:值 說明 ANY_SINGLE_ZONE
強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 BALANCED
嘗試在區域內的所有可用區平均分配 VM。 ANY
允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。
REST
如要在特定區域中大量建立具有自訂主機名稱的 VM,請使用下列
instances.bulkInsert
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }
更改下列內容:
PROJECT_ID:專案 ID。
REGION:要在其中建立 VM 的區域。
NAME_PATTERN:VM 的名稱模式。指定這個或
perInstanceProperties
。使用一連串的雜湊 (#
) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,使用vm-#
做為名稱模式會產生vm-1
和vm-2
等名稱的 VM,最多可達--count
指定的 VM 數量,且該數量必須小於或等於名稱模式允許的 VM 數量。使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。
PREDEFINED_NAME_1、PREDEFINED_NAME_2 等:要建立的 VM 預先定義名稱清單。指定這個或
namePattern
。如果使用這個標記並指定COUNT
,COUNT
必須等於提供的名稱數量。HOSTNAME_1、HOSTNAME_2 等:要為 VM 指派的完整網域主機名稱。自訂主機名稱必須符合 RFC 1035 的有效主機名稱要求。
舉例來說,如要建立兩個 VM
vm-1
和vm-2
,並分別使用my-host1234.example.com
和test.example.com
做為自訂主機名稱,請在perInstanceProperties
中指定hostname
屬性,如下所示:{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT:要建立的 VM 數量。這個值必須小於或等於
NAME_PATTERN
允許的 VM 數量。或者,如果使用perInstanceProperties
,則不必指定COUNT
,但如果指定,則必須等於提供的名稱數量。MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為:
值 說明 未設定 預設值為 COUNT
。如果 Compute Engine 無法建立COUNT
指定數量的 VM,要求就會失敗,且不會建立任何 VM。1
Compute Engine 會盡可能建立 VM,最多 COUNT
個。大於 1
且小於COUNT
Compute Engine 會建立至少 MIN_COUNT
個 VM,最多COUNT
個 VM。如果無法建立MIN_COUNT
VM,要求就會失敗,且不會建立任何 VM。LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為
ALLOW
(預設值) 和DENY
。以下是這個欄位的範例值:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分布情形。使用
locationPolicy
欄位指定區域。下表列出這個欄位的有效值:值 說明 ANY_SINGLE_ZONE
強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 BALANCED
嘗試在區域內的所有可用區平均分配 VM。 ANY
允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。
查看大量建立 VM 要求狀態
建立突變要求時,Compute Engine 會傳回
operation
資源,您可以輪詢該資源來取得作業狀態。詳情請參閱「處理 API 回應」。如要取得大量插入要求狀態,請將 HTTP
GET
要求傳送至operation
資源:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
如要取得區域大量插入要求的狀態,請傳送下列要求:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
更改下列內容:
PROJECT_ID
:您要在其中建立 VM 的專案 IDREGION
:您要建立 VM 的區域ZONE
:您要建立 VM 的可用區OPERATION_ID
:大量插入作業 ID
回應中的
instancesBulkInsertOperationMetadata
物件包含作業的下列詳細資料:status
:狀態為下列其中一項:CREATING
:VM 正在建立中ROLLING_BACK
:要求失敗,正在復原DONE
:VM 建立或復原作業已順利完成
targetVmCount
:要在指定可用區中建立的 VM 數量createdVmCount
:指定可用區中已建立的 VM 數量failedToCreateVmCount
:在指定可用區中無法建立的 VM 數量deletedVmCount
:因作業失敗而回溯時刪除的 VM 數量
回應中的
progress
欄位代表作業的完成百分比。在 Compute Engine 成功建立至少最低數量的 VM,且不再建立 VM 或回溯要求之前,大量插入作業的狀態為
RUNNING
。大量插入作業進行中時,您應該會看到類似下列內容的回應:
{ "kind" : "compute#operation", "id": "4653028658507445766", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationType": "bulkInsert", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project" "targetId": 4653028658507445766, "status": "RUNNING", "progress": 2, "user": "example@google.com", "insertTime": "2023-04-23T09:57:13.474-07:00", "startTime": "2023-04-23T09:57:13.474-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "metadata": "instances_bulk_insert_operation_metadata": { "per_location_status": { "zones/us-central1-a": { "status": "CREATING", "targetVmCount": 50, "createdVmCount": 1 } } } }
在本範例中,一個執行個體已成功建立,作業完成度為 2%。
當 Compute Engine 成功建立至少
minCount
指定的 VM 數量下限,或完成要求的回復作業時,作業會傳回DONE
狀態。成功建立要求的 VM 數量後,您會收到類似下列內容的回應:{ "endTime": "2023-04-23T09:58:13.474-07:00", "id": "5053101474378293244", "insertTime": "2023-04-23T09:57:13.474-07:00", "instancesBulkInsertOperationMetadata": { "perLocationStatus": { "zones/us-central1-a": { "status": "DONE", "createdVmCount": 50, "targetVmCount": 50 } } }, "kind": "compute#operation", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "operationType": "bulkInsert", "progress": 100, "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "startTime": "2023-09-11T16:21:55.629-07:00", "status": "DONE", "targetId": "625521788110", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project", "user": "example@google.com", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a" }
詳情請參閱
instancesBulkInsertOperationMetadata
物件的說明文件。檢查單一 VM 的狀態
如要檢查透過大量建立 VM 要求建立的單一 VM 狀態,請使用 gcloud CLI 或 Compute Engine API。
gcloud
從要求傳回的
Operation
中,取得operationGroupId
屬性的值。使用
operationGroupId
屬性做為gcloud compute operations list
指令的篩選器,在專案的所有作業和可用區中,搜尋與區域或可用區要求相關聯的 VM:gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
如要取得 VM 的其餘屬性,請執行下列任一操作:
在作業清單中,
targetLink
代表 VM 的路徑。使用gcloud compute instances describe
指令,並將這個路徑做為 VM 名稱,即可取得 VM 的屬性:gcloud compute instances describe VM_NAME
使用
gcloud compute instances list
指令,並加入包含作業清單中 VM 名稱的篩選器:gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
使用
gcloud compute instances list
指令,取得所有可用區和區域的 VM 屬性,並依執行個體專屬的標籤或名稱進行篩選:gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
REST
從要求傳回的
Operation
中,取得operationGroupId
屬性的值。使用
operationGroupId
屬性取得與區域或可用區要求相關聯的 VM 作業清單:如果您傳送的是區域要求,如要搜尋專案中所有作業和所有區域,請使用
globalOperations.aggregatedList
方法,並將operationGroupId
屬性做為篩選器:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
如果您傳送區域要求,請使用
zoneOperations.get
方法列出該區域的作業,並在要求主體中加入operationGroupId
屬性:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
如要取得 VM 的其餘屬性,請執行下列任一操作:
在作業清單中,
targetLink
代表 VM 的路徑。使用instances.get
方法,並將這個路徑做為 VM 的名稱,即可取得 VM 的所有屬性:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
使用
instances.get
方法搭配篩選器,其中包含作業清單中的 VM 名稱:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
使用
instances.aggregatedList
方法,從所有區域取得 VM 的屬性,並依執行個體專屬的標籤或名稱進行篩選:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
虛擬程式碼範例
下列虛擬程式碼範例說明如何自訂要求,以便大量建立 VM。
從一組區域中,在一個區域中大量建立 VM
下列虛擬程式碼說明如何從一組區域中,在一個區域內建立 1,000 個 VM。嘗試從一組區域在單一區域中大量建立 VM 時,要求會先檢查容量。如果容量不足,要求會立即失敗,並嘗試使用集合中的下一個區域。
指定要在可用區中建立的 VM 數量。
nTarget = 1000
指定要嘗試在其中建立 VM 的區域。
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
逐一檢查各個區域,並嘗試在每個區域中建立 VM,直到成功為止。
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
在可用區中,以機器類型大量建立 VM
下列虛擬程式碼說明如何在可用區中,以指定的機器類型建立多部 VM。嘗試以相同機器類型大量建立 VM 時,要求會先檢查這些機器類型是否可用。如果沒有足夠的機器類型可用,要求會立即失敗,並使用下一個機器類型重試。
指定要建立的 VM 數量,以及建立 VM 的區域。
nTarget = 1000 region = "us-central1"
指定要嘗試建立 VM 的機器系列。
acceptableMachineFamilies = ["n2","c2","e2","n1"]
逐一嘗試使用機器類型建立 VM,直到成功為止。
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
在一個可用區中建立超過 5,000 個 VM
大量建立 VM 時,每個要求只能建立 5,000 個 VM。 下列虛擬程式碼說明如何發出多項要求,在一個可用區中建立超過 5,000 個 VM。
指定要建立的 VM 數量、用來追蹤建立 VM 總數的計數器、要建立 VM 的區域,以及用來儲存 Compute Engine 建立 VM 的可用區的變數。
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
發出初始要求,建立 5,000 個 VM,儲存要求傳回的可用區,並更新已建立 VM 數量的計數器。
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
繼續向該區域發出要求,一次最多可建立 5,000 個 VM,直到 Compute Engine 建立指定數量的 VM 為止。
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
大量建立 VM 並查看狀態
下列程序說明如何建立一組具有預先定義名稱的 VM,然後查看其狀態:
指定要建立的 VM 數量、建立 VM 的可用區,以及用於儲存名稱的資料結構。
nTarget = 1000 targetZone = "us-central-1a" names = []
產生 VM 的模式化名稱,並將名稱新增至資料結構。
for n in range(0, 1000): names.push("instance-%d".format(n))
建立 VM,並使用
perInstanceProperties
指定名稱。call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
使用
instances.list
方法,並篩選 VM 名稱,即可取得 VM 詳細資料。instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
後續步驟
大量建立 VM 後,請執行下列任一或全部操作,簡化這些 VM 的管理作業:
將 VM 新增至非代管執行個體群組。將 VM 新增至非代管執行個體群組後,您就能使用 Cloud Monitoring。非代管執行個體群組不會提供負載平衡或 VM 生命週期管理功能。
使用標籤。標籤可讓您使用鍵/值組合整理資源。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-29 (世界標準時間)。
-