Crea più VM contemporaneamente con flessibilità dell'istanza

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

    1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

      gcloud init

      Se 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.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 specificare una subnet per la VM: compute.subnetworks.use sul progetto o sulla subnet scelta
  • 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 VPC: compute.subnetworks.useExternalIp sul progetto o sulla subnet scelta
  • Per assegnare una rete legacy alla VM: compute.networks.use sul progetto
  • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy: compute.networks.useExternalIp sul progetto
  • 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 che la VM possa 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 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.

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 creare
  • NAME_PATTERN: il pattern del nome delle VM
  • MACHINE_TYPE_1, MACHINE_TYPE_2: i tipi di macchine da utilizzare per le VM
  • REGION: 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 creare
  • NAME_PATTERN: il pattern del nome delle VM
  • MACHINE_TYPE_1, MACHINE_TYPE_2: i tipi di macchine da utilizzare per le VM
  • IMAGE_PROJECT: il progetto che contiene l'immagine
  • IMAGE: il nome dell'immagine o della famiglia di immagini da utilizzare
  • PROJECT_ID: il tuo ID progetto
  • REGION: 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 creare
  • NAME_PATTERN: il pattern del nome delle VM
  • INSTANCE_SELECTION_1: il nome della prima selezione di istanze
  • INSTANCE_SELECTION_2: il nome della seconda selezione di istanze
  • MACHINE_TYPE_1, MACHINE_TYPE_2: i tipi di macchine per la prima selezione di istanze
  • MACHINE_TYPE_3, MACHINE_TYPE_4: i tipi di macchine per la seconda selezione di istanze
  • REGION: 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 creare
  • NAME_PATTERN: il pattern del nome delle VM
  • INSTANCE_SELECTION_1: il nome della prima selezione di istanze
  • INSTANCE_SELECTION_2: il nome della seconda selezione di istanze
  • MACHINE_TYPE_1, MACHINE_TYPE_2: i tipi di macchine per la prima selezione di istanze
  • MACHINE_TYPE_3, MACHINE_TYPE_4: i tipi di macchine per la seconda selezione di istanze
  • IMAGE_PROJECT: il progetto che contiene l'immagine
  • IMAGE: il nome dell'immagine o della famiglia di immagini da utilizzare
  • PROJECT_ID: il tuo ID progetto
  • REGION: 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 creare
  • NAME_PATTERN: il pattern del nome delle VM
  • INSTANCE_SELECTION_1: il nome della prima selezione di istanze
  • INSTANCE_SELECTION_2: il nome della seconda selezione di istanze
  • MACHINE_TYPE_1, MACHINE_TYPE_2, MACHINE_TYPE_3: i tipi di macchine da utilizzare per le VM
  • IMAGE_PROJECT: il progetto che contiene l'immagine
  • IMAGE: il nome dell'immagine o della famiglia di immagini da utilizzare
  • PROJECT_ID: il tuo ID progetto
  • REGION: la regione in cui creare le VM