Crea più VM contemporaneamente con flessibilità dell'istanza

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 qualsiasi 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:

    Select the tab for how you plan to use the samples on this page:

    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.

    2. Set a default region and zone.

    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. 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.

    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.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.

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=test-bulk-# \
    --region=REGION \
    --count=COUNT \
    --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": "test-bulk-#",
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "c3-standard-8",
          "n2-standard-8",
          "c2-standard-8"
        ]
      }
    }
  }
}

Sostituisci quanto segue:

  • COUNT: il numero di VM da creare.
  • PROJECT_ID: il tuo ID progetto.
  • REGION: la regione in cui creare le VM.

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 beta compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=REGION \
    --count=COUNT \
    --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": "test-bulk-#",
  "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
      }
    }
  }
}

Sostituisci quanto segue:

  • COUNT: il numero di VM da creare.
  • PROJECT_ID: il tuo ID progetto.
  • REGION: la regione in cui creare le VM.

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": "test-bulk-#",
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "n2-standard-8",
          "c2-standard-8"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "pd-ssd",
              "diskSizeGb": 50,
              "sourceImage": "IMAGE_URL"
            },
            "boot": true
          },
          {
            "type": "SCRATCH",
            "initializeParams": {
              "diskType": "local-ssd"
            }
          }
        ]
      },
      "selection-2": {
        "machineTypes": [
          "c3-standard-8"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 50,
              "sourceImage": "IMAGE_URL"
            },
            "boot": true
          },
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 128,
              "sourceImage": "IMAGE_URL"
            }
          }
        ]
      }
    }
  }
}

Sostituisci quanto segue:

  • COUNT: il numero di VM da creare.
  • IMAGE_URL: l'URL dell'immagine disco di avvio.
  • PROJECT_ID: il tuo ID progetto.
  • REGION: la regione in cui creare le VM.