Créer des VM de manière groupée avec la flexibilité des instances

Ce document explique comment spécifier la flexibilité des instances lorsque vous créez des machines virtuelles (VM) de manière groupée. Lorsque vous effectuez cette spécification, vous indiquez une liste de types de machines adaptés aux VM. Compute Engine provisionne les VM en utilisant l'un des types de machines spécifiés en fonction de la capacité et de la disponibilité des quotas dans une région.

Pour en savoir plus sur la flexibilité des instances pour les VM créées de manière groupée, consultez À propos de la flexibilité des instances pour les VM créées de manière groupée.

Avant de commencer

  • Assurez-vous de disposer d'un quota suffisant et des autorisations requises pour les VM et les ressources associées que vous prévoyez de créer.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet de valider votre identité pour accéder aux services et aux API Google Cloud . Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :

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

    gcloud

    1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    2. Set a default region and zone.

    REST

    Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.

      Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

Rôles requis

Pour obtenir les autorisations nécessaires à la création de VM de manière groupée, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour créer des VM de manière groupée. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer des VM de manière groupée :

  • compute.instances.create sur le projet
  • Pour créer la VM à l'aide d'une image personnalisée : compute.images.useReadOnly sur l'image
  • Pour créer la VM à l'aide d'un instantané : compute.snapshots.useReadOnly sur l'instantané
  • Pour créer la VM à l'aide d'un modèle d'instance : compute.instanceTemplates.useReadOnly sur le modèle d'instance
  • Pour spécifier un sous-réseau pour la VM : compute.subnetworks.use sur le projet ou sur le sous-réseau choisi
  • Pour spécifier une adresse IP statique pour la VM : compute.addresses.use sur le projet
  • Pour attribuer une adresse IP externe à la VM en cas d'utilisation d'un réseau VPC : compute.subnetworks.useExternalIp sur le projet ou sur le sous-réseau choisi
  • Pour attribuer un ancien réseau à la VM : compute.networks.use sur le projet
  • Pour attribuer une adresse IP externe à la VM en cas d'utilisation d'un ancien réseau : compute.networks.useExternalIp sur le projet
  • Pour définir les métadonnées d'instance de VM pour la VM : compute.instances.setMetadata sur le projet
  • Pour définir des tags pour la VM : compute.instances.setTags sur la VM
  • Pour définir des étiquettes pour la VM : compute.instances.setLabels sur la VM
  • Pour définir un compte de service que doit utiliser la VM : compute.instances.setServiceAccount sur la VM
  • Pour créer un disque pour la VM : compute.disks.create sur le projet
  • Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture : compute.disks.use sur le disque
  • Pour associer un disque existant en mode lecture seule : compute.disks.useReadOnly sur le disque

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Créer des VM avec plusieurs types de machines de préférence égale

Si votre charge de travail peut fonctionner sur plusieurs types de machines différents, vous pouvez spécifier une liste de tous les types de machines compatibles dans une seule sélection d'instance. Les exemples suivants montrent comment spécifier plusieurs types de machines de préférence égale.

gcloud

Pour créer des VM de manière groupée avec une sélection d'instance unique, utilisez la commande gcloud compute instances bulk create avec l'option --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

Dans l'API Compute Engine, envoyez une requête POST à la méthode regionInstances.bulkInsert. Dans le corps de la requête, incluez instanceFlexibilityPolicy avec une entrée instanceSelections qui liste les types de machines.

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"
        ]
      }
    }
  }
}

Remplacez les éléments suivants :

  • COUNT : nombre de VM à créer.
  • PROJECT_ID : ID de votre projet.
  • REGION : région dans laquelle créer les VM.

Créer des VM avec plusieurs types de machines classés par préférence

Si vous souhaitez que Compute Engine choisisse les types de machines dans un ordre spécifique, vous pouvez configurer plusieurs sélections d'instances. Chaque sélection d'instance inclut une liste de types de machines et un classement, qui est un entier définissant la préférence pour les types de machines. Un classement plus bas indique une préférence plus élevée. Compute Engine tente de créer des VM à l'aide de types de machines ayant une préférence plus élevée (classement inférieur). Si ces types de machines ne sont pas disponibles, Compute Engine utilise des types de machines avec une préférence inférieure (rang supérieur).

Les exemples suivants montrent comment spécifier plusieurs sélections d'instances avec des rangs.

gcloud

Pour créer des VM de manière groupée avec plusieurs sélections d'instances, utilisez la commande gcloud compute instances bulk create et spécifiez l'option --instance-selection plusieurs fois.

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

Dans l'API Compute Engine, envoyez une requête POST à la méthode regionInstances.bulkInsert. Dans le corps de la requête, incluez instanceFlexibilityPolicy et spécifiez plusieurs entrées dans instanceSelections, chacune avec une liste de types de machines et 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
      }
    }
  }
}

Remplacez les éléments suivants :

  • COUNT : nombre de VM à créer.
  • PROJECT_ID : ID de votre projet.
  • REGION : région dans laquelle créer les VM.

Spécifier des remplacements de disque dans les sélections d'instances

Par défaut, les VM créées par une requête groupée utilisent la configuration de disque de instanceProperties. Toutefois, vous pouvez spécifier des configurations de disque dans une sélection d'instances. Si vous spécifiez des disques dans une sélection d'instances, cette configuration de disque remplace celle de instanceProperties pour les VM qui utilisent cette sélection d'instances.

L'exemple suivant montre comment spécifier des disques dans les sélections d'instances.

REST

Dans l'API Compute Engine, envoyez une requête POST à la méthode regionInstances.bulkInsert. Dans le corps de la requête, incluez instanceFlexibilityPolicy et, pour toute entrée instanceSelections, incluez le champ disks pour remplacer 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"
            }
          }
        ]
      }
    }
  }
}

Remplacez les éléments suivants :

  • COUNT : nombre de VM à créer.
  • IMAGE_URL : URL de l'image du disque de démarrage.
  • PROJECT_ID : ID de votre projet.
  • REGION : région dans laquelle créer les VM.