Quando vuoi ottenere un numero elevato di istanze di macchine virtuali (VM) identiche e indipendenti l'una dall'altra, creale in blocco utilizzando Google Cloud CLI o l'API Compute Engine. Puoi creare le VM in tutte le zone di una regione o solo in alcune di queste.
Per ulteriori dettagli e limitazioni associate, consulta Informazioni sulla creazione collettiva di VM. Se vuoi creare istanze con GPU associate, consulta invece Crea più VM GPU contemporaneamente.
Prima di iniziare
- Per le VM e le eventuali risorse correlate che intendi creare, assicurati di disporre di una quota sufficiente e delle autorizzazioni necessarie.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di Google Cloud .
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI 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
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI 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.
Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare più VM contemporaneamente, chiedi all'amministratore di concederti il ruolo IAM Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.Questo ruolo predefinito include le autorizzazioni necessarie per creare più VM contemporaneamente. Per visualizzare le autorizzazioni obbligatorie corrette, espandi l'omonima sezione:
Autorizzazioni obbligatorie
Per creare più VM contemporaneamente, sono necessarie le seguenti autorizzazioni:
-
compute.instances.create
sul progetto -
Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnly
sull'immagine -
Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnly
sullo snapshot -
Per utilizzare un template di istanza per creare la VM:
compute.instanceTemplates.useReadOnly
sul template di istanza -
Per assegnare una rete legacy alla VM:
compute.networks.use
sul progetto -
Per specificare un indirizzo IP statico per la VM:
compute.addresses.use
sul progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy:
compute.networks.useExternalIp
sul progetto -
Per specificare una subnet per la VM:
compute.subnetworks.use
sul progetto o nella subnet scelta -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC:
compute.subnetworks.useExternalIp
sul progetto o sulla subnet scelta -
Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadata
sul progetto -
Per impostare i tag per la VM:
compute.instances.setTags
sulla VM -
Per impostare le etichette per la VM:
compute.instances.setLabels
sulla VM -
Per impostare un service account da utilizzare per la VM:
compute.instances.setServiceAccount
sulla VM -
Per creare un nuovo disco per la VM:
compute.disks.create
sul progetto -
Per collegare un disco esistente in modalità di sola lettura o di lettura e scrittura:
compute.disks.use
sul disco -
Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnly
sul disco
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Crea più VM contemporaneamente in una regione
Per creare più VM contemporaneamente in una regione, utilizza gcloud CLI o l'API Compute Engine.
Se specifichi un tipo di macchina o un supporto per un hardware aggiuntivo come una GPU o un'unità SSD locale, Compute Engine posiziona le VM in una zona all'interno della regione che supporta quel tipo di macchina e quell'hardware aggiuntivo.
gcloud
Per creare più VM contemporaneamente in una regione, utilizza il seguente comando
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 ]
Sostituisci quanto segue:
NAME_PATTERN: il pattern del nome delle VM. Utilizza una sequenza di caratteri hash (
#
) per consentire a Compute Engine di sostituirla con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern del nome genera VM con nomi comevm-1
evm-2
, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern del nome.Quando utilizzi un pattern del nome, Compute Engine cerca di evitare eventuali conflitti controllando i nomi delle VM esistenti create da richieste precedenti.
PREDEFINED_NAMES: un elenco di nomi predefiniti per le VM da creare. Se utilizzi questo flag e specifichi
COUNT
,COUNT
deve corrispondere al numero di nomi forniti.REGION: la regione in cui creare le VM
COUNT: il numero di VM da creare. Questo deve essere inferiore o uguale al numero di VM consentito da
NAME_PATTERN
. In alternativa, se utilizzi--predefined-names
, non devi specificareCOUNT
, ma se lo fai, questo deve corrispondere al numero di nomi forniti.MIN_COUNT: il numero minimo di VM da creare. La tabella seguente descrive il comportamento della richiesta a seconda di come viene impostato questo flag:
Valore Descrizione Non impostato Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non va a buon fine e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a COUNT
.Maggiore di 1
e inferiore aCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non viene creata alcuna VM.LOCATION_POLICY: le zone da includere o escludere all'interno di una regione. Utilizza un elenco di coppie chiave/valore, con la zona come chiave e la policy come valore. I valori validi per la policy sono
allow
, ovvero il valore predefinito, edeny
. Di seguito è riportato un valore di esempio per questo flag:--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_DISTRIBUTION_SHAPE: la distribuzione delle VM tra le zone specificate. Utilizza il flag
--location-policy
per specificare le zone. La tabella seguente mostra i valori validi per questo flag:Valore Descrizione ANY_SINGLE_ZONE
Applica il posizionamento delle VM in una singola zona e dà la priorità all'utilizzo delle prenotazioni inutilizzate. Utilizza questo valore per evitare il traffico in uscita dalla rete tra zone o per ridurre la latenza della rete. Questo è il valore predefinito. BALANCED
Tenta di distribuire le VM in modo uniforme in tutte le zone della regione. ANY
Consente la distribuzione delle VM in più zone di una regione. Sceglie zone con risorse disponibili e che massimizzano le prenotazioni di zona non utilizzate.
REST
Per creare più VM contemporaneamente in una regione, utilizza il seguente metodo
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" ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
REGION: la regione in cui creare le VM
NAME_PATTERN: il pattern del nome delle VM. Specifica questa opzione o
perInstanceProperties
. Utilizza una sequenza di caratteri hash (#
) per consentire a Compute Engine di sostituirla con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern del nome genera VM con nomi comevm-1
evm-2
, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern del nome.Quando utilizzi un pattern del nome, Compute Engine cerca di evitare eventuali conflitti controllando i nomi delle VM esistenti create da richieste precedenti.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: un elenco di nomi predefiniti per le VM da creare. Specifica questa opzione o
namePattern
. Se utilizzi questo flag e specifichiCOUNT
,COUNT
deve corrispondere al numero di nomi forniti.COUNT: il numero di VM da creare. Questo deve essere inferiore o uguale al numero di VM consentito da
NAME_PATTERN
. In alternativa, se utilizziperInstanceProperties
, non devi specificareCOUNT
, ma se lo fai, questo deve corrispondere al numero di nomi forniti.MIN_COUNT: il numero minimo di VM da creare. La tabella seguente descrive il comportamento della richiesta a seconda di come viene impostato questo flag:
Valore Descrizione Non impostato Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non va a buon fine e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a COUNT
.Maggiore di 1
e inferiore aCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non viene creata alcuna VM.LOCATION_POLICY: le zone da includere o escludere all'interno di una regione. Utilizza un elenco di coppie chiave/valore, con la zona come chiave e la policy come valore. I valori validi per la policy sono
ALLOW
, ovvero il valore predefinito, eDENY
. Di seguito è riportato un valore di esempio per questo campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE: la distribuzione delle VM nelle zone specificate. Utilizza il campo
locationPolicy
per specificare le zone. La tabella seguente mostra i valori validi per questo campo:Valore Descrizione ANY_SINGLE_ZONE
Applica il posizionamento delle VM in una singola zona e dà la priorità all'utilizzo delle prenotazioni inutilizzate. Utilizza questo valore per evitare il traffico in uscita dalla rete tra zone o per ridurre la latenza della rete. Questo è il valore predefinito. BALANCED
Tenta di distribuire le VM in modo uniforme in tutte le zone della regione. ANY
Consente la distribuzione delle VM in più zone di una regione. Sceglie zone con risorse disponibili e che massimizzano le prenotazioni di zona non utilizzate.
Crea più VM contemporaneamente in una zona
Per creare più VM contemporaneamente in una zona, utilizza gcloud CLI o l'API Compute Engine.
gcloud
Per creare più VM contemporaneamente in una specifica zona, utilizza il seguente comando
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 ]
Sostituisci quanto segue:
NAME_PATTERN: il pattern del nome delle VM. Utilizza una sequenza di caratteri hash (
#
) per consentire a Compute Engine di sostituirla con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern del nome genera VM con nomi comevm-1
evm-2
, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern del nome.Quando utilizzi un pattern del nome, Compute Engine cerca di evitare eventuali conflitti controllando i nomi delle VM esistenti create da richieste precedenti.
PREDEFINED_NAMES: un elenco di nomi predefiniti per le VM da creare. Se utilizzi questo flag e specifichi
COUNT
,COUNT
deve corrispondere al numero di nomi forniti.ZONE: la zona in cui creare le VM
COUNT: il numero di VM da creare. Questo deve essere inferiore o uguale al numero di VM consentito da
NAME_PATTERN
. In alternativa, se utilizzi--predefined-names
, non devi specificareCOUNT
, ma se lo fai, questo deve corrispondere al numero di nomi forniti.MIN_COUNT: il numero minimo di VM da creare. La tabella seguente descrive il comportamento della richiesta a seconda di come viene impostato questo flag:
Valore Descrizione Non impostato Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non va a buon fine e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a COUNT
.Maggiore di 1
e inferiore aCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non viene creata alcuna VM.
REST
Per creare più VM contemporaneamente in una zona, utilizza il seguente metodo
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, ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona in cui creare le VM
NAME_PATTERN: il pattern del nome delle VM. Specifica questa opzione o
perInstanceProperties
. Utilizza una sequenza di caratteri hash (#
) per consentire a Compute Engine di sostituirla con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern del nome genera VM con nomi comevm-1
evm-2
, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern del nome.Quando utilizzi un pattern del nome, Compute Engine cerca di evitare eventuali conflitti controllando i nomi delle VM esistenti create da richieste precedenti.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: un elenco di nomi predefiniti per le VM da creare. Specifica questa opzione o
namePattern
. Se utilizzi questo flag e specifichiCOUNT
,COUNT
deve corrispondere al numero di nomi forniti.COUNT: il numero di VM da creare. Questo deve essere inferiore o uguale al numero di VM consentito da
NAME_PATTERN
. In alternativa, se utilizziperInstanceProperties
, non devi specificareCOUNT
, ma se lo fai, questo deve corrispondere al numero di nomi forniti.MIN_COUNT: il numero minimo di VM da creare. La tabella seguente descrive il comportamento della richiesta a seconda di come viene impostato questo flag:
Valore Descrizione Non impostato Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non va a buon fine e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a COUNT
.Maggiore di 1
e inferiore aCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non viene creata alcuna VM.
Crea più VM contemporaneamente con nomi host personalizzati
Puoi creare più VM con nomi host personalizzati in una regione o in una zona utilizzando gcloud CLI o l'API Compute Engine.
Devi configurare manualmente il record DNS per il nome host personalizzato. Per ulteriori informazioni, consulta le limitazioni.
Se non specifichi un nome host, Compute Engine ne imposta uno per le VM su uno dei seguenti valori:
VM_NAME.c.PROJECT_ID.internal
quando attivi il DNS globaleVM_NAME.ZONE.c.PROJECT_ID.internal
quando attivi il DNS di zona
Per ulteriori informazioni, consulta Nomi DNS interni.
gcloud
Per creare più VM contemporaneamente con nomi host personalizzati in una regione specifica, utilizza il seguente comando
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 ]
Sostituisci quanto segue:
NAME_PATTERN: il pattern del nome delle VM. Utilizza una sequenza di caratteri hash (
#
) per consentire a Compute Engine di sostituirla con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern del nome genera VM con nomi comevm-1
evm-2
, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern del nome.Quando utilizzi un pattern del nome, Compute Engine cerca di evitare eventuali conflitti controllando i nomi delle VM esistenti create da richieste precedenti.
PREDEFINED_NAMES: un elenco di nomi predefiniti per le VM da creare. Se utilizzi questo flag e specifichi
COUNT
,COUNT
deve corrispondere al numero di nomi forniti.[VM_NAME=HOSTNAME, ...]: un elenco di coppie chiave/valore di nomi predefiniti per le VM e nomi host di dominio completi da assegnare alle VM. I nomi host personalizzati devono essere conformi ai requisiti per i nomi host validi definiti nel documento RFC 1035.
REGION: la zona in cui creare le VM.
COUNT: il numero di VM da creare. Questo deve essere inferiore o uguale al numero di VM consentito da
NAME_PATTERN
. In alternativa, se utilizzi--predefined-names
, non devi specificareCOUNT
, ma se lo fai, questo deve corrispondere al numero di nomi forniti.MIN_COUNT: il numero minimo di VM da creare. La tabella seguente descrive il comportamento della richiesta a seconda di come viene impostato questo flag:
Valore Descrizione Non impostato Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non va a buon fine e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a COUNT
.Maggiore di 1
e inferiore aCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non viene creata alcuna VM.LOCATION_POLICY: le zone da includere o escludere all'interno di una regione. Utilizza un elenco di coppie chiave/valore, con la zona come chiave e la policy come valore. I valori validi per la policy sono
ALLOW
, ovvero il valore predefinito, eDENY
. Di seguito è riportato un valore di esempio per questo campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE: la distribuzione delle VM nelle zone specificate. Utilizza il campo
locationPolicy
per specificare le zone. La tabella seguente mostra i valori validi per questo campo:Valore Descrizione ANY_SINGLE_ZONE
Applica il posizionamento delle VM in una singola zona e dà la priorità all'utilizzo delle prenotazioni inutilizzate. Utilizza questo valore per evitare il traffico in uscita dalla rete tra zone o per ridurre la latenza della rete. Questo è il valore predefinito. BALANCED
Tenta di distribuire le VM in modo uniforme in tutte le zone della regione. ANY
Consente la distribuzione delle VM in più zone di una regione. Sceglie zone con risorse disponibili e che massimizzano le prenotazioni di zona non utilizzate.
REST
Per creare più VM contemporaneamente con nomi host personalizzati in una regione specifica, utilizza il seguente metodo
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" ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
REGION: la regione in cui creare le VM
NAME_PATTERN: il pattern del nome delle VM. Specifica questa opzione o
perInstanceProperties
. Utilizza una sequenza di caratteri hash (#
) per consentire a Compute Engine di sostituirla con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern del nome genera VM con nomi comevm-1
evm-2
, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern del nome.Quando utilizzi un pattern del nome, Compute Engine cerca di evitare eventuali conflitti controllando i nomi delle VM esistenti create da richieste precedenti.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: un elenco di nomi predefiniti per le VM da creare. Specifica questa opzione o
namePattern
. Se utilizzi questo flag e specifichiCOUNT
,COUNT
deve corrispondere al numero di nomi forniti.HOSTNAME_1, HOSTNAME_2, ...: i nomi host di dominio completi che vuoi assegnare alle VM. I nomi host personalizzati devono essere conformi ai requisiti per i nomi host validi definiti nel documento RFC 1035.
Ad esempio, per creare due VM
vm-1
evm-2
con nomi host personalizzati, rispettivamentemy-host1234.example.com
etest.example.com
, specifica la proprietàhostname
inperInstanceProperties
come segue:{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT: il numero di VM da creare. Questo deve essere inferiore o uguale al numero di VM consentito da
NAME_PATTERN
. In alternativa, se utilizziperInstanceProperties
, non devi specificareCOUNT
, ma se lo fai, questo deve corrispondere al numero di nomi forniti.MIN_COUNT: il numero minimo di VM da creare. La tabella seguente descrive il comportamento della richiesta a seconda di come viene impostato questo flag:
Valore Descrizione Non impostato Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non va a buon fine e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a COUNT
.Maggiore di 1
e inferiore aCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non viene creata alcuna VM.LOCATION_POLICY: le zone da includere o escludere all'interno di una regione. Utilizza un elenco di coppie chiave/valore, con la zona come chiave e la policy come valore. I valori validi per la policy sono
ALLOW
, ovvero il valore predefinito, eDENY
. Di seguito è riportato un valore di esempio per questo campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE: la distribuzione delle VM nelle zone specificate. Utilizza il campo
locationPolicy
per specificare le zone. La tabella seguente mostra i valori validi per questo campo:Valore Descrizione ANY_SINGLE_ZONE
Applica il posizionamento delle VM in una singola zona e dà la priorità all'utilizzo delle prenotazioni inutilizzate. Utilizza questo valore per evitare il traffico in uscita dalla rete tra zone o per ridurre la latenza della rete. Questo è il valore predefinito. BALANCED
Tenta di distribuire le VM in modo uniforme in tutte le zone della regione. ANY
Consente la distribuzione delle VM in più zone di una regione. Sceglie zone con risorse disponibili e che massimizzano le prenotazioni di zona non utilizzate.
Controlla lo stato di una richiesta di creazione collettiva di VM
Quando crei una richiesta di mutazione, Compute Engine restituisce una risorsa
operation
di cui puoi eseguire il polling per ottenere lo stato dell'operazione. Per ulteriori informazioni, consulta Gestione di risposte dell'API.Per conoscere lo stato di una richiesta di inserimento collettivo, invia una richiesta HTTP
GET
alla risorsaoperation
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Per conoscere lo stato di una richiesta di inserimento collettivo a livello di regione, invia quanto segue:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto in cui stai creando le VMREGION
: la regione in cui stai creando le VMZONE
: la zona in cui stai creando le VMOPERATION_ID
: l'ID dell'operazione di inserimento collettivo
L'oggetto
instancesBulkInsertOperationMetadata
nella risposta contiene i seguenti dettagli dell'operazione:status
: lo stato è uno dei seguenti:CREATING
: la creazione della VM è in corsoROLLING_BACK
: la richiesta non è riuscita e viene eseguito il rollbackDONE
: la creazione o il rollback della VM è stato completato correttamente
targetVmCount
: il numero di VM da creare nella zona specificatacreatedVmCount
: il numero di VM già create nella zona specificatafailedToCreateVmCount
: il numero di VM non create nella zona specificatadeletedVmCount
: il numero di VM eliminate nell'ambito del rollback di un'operazione non riuscita
Il campo
progress
nella risposta rappresenta la percentuale di completamento dell'operazione.Lo stato dell'operazione di inserimento collettivo è
RUNNING
finché Compute Engine non crea correttamente almeno un numero minimo di VM e non viene eseguita più alcuna creazione di VM o rollback della richiesta.Quando l'operazione di inserimento collettivo è in corso, dovresti visualizzare una risposta simile alla seguente:
{ "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 } } } }
In questo esempio, è stata creata un'istanza e l'operazione è completata per il 2%.
L'operazione restituisce lo stato
DONE
quando Compute Engine crea correttamente almeno un numero minimo di VM specificato daminCount
o quando completa il rollback della richiesta. Dopo aver creato correttamente il numero richiesto di VM, ricevi una risposta simile alla seguente:{ "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" }
Per ulteriori informazioni, consulta la documentazione relativa all'oggetto
instancesBulkInsertOperationMetadata
.Controlla lo stato di una singola VM
Per controllare lo stato di una singola VM creata da una richiesta di creazione collettiva di VM, utilizza gcloud CLI o l'API Compute Engine.
gcloud
Da
Operation
restituito dalla richiesta, ottieni il valore della proprietàoperationGroupId
.Utilizza la proprietà
operationGroupId
come filtro con il comandogcloud compute operations list
per cercare in tutte le operazioni e in tutte le zone del progetto le VM associate alla richiesta a livello di regione o zona:gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
Per ottenere le altre proprietà della VM, esegui una delle seguenti operazioni:
Nell'elenco delle operazioni,
targetLink
rappresenta il percorso della VM. Utilizza il comandogcloud compute instances describe
con questo percorso come nome della VM per ottenere le relative proprietà:gcloud compute instances describe VM_NAME
Utilizza il comando
gcloud compute instances list
con un filtro che includa i nomi delle VM dall'elenco delle operazioni:gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Utilizza il comando
gcloud compute instances list
per recuperare le proprietà delle VM di tutte le zone e regioni e filtrare in base a un'etichetta univoca per le istanze o ai relativi nomi:gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
REST
Da
Operation
restituito dalla richiesta, ottieni il valore della proprietàoperationGroupId
.Utilizza la proprietà
operationGroupId
per ottenere l'elenco delle operazioni VM associate alla richiesta a livello di regione o zona:Se hai inviato una richiesta a livello di regione, per eseguire una ricerca tra tutte le operazioni e tutte le zone del progetto, utilizza il metodo
globalOperations.aggregatedList
e includi la proprietàoperationGroupId
come filtro:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
Se hai inviato una richiesta a livello di zona, per elencare le operazioni in quella zona, utilizza il metodo
zoneOperations.get
e includi la proprietàoperationGroupId
nel corpo della richiesta:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
Per ottenere le altre proprietà della VM, esegui una delle seguenti operazioni:
Nell'elenco delle operazioni,
targetLink
rappresenta il percorso della VM. Utilizza il metodoinstances.get
con questo percorso come nome della VM per ottenere tutte le relative proprietà:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
Utilizza il metodo
instances.get
con un filtro che includa i nomi delle VM dall'elenco delle operazioni:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Utilizza il metodo
instances.aggregatedList
per recuperare le proprietà delle VM di tutte le zone e regioni e filtrare in base a un'etichetta univoca per le istanze o ai relativi nomi:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Esempi di pseudocodice
Gli esempi di pseudocodice riportati di seguito mostrano come personalizzare le richieste per la creazione collettiva di VM.
Crea più VM contemporaneamente in una regione a partire da un insieme di regioni
Il seguente pseudocodice descrive come creare 1000 VM in una regione a partire da un insieme di regioni. Quando si tenta di creare più VM contemporaneamente in una regione da un insieme di regioni, la richiesta controlla innanzitutto la capacità. Se la capacità non è sufficiente, la richiesta non va immediatamente a buon fine e viene eseguito un nuovo tentativo con la regione successiva all'interno dell'insieme.
Specifica il numero di VM da creare all'interno di una zona.
nTarget = 1000
Designa le regioni in cui tentare di creare le VM.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
Esegui l'iterazione delle regioni e tenta di creare le VM in ogni regione fino a che l'operazione non va a buon fine.
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
Crea più VM contemporaneamente in una zona su un tipo di macchina
Il seguente pseudocodice descrive come creare più VM in una zona su un tipo di macchina specificato. Quando si tenta di creare più VM contemporaneamente sullo stesso tipo di macchina, la richiesta controlla innanzitutto la disponibilità di questi tipi di macchine. Se il tipo di macchine disponibile non è sufficiente, la richiesta non va immediatamente a buon fine immediatamente e viene eseguito un nuovo tentativo con il tipo di macchina successivo.
Specifica il numero di VM da creare e la regione in cui crearle.
nTarget = 1000 region = "us-central1"
Specifica le famiglie di macchine su cui tentare di creare le VM.
acceptableMachineFamilies = ["n2","c2","e2","n1"]
Esegui l'iterazione all'interno di un insieme di tipi di macchina e prova a creare le VM su un tipo specifico finché l'operazione non va a buon fine.
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
Crea più di 5000 VM in una zona
Quando esegui un'operazione di creazione collettiva delle VM, puoi creare solo 5000 VM per ciascuna richiesta. Il seguente pseudocodice descrive come creare più di 5000 VM in una zona inviando più richieste.
Specifica il numero di VM da creare, un contatore per tenere traccia del numero totale di VM create, la regione in cui creare le VM e una variabile per memorizzare la zona in cui Compute Engine crea le VM.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
Invia una richiesta iniziale per creare 5000 VM, salva la zona restituita dalla richiesta e aggiorna il contatore del numero di VM create.
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
Continua a emettere richieste per creare fino a 5000 VM alla volta nella zona fino a quando Compute Engine non crea il numero specificato di VM.
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
Crea più VM contemporaneamente e visualizzane lo stato
La procedura seguente mostra come creare un gruppo di VM con nomi predefiniti e visualizzarne lo stato:
Specifica il numero di VM da creare, la zona in cui crearle e una struttura di dati in cui memorizzare i nomi.
nTarget = 1000 targetZone = "us-central-1a" names = []
Genera i nomi con pattern per le VM e aggiungili alla struttura di dati.
for n in range(0, 1000): names.push("instance-%d".format(n))
Crea le VM e utilizza
perInstanceProperties
per specificare i nomi.call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
Ottieni i dettagli delle VM utilizzando il metodo
instances.list
con un filtro per i nomi delle VM di cui vuoi visualizzare i dettagli.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
Passaggi successivi
Dopo aver creato più VM contemporaneamente, esegui una o entrambe le seguenti operazioni per semplificarne la gestione:
Aggiungi le VM a un gruppo di istanze non gestite. L'aggiunta di VM a un gruppo di istanze non gestite consente di utilizzare Cloud Monitoring. I gruppi di istanze non gestite non forniscono un bilanciamento del carico o una gestione del ciclo di vita della VM.
Utilizza le etichette. Le etichette ti consentono di organizzare le risorse utilizzando coppie chiave/valore.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-30 UTC.
-