Créer des groupes d'instances gérés

Un groupe d'instances géré (MIG) contient des instances identiques basées sur un modèle d'instance. Les groupes d'instances gérés maintiennent la haute disponibilité de vos applications en s'assurant de manière proactive que vos instances restent disponibles, c'est-à-dire à l'état RUNNING.

Ils sont compatibles avec l'autoréparation, l'équilibrage de charge, l'autoscaling et la mise à jour automatique.

Vous pouvez créer des MIG zonaux (zone unique) et des MIG régionaux (multizone). Les MIG régionaux offrent une plus grande disponibilité en répartissant des instances dans plusieurs zones d'une même région.

Pour en savoir plus sur les groupes d'instances, consultez la présentation des groupes d'instances.

Avant de commencer

Limites

  • Chaque groupe d'instances géré peut contenir jusqu'à 1 000 instances de machine virtuelle (VM).
  • Lors de la mise à jour d'un groupe d'instances géré, vous ne pouvez pas spécifier plus de 1 000 instances dans une même requête.

Utiliser des groupes d'instances gérés pour les applications sans état

Les groupes d'instances gérés sont compatibles avec les applications sans état, dont l'exécution ne dépend pas de l'état spécifique des instances de VM sous-jacentes. Cela autorise des fonctionnalités telles que l'autoscaling et l'autoréparation, dans lesquelles le groupe d'instances géré peut supprimer et recréer automatiquement des instances. En outre, si une instance qui n'est pas configurée pour migrer à chaud est supprimée d'un groupe d'instances géré à la suite d'une action utilisateur, dans le cadre d'une autoréparation ou bien en raison d'une maintenance de l'infrastructure, le groupe recrée automatiquement l'instance avec un nouveau disque persistant racine.

En raison de la nature sans état des groupes d'instances gérés, vous devez concevoir ou adapter votre application afin qu'elle ne dépende pas de propriétés d'instance spécifiques qui ne sont pas persistantes, telles qu'une adresse IP ou des données en mémoire. De même, les disques de démarrage persistants sont supprimés par défaut lorsque l'instance de VM correspondante est supprimée. Évitez donc de dépendre de disques de démarrage pour conserver vos données persistantes dans un groupe d'instances géré.

Pour conserver vos données, nous vous recommandons de mettre régulièrement à jour les images de l'OS, d'utiliser des scripts de démarrage et de sauvegarder vos données dans un autre emplacement centralisé, tel que Cloud Storage.

Vous pouvez spécifier une image de conteneur ou une image personnalisée, ainsi que les scripts de démarrage pertinents dans vos modèles d'instance. Ainsi, lorsqu'une instance est recréée, elle dispose des applications nécessaires et d'un accès aux données requises. Pour lire d'autres recommandations sur la création de modèles d'instances, consultez la page Modèles d'instances déterministes.

Si vous voulez conserver les disques associés à vos groupes d'instances gérés, désactivez l'option disks.autoDelete pour éviter la suppression des disques persistants. Lorsque l'instance qui utilise le disque est supprimée (dans le cadre d'un scaling du groupe à la baisse ou de la suppression manuelle de l'instance, par exemple), tout nettoyage des disques restants doit être effectué manuellement.

Créer un groupe d'instances géré

Avant de créer un groupe d'instances géré, vous devez créer un modèle d'instance qui spécifie l'image du système d'exploitation ou l'image du conteneur, ainsi que les paramètres de chaque instance du groupe.

Après avoir créé le modèle, créez le groupe d'instances géré via Google Cloud Console, l'outil gcloud compute ou l'API.

Console

  1. Dans Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Cliquez sur Créer un groupe d'instances.
  3. Saisissez un nom pour le groupe d'instances géré, puis sélectionnez la zone dans laquelle vous souhaitez le créer.
  4. Dans la section Type de groupe, sélectionnez Groupe d'instances géré.
  5. Dans la section Modèle d'instance, sélectionnez un modèle d'instance. Si aucun modèle n'est disponible, créez-en un.
  6. Spécifiez le nombre d'instances que vous souhaitez créer au sein du groupe. Vous pouvez également activer l'autoscaling pour que le groupe puisse ajouter ou supprimer automatiquement des instances en fonction de l'utilisation, ou activer l'autoréparation pour pouvoir vérifier l'état des instances du groupe.
  7. Cliquez sur Créer pour créer le groupe.

gcloud

Créez un groupe d'instances à l'aide de la sous-commande instance-groups managed create :

gcloud compute instance-groups managed create instance-group-name \
    --base-instance-name base-name \
    --size size \
    --template instance-template \
    --zone zone

Remplacez les éléments suivants :

  • instance-group-name : Nom de ce groupe d'instances.
  • base-name : Nom à utiliser pour les instances créées au sein du groupe. Dans la mesure où les instances sont identiques, une chaîne aléatoire est automatiquement attribuée à leur nom. Cette chaîne aléatoire est précédée du nom de base. Par exemple, si des instances portent le nom de base example, elles peuvent s'appeler example-yahs et example-qtyz. Si vous souhaitez attribuer un nom spécifique, consultez la section Créer des instances avec des noms spécifiques dans les MIG.
  • size : Taille du groupe d'instances.
  • instance-template : Nom du modèle d'instance à utiliser pour ce groupe.
  • zone : Une des zones disponibles pour Compute Engine.

    Par exemple, la commande suivante crée un groupe d'instances nommé example-group, dont le nom d'instance de base est test. Le groupe contient trois instances :

    gcloud compute instance-groups managed create example-group \
      --base-instance-name test \
      --size 3 \
      --template an-instance-template

API

Dans l'API, envoyez une requête POST à la méthode instanceGroupManagers.insert ou regionInstanceGroupManagers.insert. Dans le corps de la requête, incluez le nom du groupe, sa taille, le nom de base pour les instances figurant dans le groupe et l'URL du modèle d'instance.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

{
  "baseInstanceName": "base-name",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/instance-template"
    }
  ],
  "name": "instance-group-name",
  "targetSize": size
}

Remplacez les éléments suivants :

  • project-id : ID du projet pour la requête.
  • zone : Zone de la requête.
  • instance-group-name : Nom de ce groupe d'instances.
  • base-name : Nom à utiliser pour les instances créées au sein du groupe. Dans la mesure où les instances sont identiques, une chaîne aléatoire est automatiquement attribuée à leur nom. Cette chaîne aléatoire est précédée du nom de base. Par exemple, si des instances portent le nom de base example, elles peuvent s'appeler example-yahs et example-qtyz.
  • size : Taille du groupe d'instances.
  • instance-template : Modèle d'instance à utiliser pour ce groupe.

Selon votre configuration et votre utilisation du MIG, différentes règles et actions peuvent affecter les instances du groupe. Pour répertorier les instances gérées opérationnelles, consultez la section Vérifier l'état des instances gérées.

Modifier le modèle d'instance d'un groupe d'instances géré

Vous pouvez modifier le modèle d'instance d'un groupe géré sans affecter les instances existantes. Le groupe utilise alors le nouveau modèle lorsque vous exécutez une requête d'ajout ou de recréation d'instances, mais ce modèle ne met pas automatiquement à jour les instances existantes du groupe. Cela vous permet de contrôler exactement quelles instances sont mises à jour, mais en contrepartie, votre groupe contiendra des instances différentes.

Après avoir créé un modèle d'instance, modifiez le modèle d'un groupe d'instances existant.

Console

  1. Dans Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe dont vous souhaitez modifier le modèle d'instance.
  3. Cliquez sur Modifier le groupe pour modifier le groupe d'instances géré.
  4. Dans la section Modèle d'instance, sélectionnez le nouveau modèle d'instance que vous souhaitez utiliser pour le groupe.
  5. Cliquez sur Enregistrer pour appliquer le nouveau modèle.

gcloud

Pour mettre à jour un modèle à l'aide de la méthode set-instance-template, transmettez le nouveau modèle à la sous-commande instance-groups managed set-instance-template :

gcloud compute instance-groups managed set-instance-template instance-group-name \
    --template instance-template \
    --zone zone

API

Envoyez une requête au service instanceGroupManagers en indiquant le nom du groupe d'instances géré cible. Spécifiez l'URL du nouveau modèle d'instance dans le corps de la requête :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/setInstanceTemplate

{
 "instanceTemplate": "global/instanceTemplates/instance-template
}

Une fois le modèle d'instance modifié, recréez des instances individuelles ou mettez à jour toutes les instances du groupe en déployant une mise à jour progressive.

Redimensionner un groupe d'instances géré

Pour ajouter ou supprimer des instances dans un MIG, vous pouvez :

Redimensionner automatiquement un groupe d'instances géré

Vous pouvez configurer des groupes d'instances gérés pour qu'ils ajoutent ou suppriment automatiquement des instances en fonction de leurs charges de travail. Cela permet à vos applications de gérer de façon optimale les hausses de trafic, et vous aide à réduire vos coûts lorsque les besoins en ressources de calcul sont moins importants. Pour découvrir comment mettre à l'échelle vos groupes d'instances gérés, consultez la page Procéder à l'autoscaling de groupes d'instances.

Définir manuellement la taille d'un groupe d'instances géré

Si un groupe d'instances géré n'est pas déjà configuré pour le scaling automatique, vous pouvez le redimensionner manuellement afin de modifier le nombre d'instances qui le composent. Lorsque vous augmentez sa taille, le groupe d'instances géré exploite le modèle d'instance actuel pour ajouter de nouvelles instances. Si, au contraire, vous réduisez sa taille, le groupe d'instances géré supprime des instances du groupe. Le groupe supprime d'abord les instances dont le champ currentAction correspond à DELETING, CREATING ou RECREATING avant de supprimer les instances en cours d'exécution sans action planifiée.

Si le groupe fait partie d'un service de backend sur lequel le drainage de connexion est activé, le retrait ou la suppression de l'instance de VM peut prendre jusqu'à 60 secondes après la fin de la période de drainage.

Vous pouvez redimensionner un groupe d'instances géré à l'aide de Google Cloud Console, de l'outil gcloud compute ou de l'API.

Console

  1. Dans Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe dont vous souhaitez modifier la taille.
  3. Cliquez sur Modifier le groupe pour modifier le groupe d'instances géré.
  4. Dans la section Nombre d'instances, spécifiez le nombre d'instances que vous souhaitez inclure au sein du groupe. Si l'autoscaling est activé, le groupe ajoute ou supprime automatiquement des instances, si nécessaire. Vous pouvez toutefois modifier les champs Nombre minimal d'instances et Nombre maximal d'instances pour ajuster indirectement la taille du groupe par le biais d'un autoscaler.
  5. Cliquez sur Enregistrer pour appliquer le nouveau modèle.

gcloud

Utilisez la sous-commande resize.

gcloud compute instance-groups managed resize instance-group-name \
    --size new-size \
    --zone zone

API

Envoyez une requête à la méthode resize. Spécifiez la nouvelle taille d'instance en tant que paramètre.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/resize?size=new-size

Si le groupe d'instances est un groupe d'instances géré régional, remplacez zones/zone par regions/region :

Une fois votre requête de redimensionnement envoyée, les instances démarrent ou s'arrêtent dès que le système est en mesure de les provisionner ou de les supprimer. Ce processus peut prendre un certain temps selon le nombre d'instances au sein du groupe. Vérifiez l'état des instances de votre groupe d'instances géré.

Désactiver le mode de répétition des tentatives de création lors du redimensionnement

Par défaut, lorsque la création initiale d'une instance de VM échoue, le groupe d'instances géré réessaie continuellement de créer chaque instance jusqu'à la réussite de l'opération. Toutefois, si vous ne souhaitez pas effectuer automatiquement de nouvelles tentatives de création, vous pouvez désactiver le mode de répétition des tentatives de création en ajoutant l'indicateur --nocreation-retries lors du redimensionnement du groupe d'instances. Lorsque ce mode est activé, le groupe d'instances géré n'essaie de créer toutes les instances qu'une seule fois. Si une erreur se produit lors de la création, le groupe d'instances géré ne crée pas l'instance en question et réduit la taille cible du groupe d'instances géré à la place.

Ce mode ne s'applique que lors de la première tentative de création d'une instance. Si la création réussit lorsque ce mode est activé, l'instance se comporte de la même manière que toutes les autres instances créées à l'aide d'une requête de redimensionnement standard. Plus précisément, si une instance en cours d'exécution cesse de fonctionner de manière inattendue et doit être recréée par la suite, ce mode n'affecte pas le comportement de la recréation dans ce scénario.

Il peut être particulièrement utile de désactiver le mode de répétition des tentatives de création lorsque des systèmes créent automatiquement des groupes d'instances qui n'ont pas besoin de disposer d'un nombre exact d'instances. Vous préférerez peut-être choisir rapidement une taille fixe pour votre groupe géré et vous montrer plus flexible quant au nombre d'instances, plutôt que d'attendre indéfiniment la fin de la création de toutes les instances demandées (qui pourrait être retardée de façon temporaire ou permanente en raison d'erreurs de quotas ou d'autres problèmes).

Pour redimensionner un groupe d'instances géré avec le mode de répétition des tentatives de création désactivé, utilisez l'outil gcloud compute ou l'API.

gcloud

Utilisez la sous-commande resize avec l'indicateur --no-creation-retries :

gcloud beta compute instance-groups managed resize instance-group-name --size new-size \
    --nocreation-retries \
    --zone zone

API

Envoyez une requête à la méthode resizeAdvanced. Spécifiez la nouvelle taille d'instance et le champ noCreationRetries dans le corps de la requête.

POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/resizeAdvanced

{
 "targetSize": size
 "noCreationRetries": true
}

Si le groupe d'instances est un groupe d'instances géré régional, remplacez zones/zone par regions/region :

Vous pouvez répertorier les instances en cours de création et vérifier leur mode de création à l'aide de la méthode listManagedInstances. Le champ currentAction des instances en cours de création pour lesquelles le mode de répétition des tentatives de création est désactivé possède la valeur CREATING_WITHOUT_RETRIES.

Créer des instances avec des noms spécifiques dans les MIG (version bêta)

Si votre système requiert l'utilisation de noms spécifiques, vous pouvez créer des instances portant ces noms. Les noms que vous attribuez à ces instances gérées sont conservés si l'instance est recréée. Consultez la section Ajouter des instances portant des noms spécifiques.

Supprimer des instances spécifiques d'un groupe

Vous pouvez supprimer des instances individuelles d'un groupe d'instances géré. Cette opération réduit la valeur targetSize spécifiée pour le groupe d'instances et retire les instances des pools cibles auxquels elles appartiennent.

La suppression des instances d'un groupe géré n'entraîne aucune modification des paramètres d'autoscaler définis. Si vous supprimez des instances d'un groupe géré, l'autoscaler est susceptible de détecter une augmentation de la charge de travail sur les autres instances du groupe, et de lui réattribuer sa taille précédente. Pour éviter cela, désactivez ou supprimez l'autoscaler avant d'essayer de supprimer les instances.

Si le groupe fait partie d'un service de backend sur lequel le drainage de connexion est activé, le retrait ou la suppression de l'instance de VM peut prendre jusqu'à 60 secondes après la fin de la période de drainage.

Supprimez des instances d'un groupe d'instances géré à l'aide de Google Cloud Console, de l'outil gcloud compute ou de l'API.

Console

  1. Dans Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe qui contient les instances individuelles que vous souhaitez supprimer. La page qui s'ouvre affiche les propriétés du groupe, ainsi que la liste des instances qui en font partie.
  3. Dans la liste des instances, sélectionnez une ou plusieurs instances à supprimer.
  4. Cliquez sur Supprimer. Les instances sélectionnées sont supprimées.

gcloud

Utilisez la sous-commande instance-groups managed delete-instances.

gcloud compute instance-groups managed delete-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    --zone zone

API

Envoyez une requête à la méthode instanceGroupManagers.deleteInstances. Dans le corps de la requête, spécifiez les URL de l'instance ou des instances que vous souhaitez supprimer.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/deleteInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

Si le groupe d'instances est un groupe d'instances géré régional, remplacez zones/zone par regions/region :

Une fois votre requête de suppression d'instances envoyée, les instances s'arrêtent dès que le système est en mesure de les supprimer. Ce processus peut prendre un certain temps selon le nombre d'instances que vous supprimez du groupe. Vérifiez l'état des instances de votre groupe d'instances géré.

Abandonner des instances d'un groupe

Vous pouvez séparer une instance d'un groupe d'instances géré pour déboguer plus facilement des problèmes liés aux instances individuelles sans affecter le groupe dans son ensemble. Lorsque vous abandonnez une instance, celle-ci est également retirée des équilibreurs de charge attribués au groupe d'instances géré. Les pools cibles qui ont été attribués manuellement à des instances individuelles spécifiques ne sont pas supprimés.

L'abandon d'instances réduit la taille targetSize spécifiée pour le groupe d'instances, mais n'entraîne aucune modification des paramètres d'autoscaler définis. Les groupes d'instances gérés dotés d'un autoscaler continuent d'ajouter ou de retirer automatiquement des instances, si nécessaire.

Si le groupe fait partie d'un service de backend sur lequel le drainage de connexion est activé, le retrait ou la suppression de l'instance de VM peut prendre jusqu'à 60 secondes après la fin de la période de drainage.

Abandonnez des instances d'un groupe d'instances géré à l'aide de Google Cloud Console, de l'outil gcloud compute ou de l'API.

Console

  1. Dans Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe qui contient les instances que vous souhaitez retirer. La page qui s'ouvre affiche les propriétés du groupe ainsi que la liste des instances qui en font partie.
  3. Dans la liste des instances, sélectionnez une ou plusieurs instances à retirer du groupe.
  4. Cliquez sur Retirer du groupe. Les instances sélectionnées ne font plus partie du groupe, mais continuent de s'exécuter en dehors de celui-ci.

gcloud

Pour retirer une instance du groupe d'instances sans supprimer l'instance, exécutez la sous-commande abandon-instances.

gcloud compute instance-groups managed abandon-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    --zone zone

API

Envoyez une requête à la méthode instanceGroupManagers.abandonInstances. Dans le corps de la requête, spécifiez les URL des instances que vous souhaitez abandonner.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/abandonInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

Si le groupe d'instances est un groupe d'instances géré régional, remplacez zones/zone par regions/region :

Une fois votre requête d'abandon d'instances envoyée, le groupe retire les instances dès que possible. Vérifiez l'état des instances de votre groupe d'instances géré.

Recréer des instances au sein du groupe

Le processus de recréation d'instances supprime les instances spécifiées et en crée d'autres à partir du modèle d'instance attribué au groupe géré.

Utilisez cette méthode pour mettre à jour les instances sélectionnées afin qu'elles utilisent le dernier modèle d'instance. Si vous devez recréer toutes les instances d'un groupe d'instances géré, lancez plutôt une mise à jour progressive.

Si le groupe fait partie d'un service de backend sur lequel le drainage de connexion est activé, le retrait ou la suppression de l'instance de VM peut prendre jusqu'à 60 secondes après la fin de la période de drainage.

Recréez les instances sélectionnées au sein du groupe d'instances géré à l'aide de l'outil gcloud compute ou de l'API.

gcloud

Exécutez la sous-commande instance-groups managed recreate-instances.

gcloud compute instance-groups managed recreate-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    --zone zone

API

Envoyez une requête à la méthode instanceGroupManagers.recreateInstances. Dans le corps de la requête, spécifiez les URL des instances que vous souhaitez recréer.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/recreateInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

Si le groupe d'instances est un groupe d'instances géré régional, remplacez zones/zone par regions/region :

Une fois votre requête de recréation d'instances envoyée, les nouvelles instances démarrent dès que le système est en mesure de les provisionner. Ce processus peut prendre un certain temps selon le nombre d'instances que vous recréez. Vérifiez l'état des instances de votre groupe d'instances géré.

Supprimer un groupe d'instances géré

Lorsque vous supprimez un groupe d'instances géré, toutes les instances du groupe sont supprimées. Si vous devez conserver des instances appartenant au groupe concerné, abandonnez-les d'abord afin de les retirer du groupe. Supprimez ensuite le groupe d'instances géré.

Lorsque vous supprimez un groupe d'instances géré et ses instances à l'aide de Google Cloud Console ou de l'outil gcloud compute, tous les autoscalers associés sont automatiquement supprimés. Néanmoins, si vous utilisez l'API, vous devez d'abord envoyer des requêtes distinctes pour supprimer tous les autoscalers associés à autoscalers.delete ou regionAutoscalers.delete.

Console

  1. Dans Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Dans la liste, sélectionnez un ou plusieurs groupes à supprimer.
  3. Cliquez sur Supprimer pour supprimer le groupe et toutes les instances qui le composent.

gcloud

Exécutez la sous-commande instance-groups managed delete.

gcloud compute instance-groups managed delete instance-group-name \
    --zone zone

API

Envoyez une requête à la méthode instanceGroupManagers.delete.

DELETE https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

Si le groupe d'instances est un groupe d'instances géré régional, remplacez zones/zone par regions/region :

Créer des groupes d'instances préemptives

Les groupes d'instances gérés vous permettent de créer rapidement plusieurs instances préemptives, ce qui vous aide à réduire les coûts liés aux instances de vos groupes. Par exemple, vous pouvez créer un groupe d'instances préemptives, exécuter une tâche de traitement par lot à l'aide de ces instances, puis supprimer le groupe une fois la tâche terminée.

Pour créer un groupe d'instances préemptives, activez l'option "Préemption" dans un modèle d'instance, puis créez le groupe d'instances géré à partir du modèle.

Console

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

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

  2. Cliquez sur Nouveau modèle d'instance.
  3. Spécifiez les propriétés souhaitées dans votre modèle d'instance.
  4. Cliquez sur Afficher les options avancées pour développer la section Règles de disponibilité.
  5. Activez l'option Préemption.
  6. Cliquez sur Créer pour générer le modèle.
  7. Créez un groupe d'instances géré à partir du modèle.

gcloud

Dans gcloud compute, créez un modèle d'instance à l'aide de la commande instance-templates create. Spécifiez l'option --preemptible.

gcloud compute instance-templates create instance-template \
    --preemptible

Une fois le modèle d'instance généré, créez un groupe d'instances géré à partir de celui-ci.

API

Pour créer un modèle d'instance, appelez la méthode instanceTemplates().insert. Ajoutez la propriété preemptible sous scheduling, puis définissez-la sur true.

{
"name": "instance-template",
"properties": {
  "machineType": "zones/zone/machineTypes/machine-type",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "scheduling":
  {
    "preemptible": true
  },
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

Une fois le modèle d'instance généré, créez un groupe d'instances géré à partir de celui-ci.

Fonctionnement des champs instanceTemplate et versions

Lorsque vous créez un groupe d'instances géré, vous fournissez un modèle d'instance qui permet au groupe de créer des instances de VM individuelles. Par défaut, Compute Engine décrit le modèle d'instance utilisé dans deux propriétés d'API distinctes : la propriété de niveau supérieur instanceTemplate et la propriété versions. Par exemple, dans le groupe d'instances géré suivant, les champs instanceTemplate et versions sont renseignés :

{

 "name": "example-group",
 "zone": "zones/us-central1-a",
 "instanceTemplate": "global/instanceTemplates/example-it",
 "versions": [
  {
   "name": "v3",
   "instanceTemplate": "global/instanceTemplates/example-it",
   "targetSize": {
    "calculated": 3
   }
  }
 ]...
}

Compute Engine renseigne automatiquement le champ de niveau supérieur instanceTemplate et le champ versions pour permettre la rétrocompatibilité. Nous vous recommandons de spécifier le champ versions et d'omettre le champ de niveau supérieur instanceTemplates dans la mesure du possible. Toutefois, si votre code d'application définit actuellement le champ de niveau supérieur instanceTemplate, la requête reste valide.

Pour en savoir plus sur l'outil de mise à jour des groupes d'instances gérés, consultez la page Déployer des mises à jour de MIG.

(Avancé) Créer des versions Canary des modèles d'instance avec un groupe d'instances géré

Il est possible de créer un groupe d'instances géré composé de deux groupes de VM exploitant des modèles d'instance différents. Par exemple, vous voudrez peut-être créer un groupe d'instances géré comportant 20 instances de VM, mais n'en exécuter que 10 sur une image d'OS spécifique et exécuter le reste sur une autre image d'OS. Cette fonctionnalité vous permet de comparer les deux versions de modèle d'instance avant d'en choisir une.

Dans l'API, envoyez une requête POST à l'URL suivante :

POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers

Le corps de votre requête doit omettre le champ de niveau supérieur instanceTemplates, mais inclure la propriété versions avec deux modèles d'instance définis. Dans chaque objet versions, vous spécifiez un modèle d'instance. Pour l'un des objets versions, et non les deux, vous devez également spécifier l'élément targetSize. Par exemple, la requête suivante crée un groupe d'instances dans lequel 50 % des instances de VM utilisent le modèle d'instance example-template, tandis que le reste des instances de VM exploite le modèle small-machine-type :

{
  "baseInstanceName": "example-instances",
  "name": "example-group",
  "targetSize": 5,
  "versions":
  [
    {
      "instanceTemplate": "global/instanceTemplates/example-template",
      "targetSize":
      {
        "percent": 50
      }
    },
   {
     "instanceTemplate": "global/instanceTemplates/small-machine-type"
   }
  ]
}

Groupes d'instances gérés et IAM

Toutes les opérations effectuées par Compute Engine dans le cadre du groupe d'instances géré sont exécutées à l'aide du compte de service des API Google qui est associé à votre projet. Ce compte de service basé sur un projet possède une adresse e-mail au format suivant, où project-id est l'ID numérique du projet correspondant :

project-id@cloudservices.gserviceaccount.com

Le compte de service des API Google est différent du compte de service Compute Engine par défaut.

Il vous incombe de vérifier que le compte de service utilisé par le groupe d'instances géré dispose des droits suffisants pour créer des instances de VM basées sur le modèle d'instance. Plus spécifiquement, le compte de service doit disposer du rôle compute.instanceAdmin.v1 (et éventuellement du rôle serviceAccountUser) pour créer et gérer des instances au sein d'un groupe d'instances. Le rôle serviceAccountUser n'est requis que si le groupe géré doit créer des instances pouvant s'exécuter en tant que compte de service. Veuillez également garder à l'esprit que ce compte est utilisé par d'autres processus, y compris Deployment Manager.

Lorsque vous créez un groupe d'instances géré ou mettez à jour un modèle d'instance, Compute Engine confirme que le compte de service des API Google répond aux exigences suivantes :

  • Rôle serviceAccountUser. Le compte de service doit détenir ce rôle si vous envisagez de créer des instances pouvant s'exécuter en tant que compte de service.
  • Le compte de service doit être autorisé à accéder à toutes les ressources référencées dans les modèles d'instance, telles que des images, disques, réseaux VPC et sous-réseaux.

Pour en savoir plus sur les comptes de service, lisez la présentation des comptes de service.

Mettre à jour toutes les instances d'un groupe d'instances géré

Reportez-vous à la page Déployer des mises à jour de groupes d'instances gérés.

Dépannage

Mon groupe d'instances géré ne parvient pas à créer une instance. Que se passe-t-il ?

Plusieurs problèmes peuvent empêcher le groupe d'instances de créer ou de recréer une instance. Voici les problèmes les plus courants :

  • Le groupe d'instances géré tente de créer ou de recréer à la fois l'instance et le disque de démarrage persistant, mais le disque persistant existe déjà. Par défaut, les disques de démarrage persistants sont créés en même temps que les nouvelles instances. Ils sont en outre nommés d'après l'instance. Si une instance porte le nom my-awesome-instance, le disque s'appelle également my-awesome-instance. Cependant, si un disque persistant existant porte déjà ce nom, la requête échoue. Supprimez le disque persistant existant pour résoudre le problème.

  • Votre modèle d'instance a défini l'option disks.autoDelete sur false pour les disques de démarrage persistants. Par conséquent, le disque persistant d'une instance a été conservé lorsque celle-ci a été supprimée (en raison d'une autoréparation, par exemple). Quand le groupe d'instances géré a tenté de recréer l'instance avec le même nom, le problème ci-dessus est survenu (un disque persistant existant portait déjà le même nom). Supprimez le disque persistant existant pour résoudre le problème et mettez à jour le modèle d'instance en définissant disks.autoDelete sur true si vous souhaitez supprimer les disques de démarrage persistants en même temps que l'instance.

  • Votre modèle d'instance n'est peut-être pas valide. Si vous l'avez récemment mis à jour, il est possible qu'une propriété non valide empêche le groupe géré de créer l'instance. Voici des exemples de propriétés non valides :

    • Vous avez spécifié une ressource qui n'existe pas, telle qu'une image source.
    • Vous avez mal orthographié un nom de ressource.
    • Vous avez essayé d'associer d'autres disques persistants non amorçables en mode lecture/écriture. Dans la mesure où un groupe d'instances contient plusieurs instances, les disques supplémentaires que vous souhaitez partager avec les autres instances du groupe ne peuvent être associés qu'en mode lecture seule.

Étapes suivantes