À propos de la flexibilité des instances pour les VM créées de manière groupée

Lorsque vous créez des machines virtuelles (VM) en masse dans une région à l'aide de Compute Engine, si votre application n'est pas limitée à un seul type de machine, vous pouvez augmenter le taux de réussite du provisionnement du nombre de VM requis en configurant la flexibilité des instances. La flexibilité des instances vous permet de spécifier un ou plusieurs types de machines adaptés à votre charge de travail. Compute Engine provisionne ensuite les VM à l'aide de l'un de ces types de machines, en fonction de la capacité et des quotas disponibles.

La flexibilité des instances vous aide à maximiser la disponibilité des ressources lors des pics de demande, à améliorer le rapport prix/performances et à adopter les derniers matériels en toute sécurité. Pour en savoir plus, consultez Optimiser le provisionnement du calcul.

Ce document décrit le fonctionnement de la flexibilité des instances pour les VM créées de manière groupée, y compris les remplacements des propriétés d'instance pour la configuration minimale de la plate-forme du processeur et les disques, ainsi que les limites. Pour en savoir plus sur la configuration de la flexibilité des instances, consultez Créer des VM de manière groupée avec la flexibilité des instances.

Utiliser la flexibilité des instances

Pour configurer la flexibilité des instances, vous devez lister les types de machines appropriés en définissant une ou plusieurs sélections d'instances dans votre requête d'insertion groupée régionale. Par exemple, dans une requête REST, vous incluez l'objet instanceFlexibilityPolicy, dans lequel vous définissez un ou plusieurs objets instanceSelections, chacun contenant une liste de types de machines.

Vous pouvez également spécifier des types de machines qui s'exécutent sur différentes plates-formes de processeur, qui ont des architectures différentes (telles que x86 et Arm) ou qui ont des exigences de disque différentes. Pour utiliser des types de machines avec des exigences matérielles différentes, utilisez une sélection d'instances pour remplacer les propriétés correspondantes des propriétés d'instance de la requête (instanceProperties). Pour en savoir plus, consultez Remplacements de propriétés d'instance dans les sélections d'instances.

Lorsque Compute Engine reçoit la requête, il valide d'abord les types de machines et leur compatibilité zonale, en excluant les entrées non valides. Si au moins une configuration valide existe, l'opération se poursuit.

Compute Engine tente ensuite de provisionner des VM en fonction du matériel, du quota et des réservations disponibles. Si vous configurez des niveaux pour vos sélections d'instances, les sélections ayant un niveau inférieur sont prioritaires. Dans chaque niveau, Compute Engine tient compte des réservations inutilisées et des conseils concernant les VM Spot pour sélectionner les types de machines ayant une faible probabilité de préemption.

Remplacements de propriétés d'instance dans les sélections d'instances

Lorsque vous sélectionnez une instance, vous pouvez spécifier des propriétés d'instance supplémentaires, telles que la plate-forme de processeur minimale (minCpuPlatform) et les disques (disks), pour remplacer ou ajouter des propriétés que vous définissez dans les propriétés d'instance de la requête (instanceProperties). Lorsque Compute Engine sélectionne un type de machine à partir d'une sélection d'instance pour créer des VM, il utilise les propriétés d'instance que vous spécifiez dans cette sélection. Si vous ne spécifiez aucun remplacement pour une sélection d'instances, Compute Engine utilise les propriétés correspondantes de instanceProperties pour les VM qu'il crée à partir de cette sélection.

Le remplacement des propriétés d'instance au niveau de la sélection d'instance vous offre plus de contrôle et de flexibilité lorsque vous utilisez différentes configurations matérielles dans une même requête d'insertion groupée.

Remplacements de la configuration minimale de la plate-forme de processeur

Vous pouvez spécifier une configuration minimale de plate-forme de processeur (minCpuPlatform) pour les VM que Compute Engine crée à partir des types de machines d'une sélection d'instances. Ce remplacement vous permet de combiner différents types de machines et d'appliquer sélectivement des configurations minimales de plate-forme de processeur. Chaque type de machine d'une sélection d'instances doit être compatible avec la configuration minimale de plate-forme de processeur effective, qu'elle soit spécifiée dans la sélection ou héritée de instanceProperties.

Vous pouvez également définir le champ minCpuPlatform sur AUTOMATIC. Ce paramètre remplace la valeur minCpuPlatform dans instanceProperties et permet à Compute Engine d'utiliser n'importe quelle plate-forme de processeur compatible pour les types de machines de la sélection d'instances.

Pour combiner des types de machines où une seule série est compatible avec une plate-forme de processeur spécifique, placez-les dans des sélections d'instances distinctes. Par exemple, les types de machines N4 sont compatibles avec la plate-forme Intel Emerald Rapids, tandis que les types de machines N2 avec moins de 96 vCPU sont compatibles avec Intel Ice Lake et Intel Cascade Lake. Pour combiner les types N4 et N2 dans une requête d'insertion groupée et exiger que N2 s'exécute sur Intel Ice Lake, configurez deux sélections d'instances comme suit :

  • Sélection N2 : définissez le champ minCpuPlatform sur Intel Ice Lake.
  • Sélection N4 : laissez le champ minCpuPlatform non défini ou définissez-le sur AUTOMATIC.

Vous pouvez définir une préférence égale pour les deux types de machines en attribuant le même classement aux deux sélections d'instances.

Remplacements de disques

Vous pouvez spécifier une configuration de disque personnalisée dans une sélection d'instance pour remplacer le disque de démarrage ou les disques supplémentaires spécifiés dans instanceProperties, ou pour associer des disques supplémentaires. Cette substitution vous permet de combiner des types de machines qui ont des architectures différentes ou qui sont compatibles avec différents types de disques. Il vous permet également de spécifier les images ou disques de démarrage requis pour chaque type de machine.

Par exemple, vous pouvez utiliser des sélections d'instances distinctes pour remplacer les disques en fonction de différents besoins :

  • Différentes architectures : vous pouvez combiner les types de machines C4 (architecture x86) et C4A (architecture Arm). Étant donné que les types de machines x86 et Arm nécessitent des images de démarrage différentes, vous pouvez remplacer le disque de démarrage pour spécifier une image compatible pour chaque architecture.
  • Différents types de disques : vous pouvez combiner des types de machines N2 et N4. Étant donné que N2 n'est compatible qu'avec Persistent Disk pour les disques de démarrage et que N4 n'est compatible qu'avec Google Cloud Hyperdisk, vous pouvez remplacer la configuration de disque pour spécifier un type de disque compatible pour chaque série de machines.

Dans les deux cas, vous pouvez définir une préférence égale pour les deux types de machines en attribuant le même classement aux sélections d'instances.

Si un disque d'une sélection d'instance possède un deviceName qui correspond à un disque dans instanceProperties, Compute Engine remplace la configuration de ce disque. Si deviceName ne correspond à aucun disque dans instanceProperties, Compute Engine l'associe en tant que disque supplémentaire. Vous devez vous assurer que la configuration de disque effective est compatible avec tous les types de machines de la sélection d'instances.

Le schéma suivant montre comment Compute Engine fusionne les configurations de disque à partir de instanceProperties et d'une sélection d'instance :

Diagramme montrant que les disques d'une sélection d'instances remplacent les disques dont les noms d'appareils correspondent dans les propriétés des instances et sont associés en tant que disques supplémentaires lorsque les noms d'appareils ne correspondent pas.

Pour savoir comment spécifier une configuration minimale de plate-forme de processeur et des remplacements de disque lorsque vous créez des VM de manière groupée, consultez Créer des VM avec plusieurs types de machines, une configuration minimale de plate-forme de processeur et des remplacements de disque.

Pour en savoir plus sur les limites lorsque vous utilisez des remplacements de sélection d'instance, consultez la section Limites de ce document.

Exemple : Remplacements de la plate-forme de processeur et du disque minimum

Vous pouvez utiliser des remplacements dans une règle de flexibilité des instances pour provisionner des VM dans des familles de machines nécessitant différentes plates-formes de processeur, images de démarrage ou types de disques.

Prenons l'exemple d'une requête d'insertion groupée avec la configuration instanceProperties de base suivante qui définit un disque de démarrage pd-balanced par défaut :

"instanceProperties": {
  "disks": [
    {
      "autoDelete": true,
      "deviceName": "boot-disk",
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
        "diskSizeGb": "10",
        "diskType": "pd-balanced"
      }
    }
  ],
  "networkInterfaces": [{}]
}

La configuration instanceFlexibilityPolicy suivante dans la même requête remplace la configuration de base instanceProperties en spécifiant des configurations minimales de plate-forme de processeur et de disque pour trois sélections d'instances :

"instanceFlexibilityPolicy": {
  "instanceSelections": {
    "first-preference": {
      "rank": 1,
      "machineTypes": ["n4-standard-4"],
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "10",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "second-preference": {
      "rank": 2,
      "machineTypes": ["c4a-standard-4"],
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64",
            "diskSizeGb": "10",
            "diskType": "hyperdisk-balanced"
          }
        },
        {
          "autoDelete": true,
          "deviceName": "data-disk",
          "boot": false,
          "initializeParams": {
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "third-preference": {
      "rank": 3,
      "machineTypes": ["n2-standard-4"],
      "minCpuPlatform": "Intel Ice Lake",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "10",
            "diskType": "pd-ssd"
          }
        }
      ]
    }
  }
}

Dans cet exemple, Compute Engine applique les remplacements suivants en fonction de la sélection d'instance qu'il utilise pour créer des VM :

  • Première préférence (first-preference) : pour les VM n4-standard-4, la sélection remplace boot-disk afin d'utiliser un disque hyperdisk-balanced au lieu du disque pd-balanced de base.
  • Deuxième préférence (second-preference) : pour les VM c4a-standard-4 (Arm), la sélection remplace boot-disk pour utiliser une image de démarrage compatible Arm (debian-12-arm64) sur un disque hyperdisk-balanced et associe un disque hyperdisk-balanced supplémentaire de 100 Go nommé data-disk.
  • Troisième préférence (third-preference) : pour les VM n2-standard-4, la sélection définit minCpuPlatform sur Intel Ice Lake et remplace boot-disk pour utiliser un disque pd-ssd.

Sélection de zones lorsqu'une forme de distribution cible est définie

Lorsque vous utilisez la flexibilité des instances avec une requête bulkInsert régionale, vous pouvez spécifier une forme de distribution cible pour contrôler la façon dont les VM sont réparties entre les zones de la région. Compute Engine sélectionne les zones pour provisionner les VM en fonction de cette forme, comme suit :

  • ANY_SINGLE_ZONE : Compute Engine sélectionne une seule zone disposant de la plus grande capacité pour les types de machines ayant une préférence plus élevée.
  • BALANCED : Compute Engine distribue les VM de la manière la plus uniforme possible dans les zones disposant de ressources disponibles. Dans chaque zone, Compute Engine donne la priorité aux types de machines ayant une préférence plus élevée.
  • ANY : Compute Engine sélectionne les zones disposant de ressources disponibles. Si des niveaux sont configurés, Compute Engine donne la priorité aux zones pour provisionner des VM avec des types de machines ayant une préférence plus élevée.

Pour en savoir plus, consultez Créer des VM de manière groupée dans une région.

Provisionnement minimal de VM et flexibilité des instances

Si vous définissez une valeur pour le nombre minimal requis de VM (minCount) dans la requête bulkInsert, l'API tente de créer au moins ce nombre de VM. Si Compute Engine ne peut pas provisionner le nombre minimal requis de VM (minCount), l'opération entière échoue et Compute Engine ne crée aucune VM. Lorsque vous utilisez minCount avec la flexibilité des instances, Compute Engine donne la priorité au provisionnement des VM en fonction de la disponibilité plutôt que du classement, comme suit :

  • Compute Engine donne la priorité au provisionnement du nombre maximal de VM (jusqu'à count), même si cela implique d'utiliser des machines moins intéressantes. Par exemple, si votre requête spécifie un minimum d'une VM requise (minCount=1) et un maximum de 10 VM (count=10), et si Compute Engine a la capacité de provisionner une VM à priorité plus élevée ou six VM à priorité plus faible, il provisionne les six VM à priorité plus faible.
  • Si Compute Engine peut provisionner le même nombre maximal de VM (jusqu'à count) en utilisant différentes sélections d'instances, il donne la priorité à la sélection avec la préférence la plus élevée. Par exemple, si votre requête spécifie un minimum d'une VM requise (minCount=1) et un maximum de 10 VM (count=10), et si Compute Engine peut provisionner six VM en utilisant une sélection d'instances de préférence supérieure ou inférieure, Compute Engine provisionne les six VM à partir de la sélection de préférence supérieure.

Pour en savoir plus, consultez la propriété minCount dans bulkInsert.

Scénarios de validation et d'erreur d'insertion groupée

Compute Engine effectue une validation initiale des types de machines et de leur compatibilité zonale, en excluant toute entrée non valide. Si au moins une configuration valide subsiste après cette vérification initiale, Compute Engine procède à la création de la VM.

Toutefois, certaines validations de votre configuration ne peuvent avoir lieu qu'une fois que Compute Engine a sélectionné les zones et les types de machines à utiliser pour le provisionnement, en fonction de votre stratégie de flexibilité des instances et de la capacité disponible. Si, lors de cette étape de validation ultérieure, la combinaison spécifique de type de machine et de zone choisie pour le provisionnement s'avère non valide, l'ensemble de la requête d'insertion groupée échoue et des erreurs de validation s'affichent. Cet échec peut se produire même si d'autres configurations dans instanceFlexibilityPolicy étaient initialement valides.

Limites

Les limites suivantes s'appliquent lorsque vous utilisez la flexibilité des instances pour la création groupée de VM :

  • Vous ne pouvez spécifier la flexibilité des instances que pour les requêtes bulkInsert régionales. Vous ne pouvez pas l'utiliser avec les requêtes zonales.
  • La flexibilité des instances n'est pas compatible avec les VM à démarrage flexible ni les réservations futures.
  • Vous ne pouvez pas utiliser la flexibilité des instances avec les fonctionnalités AI Hypercomputer, ni avec les GPU A3 Ultra, A4 et plus récents.
  • Vous pouvez spécifier jusqu'à 10 types de machines différents pour un maximum de 10 sélections d'instances différentes.
  • Lorsque vous remplacez minCpuPlatform ou disks dans une sélection d'instances, les limites suivantes s'appliquent également :

Étapes suivantes