Questo documento descrive come specificare la flessibilità delle istanze quando crei più macchine virtuali (VM) contemporaneamente. Quando effettui questa specifica, indichi un elenco di tipi di macchine adatti alle VM e Compute Engine esegue il provisioning delle VM utilizzando uno dei tipi di macchine specificati in base alla capacità e alla disponibilità della quota in una regione.
Per saperne di più sulla flessibilità delle istanze per le VM create in blocco, consulta Informazioni sulla flessibilità delle istanze per le VM create in blocco.
Prima di iniziare
- Assicurati di avere una quota sufficiente per le VM e le risorse correlate che intendi creare, assicurati di avere una quota sufficiente.
- Se vuoi creare più VM spot contemporaneamente, visualizza la disponibilità delle risorse prima di creare le VM. Il controllo della disponibilità delle risorse contribuisce a ridurre le probabilità di riscontrare errori di disponibilità delle risorse durante la creazione delle VM. Per istruzioni, consulta Visualizzare la disponibilità delle risorse delle VM spot.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella Google Cloud documentazione sull'autenticazione di.
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.createsul progetto -
Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnlysull'immagine -
Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnlysullo snapshot -
Per utilizzare un template di istanza per creare la VM:
compute.instanceTemplates.useReadOnlysul template di istanza -
Per specificare una subnet per la VM:
compute.subnetworks.usesul progetto o sulla subnet scelta -
Per specificare un indirizzo IP statico per la VM:
compute.addresses.usesul progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC:
compute.subnetworks.useExternalIpsul progetto o sulla subnet scelta -
Per assegnare una rete legacy alla VM:
compute.networks.usesul progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy:
compute.networks.useExternalIpsul progetto -
Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadatasul progetto -
Per impostare i tag per la VM:
compute.instances.setTagssulla VM -
Per impostare le etichette per la VM:
compute.instances.setLabelssulla VM -
Per impostare un service account che la VM possa utilizzare:
compute.instances.setServiceAccountsulla VM -
Per creare un nuovo disco per la VM:
compute.disks.createsul progetto -
Per collegare un disco esistente in modalità di sola lettura o di lettura e scrittura:
compute.disks.usesul disco -
Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnlysul disco
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Creare VM con più tipi di macchine con la stessa preferenza
Se il tuo workload può essere eseguito su diversi tipi di macchine, puoi specificare un elenco di tutti i tipi di macchine compatibili in una singola selezione di istanze. I seguenti esempi mostrano come specificare più tipi di macchine con la stessa preferenza.
gcloud
Per creare più VM contemporaneamente con una singola selezione di istanze, utilizza il gcloud compute instances bulk create
comando con il
--instance-selection-machine-types flag.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection-machine-types=MACHINE_TYPE_1,MACHINE_TYPE_2
Sostituisci quanto segue:
COUNT: il numero di VM da creareNAME_PATTERN: il pattern del nome delle VMMACHINE_TYPE_1,MACHINE_TYPE_2: i tipi di macchine da utilizzare per le VMREGION: la regione in cui creare le VM
Esempio
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8
REST
Nell'API Compute Engine, invia una richiesta POST al
regionInstances.bulkInsert metodo.
Nel corpo della richiesta, includi instanceFlexibilityPolicy con una voce instanceSelections che elenca i tipi di macchine.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
]
}
}
}
}
Sostituisci quanto segue:
COUNT: il numero di VM da creareNAME_PATTERN: il pattern del nome delle VMMACHINE_TYPE_1,MACHINE_TYPE_2: i tipi di macchine da utilizzare per le VMIMAGE_PROJECT: il progetto che contiene l'immagineIMAGE: il nome dell'immagine o della famiglia di immagini da utilizzarePROJECT_ID: il tuo ID progettoREGION: la regione in cui creare le VM
Esempio
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
]
}
}
}
}
Creare VM con più tipi di macchine classificate in base alla preferenza
Se vuoi che Compute Engine scelga i tipi di macchine in un ordine specifico, puoi configurare più selezioni di istanze. Ogni selezione di istanze include un elenco di tipi di macchine e un ranking, ovvero un numero intero che definisce la preferenza per i tipi di macchine. Un ranking più basso indica una preferenza più alta. Compute Engine tenta di creare le VM utilizzando i tipi di macchine con una preferenza più alta (ranking più basso). Se questi tipi di macchine non sono disponibili, Compute Engine utilizza i tipi di macchine con una preferenza inferiore (ranking più alto).
I seguenti esempi mostrano come specificare più selezioni di istanze con ranking.
gcloud
Per creare più VM contemporaneamente con più selezioni di istanze, utilizza il gcloud compute instances bulk create
comando e
specifica più volte il flag --instance-selection.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection "name=INSTANCE_SELECTION_1,rank=0,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2" \
--instance-selection "name=INSTANCE_SELECTION_2,rank=1,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4"
Sostituisci quanto segue:
COUNT: il numero di VM da creareNAME_PATTERN: il pattern del nome delle VMINSTANCE_SELECTION_1: il nome della prima selezione di istanzeINSTANCE_SELECTION_2: il nome della seconda selezione di istanzeMACHINE_TYPE_1,MACHINE_TYPE_2: i tipi di macchine per la prima selezione di istanzeMACHINE_TYPE_3,MACHINE_TYPE_4: i tipi di macchine per la seconda selezione di istanzeREGION: la regione in cui creare le VM
Esempio
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection "name=most-preferred,rank=0,machine-type=c3-standard-16,machine-type=n2-standard-16, machine-type=c2-standard-16" \
--instance-selection "name=least-preferred,rank=1,machine-type=c3-standard-8,machine-type=n2-standard-8, machine-type=c2-standard-8"
REST
Nell'API Compute Engine, invia una richiesta POST al
regionInstances.bulkInsert metodo.
Nel corpo della richiesta, includi instanceFlexibilityPolicy e specifica più voci in instanceSelections, ognuna con un elenco di tipi di macchine e un rank.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"rank": 1
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3",
"MACHINE_TYPE_4"
],
"rank": 2
}
}
}
}
Sostituisci quanto segue:
COUNT: il numero di VM da creareNAME_PATTERN: il pattern del nome delle VMINSTANCE_SELECTION_1: il nome della prima selezione di istanzeINSTANCE_SELECTION_2: il nome della seconda selezione di istanzeMACHINE_TYPE_1,MACHINE_TYPE_2: i tipi di macchine per la prima selezione di istanzeMACHINE_TYPE_3,MACHINE_TYPE_4: i tipi di macchine per la seconda selezione di istanzeIMAGE_PROJECT: il progetto che contiene l'immagineIMAGE: il nome dell'immagine o della famiglia di immagini da utilizzarePROJECT_ID: il tuo ID progettoREGION: la regione in cui creare le VM
Esempio
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"most-preferred": {
"machineTypes": [
"c3-standard-16",
"c2-standard-16"
],
"rank": 1
},
"least-preferred": {
"machineTypes": [
"n2-standard-16",
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
],
"rank": 2
}
}
}
}
Specificare gli override dei dischi nelle selezioni di istanze
Per impostazione predefinita, le VM create da una richiesta collettiva utilizzano la configurazione del disco di instanceProperties. Tuttavia, puoi specificare le configurazioni del disco all'interno di una selezione di istanze. Se specifichi i dischi in una selezione di istanze, la configurazione del disco sostituisce la configurazione del disco in instanceProperties per le VM che utilizzano quella selezione di istanze.
Il seguente esempio mostra come specificare i dischi nelle selezioni di istanze.
REST
Nell'API Compute Engine, invia una richiesta POST al
regionInstances.bulkInsert metodo.
Nel corpo della richiesta, includi instanceFlexibilityPolicy e, per qualsiasi
instanceSelections voce, includi il campo disks per sostituire
instanceProperties.disks.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"disks": [
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "pd-ssd",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_1/global/images/IMAGE_1"
},
"boot": true
},
{
"type": "SCRATCH",
"initializeParams": {
"diskType": "local-ssd"
}
}
]
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3"
],
"disks": [
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_2/global/images/IMAGE_2"
},
"boot": true
},
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 128,
"sourceImage": "projects/IMAGE_PROJECT_3/global/images/IMAGE_1"
}
}
]
}
}
}
}
Sostituisci quanto segue:
COUNT: il numero di VM da creareNAME_PATTERN: il pattern del nome delle VMINSTANCE_SELECTION_1: il nome della prima selezione di istanzeINSTANCE_SELECTION_2: il nome della seconda selezione di istanzeMACHINE_TYPE_1,MACHINE_TYPE_2,MACHINE_TYPE_3: i tipi di macchine da utilizzare per le VMIMAGE_PROJECT: il progetto che contiene l'immagineIMAGE: il nome dell'immagine o della famiglia di immagini da utilizzarePROJECT_ID: il tuo ID progettoREGION: la regione in cui creare le VM