如要建立大量相同且彼此獨立的虛擬機器 (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
-
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.
-
專案的
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
磁碟的 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。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。 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。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。 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。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_NAME.c.PROJECT_ID.internal
啟用全域 DNS 時VM_NAME.ZONE.c.PROJECT_ID.internal
啟用可用區 DNS 時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。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。 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。 選擇有可用資源的區域,並盡量減少未使用的區域預留項目。 PROJECT_ID
:您要在其中建立 VM 的專案 IDREGION
:您要建立 VM 的區域ZONE
:您要建立 VM 的可用區OPERATION_ID
:大量插入作業 IDstatus
:狀態為下列其中一項:CREATING
:VM 正在建立中ROLLING_BACK
:要求失敗,正在復原DONE
:VM 建立或復原作業已順利完成
targetVmCount
:要在指定可用區中建立的 VM 數量createdVmCount
:指定可用區中已建立的 VM 數量failedToCreateVmCount
:在指定可用區中無法建立的 VM 數量deletedVmCount
:因作業失敗而回溯時刪除的 VM 數量從要求傳回的
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)
從要求傳回的
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 數量。
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 的區域。
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
指定要建立的 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 的可用區,以及用於儲存名稱的資料結構。
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 新增至非代管執行個體群組後,您就能使用 Cloud Monitoring。非代管執行個體群組不會提供負載平衡或 VM 生命週期管理功能。
使用標籤。標籤可讓您使用鍵/值組合整理資源。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 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.
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得大量建立 VM 所需的權限,請要求管理員為您授予專案的 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備大量建立 VM 所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要大量建立 VM,必須具備下列權限:
在區域中大量建立 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 ]
更改下列內容:
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" ... }
更改下列內容:
在可用區中大量建立 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 ]
更改下列內容:
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, ... }
更改下列內容:
大量建立具有自訂主機名稱的 VM
您可以使用 gcloud CLI 或 Compute Engine API,在區域或可用區中大量建立具有自訂主機名稱的 VM。
您必須針對自訂主機名稱手動設定 DNS 記錄。詳情請參閱「限制」一節。
如果您未指定主機名稱,Compute Engine 會將 VM 的主機名稱設為下列其中一項:
詳情請參閱內部 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 ]
更改下列內容:
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" ... }
更改下列內容:
查看大量建立 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
更改下列內容:
回應中的
instancesBulkInsertOperationMetadata
物件包含作業的下列詳細資料:回應中的
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
REST
虛擬程式碼範例
下列虛擬程式碼範例說明如何自訂要求,以便大量建立 VM。
從一組區域中,在一個區域中大量建立 VM
下列虛擬程式碼說明如何從一組區域中,在一個區域內建立 1,000 個 VM。嘗試從一組區域在單一區域中大量建立 VM 時,要求會先檢查容量。如果容量不足,要求會立即失敗,並嘗試使用集合中的下一個區域。
在可用區中,以機器類型大量建立 VM
下列虛擬程式碼說明如何在可用區中,以指定的機器類型建立多部 VM。嘗試以相同機器類型大量建立 VM 時,要求會先檢查這些機器類型是否可用。如果沒有足夠的機器類型可用,要求會立即失敗,並使用下一個機器類型重試。
在一個可用區中建立超過 5,000 個 VM
大量建立 VM 時,每個要求只能建立 5,000 個 VM。 下列虛擬程式碼說明如何發出多項要求,在一個可用區中建立超過 5,000 個 VM。
大量建立 VM 並查看狀態
下列程序說明如何建立一組具有預先定義名稱的 VM,然後查看其狀態:
後續步驟
大量建立 VM 後,請執行下列任一或全部操作,簡化這些 VM 的管理作業:
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-21 (世界標準時間)。
-