Créer un MIG utilisant le mode groupé

Ce document explique comment utiliser le mode groupé dans un MIG pour créer en même temps toutes les instances de machine virtuelle (VM) dont vous avez besoin. La création d'instances en une seule fois garantit que le MIG ne crée des instances que lorsque toutes les ressources nécessaires sont disponibles.

Pour en savoir plus sur le mode groupé, consultez À propos de la création groupée d'instances dans un MIG.

Créer un modèle d'instance

Le mode groupé dans les MIG n'est compatible qu'avec les modèles d'instance qui spécifient un modèle de provisionnement lié à une réservation ou à un démarrage flexible. Pour utiliser le mode groupé, créez un modèle d'instance à l'aide de l'un de ces modèles de provisionnement, comme décrit dans les sections suivantes. Pour en savoir plus sur les modèles de provisionnement, consultez Modèles de provisionnement des instances Compute Engine.

Utiliser le modèle de provisionnement lié à une réservation

Pour créer un modèle d'instance, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Cloud de Confiance , accédez à la page Modèles d'instances.

    Accéder à la page Modèles d'instances

  2. Cliquez sur Créer un modèle d'instance. La page Créer un modèle d'instance s'ouvre.

  3. Dans le champ Nom, saisissez un nom pour le modèle d'instance.

  4. Dans la section Emplacement, sélectionnez l'une des options suivantes :

    • Pour créer un modèle d'instance régional, sélectionnez Régional (recommandé), puis sélectionnez la région dans laquelle créer le modèle.

    • Pour créer un modèle d'instance global, sélectionnez Global.

  5. Dans la section Configuration de la machine, spécifiez un type de machine.

  6. Dans la section Modèle de provisionnement, procédez comme suit :

    1. Développez Paramètres avancés du modèle de provisionnement de la VM.

    2. Dans la liste À l'arrêt de la VM, sélectionnez Supprimer.

  7. Facultatif : pour modifier le type ou l'image de disque de démarrage par défaut, cliquez sur Modifier dans la section Disque de démarrage. Suivez ensuite les instructions pour modifier le disque de démarrage.

  8. Développez la section Options avancées et procédez comme suit :

    1. Développez la section Gestion.

    2. Dans la section Réservations, sélectionnez Choisir une réservation, puis cliquez sur Choisir une réservation. Dans le volet qui s'affiche, suivez les instructions pour sélectionner la réservation que vous souhaitez utiliser.

  9. Cliquez sur Créer.

gcloud

Pour créer un modèle d'instance, utilisez la commande instance-templates create avec les paramètres d'indicateur suivants :

  • L'option --instance-termination-action est définie sur DELETE.

  • L'option --maintenance-policy est définie sur TERMINATE.

  • L'option --provisioning-model est définie sur RESERVATION_BOUND.

  • L'option --reservation-affinity est définie sur specific.

  • L'indicateur --reservation

L'exemple de commande suivant crée un modèle d'instance régional. Si vous souhaitez créer un modèle d'instance global, utilisez la même commande sans le flag --instance-template-region.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-termination-action=DELETE \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --provisioning-model=RESERVATION_BOUND \
    --reservation-affinity=specific \
    --reservation=RESERVATION_URL

Remplacez les éléments suivants :

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à créer.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE_FAMILY : famille d'images. Spécifiez une famille d'images pour utiliser l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • REGION : région dans laquelle créer le modèle d'instance.

  • MACHINE_TYPE : type de machine spécifié dans la réservation que vous souhaitez utiliser.

  • RESERVATION_URL : URL de la réservation créée automatiquement pour une réservation future en mode Agenda que vous souhaitez utiliser. Spécifiez une des valeurs suivantes :

    • Si la réservation créée automatiquement existe dans votre projet : RESERVATION_NAME.

    • Si la réservation créée automatiquement existe dans un autre projet : projects/PROJECT_ID/reservations/RESERVATION_NAME.

REST

Pour créer un modèle d'instance, envoyez une requête POST à l'une des méthodes suivantes :

Dans le corps de la requête, incluez les champs suivants :

  • Le champ reservationAffinity.consumeReservationType est défini sur SPECIFIC_RESERVATION.

  • Le champ reservationAffinity.key est défini sur compute.googleapis.com/reservation-name.

  • Le champ reservationAffinity.values défini sur l'URL de la réservation créée automatiquement.

  • Le champ scheduling.instanceTerminationAction défini sur DELETE.

  • Le champ scheduling.onHostMaintenance défini sur TERMINATE.

  • Le champ scheduling.provisioningModel défini sur RESERVATION_BOUND.

Par exemple, pour créer un modèle d'instance régional, envoyez une requête comme suit :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "SPECIFIC_RESERVATION",
      "key": "compute.googleapis.com/reservation-name",
      "values": [
        "RESERVATION_URL"
      ]
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "RESERVATION_BOUND"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel créer le modèle d'instance.

  • REGION : région dans laquelle créer le modèle d'instance.

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à créer.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Une version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617.

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Spécifiez une famille d'images pour utiliser l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez Bonnes pratiques pour les familles d'images.

  • MACHINE_TYPE : type de machine spécifié dans la réservation que vous souhaitez consommer.

  • RESERVATION_URL : URL de la réservation créée automatiquement pour une réservation future en mode Agenda que vous souhaitez utiliser. Spécifiez une des valeurs suivantes :

    • Si la réservation créée automatiquement existe dans votre projet : RESERVATION_NAME

    • Si la réservation créée automatiquement existe dans un autre projet : projects/PROJECT_ID/reservations/RESERVATION_NAME

Pour en savoir plus sur la création d'un modèle d'instance, consultez la section Créer des modèles d'instances.

Utiliser le modèle de provisionnement "démarrage flexible"

Pour créer un modèle d'instance, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Cloud de Confiance , accédez à la page Modèles d'instances.

    Accéder à la page Modèles d'instances

  2. Cliquez sur Créer un modèle d'instance. La page Créer un modèle d'instance s'ouvre.

  3. Dans le champ Nom, saisissez un nom pour le modèle d'instance.

  4. Dans la section Emplacement, sélectionnez l'une des options suivantes :

    • Pour créer un modèle d'instance régional, sélectionnez Régional (recommandé), puis sélectionnez la région dans laquelle créer le modèle.

    • Pour créer un modèle d'instance global, sélectionnez Global.

  5. Dans la section Configuration de la machine, spécifiez un type de machine.

  6. Dans la section Modèle de provisionnement, procédez comme suit :

    1. Dans le champ Modèle de provisionnement de VM, sélectionnez Démarrage flexible.

    2. Développez Paramètres avancés du modèle de provisionnement de la VM.

    3. Cochez la case Définir une limite de temps pour la VM.

    4. Pour définir une durée d'exécution pour les VM créées à l'aide du modèle d'instance, saisissez le nombre d'heures dans le champ Saisissez le nombre d'heures. La valeur doit être comprise entre 36 secondes (0.01) et sept jours (168).

  7. Facultatif : pour modifier le type ou l'image de disque de démarrage par défaut, cliquez sur Modifier dans la section Disque de démarrage. Suivez ensuite les instructions pour modifier le disque de démarrage.

  8. Cliquez sur Créer.

gcloud

Pour créer un modèle d'instance, utilisez la commande instance-templates create avec les paramètres d'indicateur suivants :

  • L'option --instance-termination-action est définie sur DELETE.

  • L'option --maintenance-policy est définie sur TERMINATE.

  • L'indicateur --max-run-duration

  • L'option --provisioning-model est définie sur FLEX_START.

  • L'option --reservation-affinity est définie sur none.

L'exemple de commande suivant crée un modèle d'instance régional. Si vous souhaitez créer un modèle d'instance global, utilisez la même commande sans le flag --instance-template-region.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-template-region=REGION \
    --instance-termination-action=DELETE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --max-run-duration=RUN_DURATION \
    --provisioning-model=FLEX_START \
    --reservation-affinity=none

Remplacez les éléments suivants :

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à créer.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE_FAMILY : famille d'images. Spécifiez une famille d'images pour utiliser l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • REGION : région dans laquelle créer le modèle d'instance.

  • MACHINE_TYPE : type de machine à utiliser pour les VM à démarrage flexible. Si vous spécifiez un type de machine N1, vous devez inclure l'option --accelerator pour définir le nombre et le type de GPU à associer à vos VM.

  • RUN_DURATION : durée d'exécution des VM demandées. Vous devez formater la valeur en nombre de jours, d'heures, de minutes ou de secondes, suivis respectivement de d, h, m et s. Par exemple, spécifiez 30m pour 30 minutes ou 1d2h3m4s pour un jour, deux heures, trois minutes et quatre secondes. Cette valeur doit être comprise entre 10 minutes et 7 jours.

REST

Pour créer un modèle d'instance, envoyez une requête POST à l'une des méthodes suivantes :

Dans le corps de la requête, incluez les champs suivants :

  • Le champ reservationAffinity.consumeReservationType est défini sur NO_RESERVATION.

  • Le champ scheduling.instanceTerminationAction défini sur DELETE.

  • Le champ scheduling.maxRunDuration.

  • Le champ scheduling.onHostMaintenance défini sur TERMINATE.

  • Le champ scheduling.provisioningModel défini sur FLEX_START.

L'exemple de requête suivant crée un modèle d'instance régional :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel créer le modèle d'instance.

  • REGION : région dans laquelle créer le modèle d'instance.

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à créer.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Une version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617.

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Spécifiez une famille d'images pour utiliser l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez Bonnes pratiques pour les familles d'images.

  • MACHINE_TYPE : type de machine à utiliser pour les VM. Si vous spécifiez un type de machine N1, vous devez inclure le champ guestAccelerators pour définir le nombre et le type de GPU à associer à vos VM.

  • RUN_DURATION : durée, en secondes, pendant laquelle vous souhaitez que les VM demandées s'exécutent. La valeur doit être comprise entre 600, soit 600 secondes (10 minutes), et 604800, soit 604 800 secondes (7 jours).

Pour en savoir plus sur la création d'un modèle d'instance, consultez la section Créer des modèles d'instances.

Créer un MIG utilisant le mode groupé

Pour activer la création groupée d'instances dans un MIG, définissez le champ targetSizePolicy.mode sur BULK dans la configuration du MIG. Lorsque vous utilisez ce mode groupé, le MIG attend que toutes les ressources soient disponibles, puis crée les instances en une seule fois.

Console

  1. Accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur Créer un groupe d'instances. La page Créer un groupe d'instances s'ouvre.

  3. Dans le champ Nom, saisissez un nom pour le MIG.

  4. Avant de sélectionner un modèle d'instance, vous devez effectuer les opérations suivantes :

    1. Si vous utilisez le modèle de provisionnement Démarrage flexible, vous devez désactiver les réparations comme suit :
      1. Dans la section Cycle de vie des instances de VM, décochez la case Autoriser la réparation des VM dans une autre zone.
      2. Dans la liste Action par défaut en cas d'échec, sélectionnez Aucune action.
    2. Dans la section Emplacement, procédez comme suit :
      • Pour créer un MIG zonal, sélectionnez Zone unique.
      • Pour créer un MIG régional, sélectionnez Plusieurs zones. Dans Forme de distribution cible, sélectionnez Une des zones. Dans la boîte de dialogue qui s'affiche, sélectionnez Désactiver la redistribution des instances.
  5. Revenez au champ Modèle d'instance. Dans la liste Modèle d'instance, sélectionnez le modèle d'instance que vous avez créé dans la section précédente.

  6. Dans le champ Nombre d'instances, spécifiez le nombre d'instances que vous souhaitez créer simultanément.

  7. Cochez la case Obtenir toutes les VM à la fois à l'aide d'une règle de taille cible groupée.

  8. Cliquez sur Créer.

gcloud

Pour créer un MIG pour lequel la création groupée est activée, utilisez la commande gcloud compute instance-groups managed create avec l'option --target-size-policy-mode définie sur bulk.

Si vous utilisez le modèle de provisionnement à démarrage flexible, vous devez désactiver les réparations dans le MIG en incluant l'option --default-action-on-vm-failure=do-nothing dans les commandes suivantes.

  • Pour créer un MIG zonal, exécutez la commande suivante :
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --target-size-policy-mode=bulk \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE \
  • Pour créer un MIG régional, exécutez la commande suivante :
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --target-size-policy-mode=bulk \
    --template=INSTANCE_TEMPLATE_URL \
    --zones=LIST_OF_ZONES \

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du MIG.
  • SIZE : nombre d'instances dans le MIG.
  • INSTANCE_TEMPLATE_URL : URL du modèle d'instance que vous souhaitez utiliser pour créer des instances dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :
    • Pour un modèle d'instance régional : projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Pour un modèle d'instance global : INSTANCE_TEMPLATE_ID
  • ZONE : zone dans laquelle le MIG crée des instances.
  • LIST_OF_ZONES : liste des zones, séparées par une virgule, dans lesquelles le MIG régional crée des instances. Exemple : us-central1-a, us-central1-b, us-central1-c.

REST

Pour créer un MIG pour lequel la création groupée est activée, envoyez une requête POST comme suit. Dans le corps de la requête, définissez le champ targetSizePolicy.mode sur bulk.

Si vous utilisez le modèle de provisionnement à démarrage flexible, vous devez désactiver les réparations dans le MIG en incluant le champ "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} dans les requêtes suivantes.

  • Pour créer un MIG zonal, envoyez une requête POST à la méthode instanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    
  • Pour créer un MIG régional, envoyez une requête POST à la méthode regionInstanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • ZONE : zone dans laquelle le MIG crée des instances.
  • REGION : région dans laquelle le MIG crée des instances.
  • INSTANCE_GROUP_NAME : nom du MIG.
  • SIZE : nombre d'instances dans le MIG.
  • INSTANCE_TEMPLATE_URL : URL du modèle d'instance que vous souhaitez utiliser pour créer des instances dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :
    • Pour un modèle d'instance régional : projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Pour un modèle d'instance global : INSTANCE_TEMPLATE_ID

Ajouter ou supprimer des instances

Dans un MIG qui utilise le mode groupé, vous pouvez ajouter ou supprimer des instances en augmentant ou en diminuant manuellement la taille cible du MIG.

  • Ajouter des instances : lorsque vous augmentez la taille cible à partir de zéro, le MIG ajoute des instances de la même manière que lors de la création d'un MIG. Vous pouvez également créer des instances avec des noms spécifiques à l'aide de la méthode createInstances lorsqu'il n'y a aucune instance dans le MIG. Pour créer des instances avec des noms spécifiques, consultez Créer des instances avec des noms spécifiques dans les MIG.

  • Supprimer des instances : lorsque vous définissez la taille cible sur zéro, le MIG supprime toutes les instances existantes du groupe et annule toute opération de création en cours. Vous pouvez supprimer des instances en réduisant la taille cible à 0. Pour réduire la taille à une valeur non nulle, le MIG ne doit pas avoir d'opération d'instance groupée en cours (bulkInstanceOperation.inProgress doit être false).

Pour ajouter ou supprimer des instances d'un MIG en modifiant la taille cible, consultez Définir manuellement la taille d'un MIG.

Étapes suivantes