Questo documento descrive come specificare la flessibilità delle istanze quando crei macchine virtuali (VM) in blocco. 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, vedi Informazioni sulla flessibilità delle istanze per le VM create in blocco.
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 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 a come intendi utilizzare i campioni 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 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.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.
Crea VM con più tipi di macchine con la stessa preferenza
Se il tuo workload può funzionare su diversi tipi di macchine, puoi specificare un elenco di tutti i tipi di macchine compatibili in una singola selezione di istanze. Gli esempi seguenti mostrano come specificare più tipi di macchine con la stessa preferenza.
gcloud
Per creare più VM in blocco con una singola selezione di istanze, utilizza il comando gcloud compute instances bulk create con il flag --instance-selection-machine-types.
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 macchina 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 metodo regionInstances.bulkInsert.
Nel corpo della richiesta, includi instanceFlexibilityPolicy con una voce
instanceSelections che elenca i tipi di macchina.
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 macchina 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"
]
}
}
}
}
Crea VM con più tipi di macchine classificate in base alle preferenze
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ù elevata. Compute Engine tenta di creare VM utilizzando tipi di macchine con una preferenza più alta (classifica inferiore). Se questi tipi di macchine non sono disponibili, Compute Engine utilizza tipi di macchine con una preferenza inferiore (ranking più alto).
Gli esempi seguenti mostrano come specificare più selezioni di istanze con ranghi.
gcloud
Per creare più VM in blocco con più selezioni di istanze, utilizza il comando gcloud compute instances bulk create e specifica il flag --instance-selection più volte.
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 macchina per la prima selezione di istanzeMACHINE_TYPE_3,MACHINE_TYPE_4: i tipi di macchina 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 metodo regionInstances.bulkInsert.
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 di denominazione per le 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 macchina per la prima selezione di istanzeMACHINE_TYPE_3,MACHINE_TYPE_4: i tipi di macchina 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 dei dischi esegue l'override della configurazione dei dischi in instanceProperties per le VM che utilizzano quella selezione di istanze.
L'esempio seguente mostra come specificare i dischi nelle selezioni delle istanze.
REST
Nell'API Compute Engine, invia una richiesta POST al metodo regionInstances.bulkInsert.
Nel corpo della richiesta, includi instanceFlexibilityPolicy e, per qualsiasi voce instanceSelections, includi il campo disks per ignorare 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 di denominazione per le 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 macchina 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