Se vuoi creare un numero elevato di istanze di macchine virtuali (VM) identiche e indipendenti l'una dall'altra, crea le VM in blocco utilizzando Google Cloud CLI o l'API Compute Engine. Puoi creare queste VM in tutte le zone di una regione o distribuite in determinate zone.
Per maggiori dettagli e limitazioni associate, consulta Informazioni sulla creazione collettiva delle VM.
Prima di iniziare
- Per le VM e le eventuali risorse correlate che prevedi di creare, assicurati di disporre di una quota sufficiente e delle autorizzazioni richieste.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Imposta una regione e una zona predefinite.
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.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
-
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare VM in blocco,
chiedi all'amministratore di concederti il ruolo IAM
Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1
) per il progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare VM in blocco. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per creare VM collettivamente sono necessarie le seguenti autorizzazioni:
-
compute.instances.create
sul progetto -
Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnly
nell'immagine -
Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnly
nello snapshot -
Per utilizzare un modello di istanza per creare la VM:
compute.instanceTemplates.useReadOnly
sul modello 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 tua 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 nella 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 account di servizio per la VM da utilizzare:
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 lettura/scrittura:
compute.disks.use
sul disco -
Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnly
sul disco
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Creazione collettiva di VM in una regione
Per creare VM in blocco in una regione, utilizza gcloud CLI o l'API Compute Engine.
Se specifichi un tipo di macchina o il supporto per hardware aggiuntivo come una GPU o un SSD locale, Compute Engine posiziona le VM in una zona all'interno della regione che supporta il tipo di macchina e l'hardware aggiuntivo.
gcloud
Per creare collettivamente le VM 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-shape=TARGET_SHAPE ]
Sostituisci quanto segue:
NAME_PATTERN: il pattern del nome delle VM. Utilizza una sequenza di caratteri hash (
#
) affinché Compute Engine sostituisca con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern dei nomi genera VM con i nomivm-1
,vm-2
e così via, 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 dei nomi, Compute Engine cerca di evitare conflitti di nomi 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 essere uguale al numero di nomi forniti.REGION: la regione in cui creare le VM.
COUNT: il numero di VM da creare. Deve essere inferiore o uguale al numero di VM consentite da
NAME_PATTERN
. Oppure, se utilizzi--predefined-names
, non devi specificareCOUNT
, ma se lo fai, deve essere uguale 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 imposti questo flag:
Valore Descrizione Non impostata Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non riesce e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a un massimo di COUNT
.Maggiore di 1
e minore diCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
VM. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non vengono create 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 il criterio come valore. I valori validi per il criterio sono
allow
, 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_SHAPE: la distribuzione delle VM nelle 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 zona singola e dà priorità all'utilizzo delle prenotazioni inutilizzate. Usa questa opzione per evitare il traffico di rete in uscita tra zone o per ridurre la latenza di rete. Questo è il valore predefinito. balanced
Tenta di distribuire le VM in modo uniforme in tutte le zone nella regione. any
Consente la distribuzione delle VM in più zone in una regione. Sceglie le zone con risorse disponibili che massimizzano le prenotazioni a livello di zona inutilizzate.
REST
Per creare collettivamente le VM in una regione, utilizza il seguente metodo instances.bulkInsert
:
POST https://www.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_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 questo o
perInstanceProperties
. Utilizza una sequenza di caratteri hash (#
) affinché Compute Engine sostituisca con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern dei nomi genera VM con i nomivm-1
,vm-2
e così via, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern dei nomi.Quando utilizzi un pattern dei nomi, Compute Engine cerca di evitare conflitti di nomi 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 questo elemento o
namePattern
. Se utilizzi questo flag e specifichiCOUNT
,COUNT
deve essere uguale al numero di nomi forniti.COUNT: il numero di VM da creare. Deve essere inferiore o uguale al numero di VM consentite da
NAME_PATTERN
. Oppure, se utilizziperInstanceProperties
, non devi specificareCOUNT
, ma in caso contrario, deve essere uguale 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 imposti questo flag:
Valore Descrizione Non impostata Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non riesce e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a un massimo di COUNT
.Maggiore di 1
e minore diCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
VM. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non vengono create 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 il criterio come valore. I valori validi per il criterio sono
ALLOW
, 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_SHAPE: la distribuzione delle VM nelle zone specificate. Utilizza il campo
locationPolicy
per specificare le zone. La seguente tabella mostra i valori validi per questo campo:Valore Descrizione ANY_SINGLE_ZONE
Applica il posizionamento delle VM in una zona singola e dà priorità all'utilizzo delle prenotazioni inutilizzate. Usa questa opzione per evitare il traffico di rete in uscita tra zone o per ridurre la latenza di rete. Questo è il valore predefinito. BALANCED
Tenta di distribuire le VM in modo uniforme in tutte le zone nella regione. ANY
Consente la distribuzione delle VM in più zone in una regione. Sceglie le zone con risorse disponibili che massimizzano le prenotazioni a livello di zona inutilizzate.
Crea VM collettivamente in una zona
Per creare VM in blocco in una zona, utilizza gcloud CLI o l'API Compute Engine.
gcloud
Per creare VM in blocco in una zona specifica, 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 (
#
) affinché Compute Engine sostituisca con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern dei nomi genera VM con i nomivm-1
,vm-2
e così via, 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 dei nomi, Compute Engine cerca di evitare conflitti di nomi 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 essere uguale al numero di nomi forniti.ZONE: la zona in cui creare le VM.
COUNT: il numero di VM da creare. Deve essere inferiore o uguale al numero di VM consentite da
NAME_PATTERN
. Oppure, se utilizzi--predefined-names
, non devi specificareCOUNT
, ma se lo fai, deve essere uguale 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 imposti questo flag:
Valore Descrizione Non impostata Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non riesce e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a un massimo di COUNT
.Maggiore di 1
e minore diCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
VM. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non vengono create VM.
REST
Per creare collettivamente le VM in una zona, utilizza il seguente metodo instances.bulkInsert
.
POST https://www.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 questo o
perInstanceProperties
. Utilizza una sequenza di caratteri hash (#
) affinché Compute Engine sostituisca con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern dei nomi genera VM con i nomivm-1
,vm-2
e così via, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern dei nomi.Quando utilizzi un pattern dei nomi, Compute Engine cerca di evitare conflitti di nomi 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 questo elemento o
namePattern
. Se utilizzi questo flag e specifichiCOUNT
,COUNT
deve essere uguale al numero di nomi forniti.COUNT: il numero di VM da creare. Deve essere inferiore o uguale al numero di VM consentite da
NAME_PATTERN
. Oppure, se utilizziperInstanceProperties
, non devi specificareCOUNT
, ma in caso contrario, deve essere uguale 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 imposti questo flag:
Valore Descrizione Non impostata Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non riesce e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a un massimo di COUNT
.Maggiore di 1
e minore diCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
VM. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non vengono create VM.
Crea collettivamente VM con nomi host personalizzati
Puoi creare collettivamente 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 tuo nome host personalizzato. Per ulteriori informazioni, consulta le limitazioni.
Se non specifichi un nome host, Compute Engine imposta il nome host per le VM come uno dei seguenti:
VM_NAME.c.PROJECT_ID.internal
quando abiliti il DNS globaleVM_NAME.ZONE.c.PROJECT_ID.internal
quando abiliti il DNS di zona
Per ulteriori informazioni, consulta la pagina relativa ai nomi DNS interni.
gcloud
Per creare VM collettivamente con nomi host personalizzati in una regione specifica, utilizza il comando gcloud beta compute instances bulk create
seguente.
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-shape=TARGET_SHAPE ]
Sostituisci quanto segue:
NAME_PATTERN: il pattern del nome delle VM. Utilizza una sequenza di caratteri hash (
#
) affinché Compute Engine sostituisca con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern dei nomi genera VM con i nomivm-1
,vm-2
e così via, 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 dei nomi, Compute Engine cerca di evitare conflitti di nomi 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 essere uguale al numero di nomi forniti.[VM_NAME=HOSTNAME, ...]: un elenco di coppie chiave-valore di nomi predefiniti per le VM e dei nomi host di dominio completi che vuoi assegnare alle VM. I nomi host personalizzati devono essere conformi ai requisiti RFC 1035 per i nomi host validi.
REGION: la zona in cui creare le VM.
COUNT: il numero di VM da creare. Deve essere inferiore o uguale al numero di VM consentite da
NAME_PATTERN
. Oppure, se utilizzi--predefined-names
, non devi specificareCOUNT
, ma se lo fai, deve essere uguale 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 imposti questo flag:
Valore Descrizione Non impostata Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non riesce e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a un massimo di COUNT
.Maggiore di 1
e minore diCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
VM. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non vengono create 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 il criterio come valore. I valori validi per il criterio sono
ALLOW
, 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_SHAPE: la distribuzione delle VM nelle zone specificate. Utilizza il campo
locationPolicy
per specificare le zone. La seguente tabella mostra i valori validi per questo campo:Valore Descrizione ANY_SINGLE_ZONE
Applica il posizionamento delle VM in una zona singola e dà priorità all'utilizzo delle prenotazioni inutilizzate. Usa questa opzione per evitare il traffico di rete in uscita tra zone o per ridurre la latenza di rete. Questo è il valore predefinito. BALANCED
Tenta di distribuire le VM in modo uniforme in tutte le zone nella regione. ANY
Consente la distribuzione delle VM in più zone in una regione. Sceglie le zone con risorse disponibili che massimizzano le prenotazioni a livello di zona inutilizzate.
REST
Per creare collettivamente VM con nomi host personalizzati in una regione specifica, utilizza il seguente
metodo instances.bulkInsert
:
POST https://www.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_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 questo o
perInstanceProperties
. Utilizza una sequenza di caratteri hash (#
) affinché Compute Engine sostituisca con una sequenza di numeri. Ad esempio, l'utilizzo divm-#
per il pattern dei nomi genera VM con i nomivm-1
,vm-2
e così via, fino al numero di VM specificato da--count
, che deve essere inferiore o uguale al numero di VM consentito dal pattern dei nomi.Quando utilizzi un pattern dei nomi, Compute Engine cerca di evitare conflitti di nomi 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 questo elemento o
namePattern
. Se utilizzi questo flag e specifichiCOUNT
,COUNT
deve essere uguale al numero di nomi forniti.HOSTNAME_1, HOSTNAME_2, ...: nomi host di dominio completo che vuoi assegnare alle VM. I nomi host personalizzati devono essere conformi ai requisiti RFC 1035 per i nomi host validi.
Ad esempio, per creare due VM
vm-1
evm-2
con nomi host personalizzatimy-host1234.example.com
etest.example.com
rispettivamente, 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. Deve essere inferiore o uguale al numero di VM consentite da
NAME_PATTERN
. Oppure, se utilizziperInstanceProperties
, non devi specificareCOUNT
, ma in caso contrario, deve essere uguale 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 imposti questo flag:
Valore Descrizione Non impostata Il valore predefinito è COUNT
. Se Compute Engine non riesce a creare il numero di VM specificato daCOUNT
, la richiesta non riesce e non viene creata alcuna VM.1
Compute Engine crea il maggior numero possibile di VM, fino a un massimo di COUNT
.Maggiore di 1
e minore diCOUNT
Compute Engine crea almeno MIN_COUNT
VM fino a un massimo diCOUNT
VM. Se non è possibile creareMIN_COUNT
VM, la richiesta non va a buon fine e non vengono create 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 il criterio come valore. I valori validi per il criterio sono
ALLOW
, 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_SHAPE: la distribuzione delle VM nelle zone specificate. Utilizza il campo
locationPolicy
per specificare le zone. La seguente tabella mostra i valori validi per questo campo:Valore Descrizione ANY_SINGLE_ZONE
Applica il posizionamento delle VM in una zona singola e dà priorità all'utilizzo delle prenotazioni inutilizzate. Usa questa opzione per evitare il traffico di rete in uscita tra zone o per ridurre la latenza di rete. Questo è il valore predefinito. BALANCED
Tenta di distribuire le VM in modo uniforme in tutte le zone nella regione. ANY
Consente la distribuzione delle VM in più zone in una regione. Sceglie le zone con risorse disponibili che massimizzano le prenotazioni a livello di zona inutilizzate.
Controllare lo stato di una richiesta di creazione collettiva di VM
Quando crei una richiesta di mutazione, Compute Engine restituisce una risorsa operation
che puoi eseguire il polling per ottenere lo stato dell'operazione. Per ulteriori informazioni, consulta la sezione Gestione delle risposte dell'API.
Per ottenere lo stato di una richiesta di inserimento collettivo, invia una richiesta GET
HTTP
alla risorsa operation
:
GET compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Per ottenere lo stato di una richiesta di inserimento collettivo a livello di regione, invia la seguente richiesta:
GET 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 operazione di inserimento collettivo
L'oggetto instancesBulkInsertOperationMetadata
nella risposta contiene i seguenti dettagli dell'operazione:
status
: lo stato è uno dei seguenti:CREATING
: è in corso la creazione della VMROLLING_BACK
: la richiesta non è andata a buon fine ed è in corso il rollbackDONE
: creazione o rollback della VM completati
targetVmCount
: il numero di VM da creare nella zona specificatacreatedVmCount
: il numero di VM già create nella zona specificatafailedToCreateVmCount
: il numero di VM che non è stato possibile creare 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 almeno il numero minimo di VM e non vengono più creati o rollback della richiesta di VM.
Quando è in corso l'operazione di inserimento collettivo, dovresti vedere una risposta simile alla seguente:
{
"kind" : "compute#operation",
"id": "4653028658507445766",
"name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
"operationType": "bulkInsert",
"targetLink": "https://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://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 è stata completata al 2%.
L'operazione restituisce lo stato DONE
quando Compute Engine crea correttamente almeno il numero minimo di VM specificato da minCount
o quando Compute Engine completa il rollback della richiesta.
Dopo aver creato correttamente il numero di VM richiesto, 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 saperne di più, consulta la documentazione relativa all'oggetto instancesBulkInsertOperationMetadata
.
Controllare 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
Dall'elemento
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)
Ottieni le altre proprietà della VM effettuando 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 proprietà della VM:gcloud compute instances describe VM_NAME
Utilizza il comando
gcloud compute instances list
con un filtro che includa i nomi delle VM nell'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 ottenere le proprietà delle VM da tutte le zone e regioni e filtra in base a un'etichetta univoca per le istanze o in base al nome:gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
REST
Dall'elemento
Operation
restituito dalla richiesta, ottieni il valore della proprietàoperationGroupId
.Utilizza la proprietà
operationGroupId
come filtro 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, utilizza il metodo
globalOperations.aggregatedList
per cercare in tutte le operazioni e in tutte le zone del progetto: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, usa il metodo
zoneOperations.get
per elencare le operazioni in quella zona:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert?filter=(operationGroupId=OPERATION_GROUP_ID)
Ottieni le altre proprietà della VM effettuando 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 proprietà della VM: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 nell'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 ottenere le proprietà delle VM da tutte le zone e regioni, e filtra 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
I seguenti esempi di pseudocodice mostrano come personalizzare le richieste per la creazione di VM in blocco.
Crea VM collettivamente in una regione da un insieme di regioni
Il seguente pseudocodice descrive come creare 1000 VM in una regione da un insieme di regioni. Quando si cerca di creare VM collettivamente in una regione da un insieme di regioni, la richiesta verifica prima la capacità. Se la capacità non è sufficiente, la richiesta non riesce immediatamente e riprova con la regione successiva del set.
Specifica il numero di VM da creare all'interno di una zona.
nTarget = 1000
Specifica le regioni in cui tentare di creare le VM.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
Esegui l'iterazione nelle varie regioni e cerca di creare le VM in ogni regione fino a quando il risultato 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 VM collettivamente 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 cerca di creare VM in blocco nello stesso tipo di macchina, la richiesta verifica innanzitutto la disponibilità di questi tipi di macchina. Se il tipo di macchina disponibile non è sufficiente, la richiesta non riesce immediatamente e riprova 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 dell'insieme di tipi di macchina e prova a creare le VM sul tipo di macchina 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 crei VM in blocco, puoi creare solo 5000 VM per ogni 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 archiviare la zona in cui Compute Engine crea le VM.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
Emetti una richiesta iniziale per creare 5000 VM, salvare la zona restituita dalla richiesta e aggiornare 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 inviare richieste per creare fino a 5000 VM alla volta nella zona finché 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 le VM in blocco e visualizza il loro stato
La procedura seguente mostra come creare un gruppo di VM con nomi predefiniti e quindi visualizzarne lo stato:
Specifica il numero di VM da creare, la zona in cui crearle e una struttura di dati in cui archiviare i nomi.
nTarget = 1000 targetZone = "us-central-1a" names = []
Genera i nomi con pattern per le VM e aggiungili alla struttura dei dati.
for n in range(0, 1000): names.push("instance-%d".format(n))
Crea le VM e usa
perInstanceProperties
per specificare i nomi.call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
Recupera i dettagli delle VM utilizzando il metodo
instances.list
con un filtro per i nomi delle VM di cui restituire i dettagli.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
Passaggi successivi
Dopo aver creato le VM in blocco, esegui una o entrambe le seguenti operazioni per semplificare la gestione delle VM:
Aggiungi le VM a un gruppo di istanze non gestite. L'aggiunta di VM a un gruppo di istanze non gestito consente di utilizzare Cloud Monitoring. I gruppi di istanze non gestite non forniscono il bilanciamento del carico o la gestione del ciclo di vita delle VM.
Utilizza le etichette. Le etichette consentono di organizzare le risorse utilizzando coppie chiave-valore.