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

Cette page explique comment créer un groupe d'instances géré (MIG), qui est un groupe d'instances gérées, contrôlées en tant qu'entité unique. Les MIG acceptent des fonctionnalités telles que l'autoréparation, l'équilibrage de charge, l'autoscaling, la mise à jour automatique et les charges de travail avec état.

Vous pouvez créer des MIG zonaux (zone unique) ou des MIG régionaux (multizones). Les MIG régionaux offrent une plus grande disponibilité que les MIG zonaux, car leurs instances gérées sont réparties de manière uniforme sur plusieurs zones d'une même région. Toutefois, les MIG régionaux présentent des limites différentes des limites des MIG zonaux.

Un MIG base chacune de ses instances gérées sur un modèle d'instance commun et une configuration avec état facultative. Chaque instance gérée est une entité de données dans le MIG qui contient l'état actuel et l'état souhaité d'une instance de VM. Les MIG maintiennent la haute disponibilité de vos applications en s'assurant de manière proactive que les VM existantes restent à l'état RUNNING.

Pour en savoir plus sur les groupes d'instances et les fonctionnalités qui leur sont associées, consultez la présentation des groupes d'instances.

Avant de commencer

Limites

  • Chaque MIG peut contenir jusqu'à 1 000 VM. Pour en savoir plus, contactez l'assistance.
  • Lors de la mise à jour d'un MIG, vous ne pouvez pas spécifier plus de 1 000 instances dans une même requête.

Utiliser des MIG pour les applications sans état

Vous pouvez utiliser des MIG pour les applications sans état, qui ne dépendent pas de l'état spécifique de l'instance de machine virtuelle (VM) sous-jacente à exécuter. Votre application ne doit pas dépendre de propriétés de VM qui ne persistent pas, telles que le contenu des disques associés ou des données en mémoire. Si votre application nécessite la conservation des propriétés de VM, consultez la section MIG avec état.

Le comportement par défaut de tous les disques persistants dans les MIG sans état consiste à les supprimer ou à les recréer lorsque la VM correspondante est supprimée ou recréée. Évitez donc de dépendre des disques associés pour conserver vos données persistantes dans un MIG sans état. Pour conserver vos données, nous vous recommandons de mettre régulièrement à jour vos images personnalisées à l'aide de logiciels et de configurations mis à jour. Pour conserver vos données, utilisez des scripts de démarrage et configurez vos applications pour sauvegarder vos données dans un autre emplacement centralisé, tel que Cloud Storage.

Dans vos modèles d'instance, vous pouvez spécifier une image de conteneur ou une image personnalisée avec des scripts de démarrage pertinents. Ainsi, lorsque vous recréez une VM, elle possède déjà les applications nécessaires et peut accéder aux données requises. Pour en savoir plus sur la création de modèles d'instances, consultez la section Modèles d'instances déterministes.

Utiliser des MIG pour des applications avec état

Les groupes d'instances gérés sont également compatibles avec les applications avec état. Un MIG avec état préserve l'état unique de chaque VM (nom d'instance de VM, disques persistants associés et/ou métadonnées) lors du redémarrage, de la recréation, de l'autoréparation ou de la mise à jour de la machine.

Utilisez des MIG avec état pour les applications contenant des données ou une configuration avec état, telles que des bases de données, des applications de traitement de données, des applications existantes et des charges de travail par lots de longue durée avec point de contrôle.

Envisagez d'utiliser des MIG avec état lorsque vous déployez une application ou un cluster avec état sur Compute Engine et que vous souhaitez améliorer sa disponibilité grâce à l'autoréparation et au déploiement multizone. Envisagez également de les utiliser si vous souhaitez simplifier et accélérer les mises à jour grâce à des mises à jour progressives automatiques.

Pour savoir comment créer un MIG avec état ou ajouter une configuration avec état à un MIG existant, consultez la section Configurer des MIG avec état.

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 pour spécifier l'image du système d'exploitation ou du conteneur, ainsi que les paramètres de chaque VM 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. Nommez le MIG et sélectionnez la zone dans laquelle vous souhaitez localiser le groupe.
  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 d'instance 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 éventuellement activer l'autoscaling pour que le groupe puisse ajouter ou supprimer automatiquement des instances en fonction de son utilisation. Vous pouvez aussi activer l'autoréparation pour effectuer des vérifications de l'état des VM du groupe basées sur l'application.
  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 VM créées dans ce groupe d'instances. Étant donné que ces VM sont basées sur un modèle commun, chaque VM se voit attribuer une chaîne aléatoire dans son nom. Cette chaîne aléatoire est précédée du nom de base. Par exemple, si vous définissez le nom de base sur example, les VM porteront des noms tels que 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 de VM 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 des VM du 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 l'élément suivant :

  • project-id : ID du projet pour la requête.
  • zone : Zone de la requête
      .
    • Pour un MIG régional, remplacez zones/zone par regions/region et spécifiez une région.
  • instance-group-name : Nom de ce groupe d'instances.
  • base-name : Nom à utiliser pour les VM créées dans ce groupe d'instances. Étant donné que ces VM sont basées sur un modèle commun, chaque VM se voit attribuer une chaîne aléatoire dans son nom. Cette chaîne aléatoire est précédée du nom de base. Par exemple, si vous définissez le nom de base sur example, les VM porteront des noms tels que 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 : 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 d'instances géré utilise le nouveau modèle lorsque vous effectuez une requête pour ajouter ou recréer des instances. Cependant, le modèle ne met pas automatiquement à jour les VM existantes du groupe. Cela vous permet de contrôler exactement quelles VM sont mises à jour, mais en contrepartie, votre groupe d'instances contiendra des VM 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
}

Après avoir modifié le modèle d'instance, recréez des instances individuelles ou mettez à jour toutes les VM du groupe avec une mise à jour progressive.

Redimensionner un groupe d'instances géré

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

Redimensionner automatiquement un MIG

Vous pouvez configurer des groupes d'instances gérés pour ajouter ou supprimer automatiquement des VM 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 MIG

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 vous diminuez la taille, le groupe d'instances géré supprime les VM 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 supplémentaires 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 du groupe d'instances 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 :

Après avoir effectué une requête pour redimensionner un groupe d'instances géré, les VM 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, si la création initiale d'une instance de VM échoue, le groupe d'instances géré tente de créer la VM en continu jusqu'à ce que l'opération aboutisse. Toutefois, si vous souhaitez empêcher les tentatives de création automatique, vous pouvez désactiver ce mode en définissant l'indicateur --nocreation-retries lorsque vous redimensionnez le 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 de l'instance, le groupe d'instances géré abandonne cette instance, la supprime de la liste des instances gérées du groupe et diminue la taille cible du groupe d'instances géré.

Ce mode ne s'applique que lors de la première tentative de création d'une VM. Si la création réussit lorsque ce mode est activé, la VM se comporte de la même manière que toutes les autres VM créées avec une requête de redimensionnement standard. Plus précisément si une VM 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 tentatives de création lorsque des systèmes créent automatiquement des groupes de VM qui n'ont pas besoin de disposer d'un nombre exact de VM. Vous préférerez peut-être choisir rapidement une taille fixe pour votre groupe d'instances géré et vous être plus flexible quant au nombre de VM, 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é en ayant désactivé le mode de tentatives de création, utilisez l'outil gcloud 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 \
    --no-creation-retries \
    --zone zone

API

Envoyez une requête à la méthode resizeAdvanced. Spécifiez la nouvelle taille du groupe d'instances 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 tentatives de création est désactivé est défini sur la valeur CREATING_WITHOUT_RETRIES.

Créer des instances avec des noms spécifiques dans les MIG

Si votre système dépend de noms spécifiques, vous pouvez créer des VM avec ces noms. Les noms que vous attribuez à ces instances gérées sont conservés si la VM 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 de VM individuelles dans 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 VM 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 supplémentaires 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://compute.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 de VM d'un groupe d'instances géré pour déboguer plus facilement des problèmes liés à des VM individuelles sans affecter le groupe dans son ensemble. Lorsque vous abandonnez une instance, cette VM est également retirée des équilibreurs de charge attribués au groupe d'instances géré. Les pools cibles qui ont été manuellement assignés à des instances individuelles spécifiques ne sont pas retiré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 VM, 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 supplémentaires après la fin de la période de drainage.

L'abandon d'instances dans un groupe d'instances géré s'effectue à 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://compute.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

Lorsque vous recréez une instance gérée, cela supprime la VM spécifiée et en crée une autre à partir du modèle d'instance attribué au groupe d'instances géré.

Utilisez cette méthode pour mettre à jour les VM sélectionnées afin qu'elles utilisent le dernier modèle d'instance. Si vous devez recréer toutes les VM 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 supplémentaires après la fin de la période de drainage.

Pour recréer les VM sélectionnées dans le groupe d'instances géré, vous pouvez utiliser l'outil gcloud compute ou 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://compute.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 dans un groupe d'instances géré envoyée, les nouvelles VM 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 VM du groupe sont supprimées. Si vous devez conserver l'une des VM de ce groupe d'instances géré, abandonnez d'abord les instances pour retirer les VM 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 VM du groupe d'instances géré.

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://compute.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

Vous pouvez utiliser des groupes d'instances gérés pour créer rapidement plusieurs instances préemptives. Vous pouvez ainsi réduire les coûts des VM dans vos groupes d'instances gérés. 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'instance.

    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é

Vous pouvez 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/v1/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.

Vous devez vous assurer que le compte de service utilisé par le groupe d'instances géré dispose des droits suffisants pour créer des ressources basées sur le modèle d'instance. Par exemple, cela signifie que 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 VM dans le groupe d'instances. Le rôle serviceAccountUser n'est requis que si le groupe d'instances géré crée des VM 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 de VM. Que se passe-t-il ?

Plusieurs problèmes peuvent empêcher le groupe d'instances de créer ou de recréer une instance de VM. 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. Ces disques portent le nom de la VM. Si une VM 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 VM 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 la VM 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 d'instances géré de créer la VM. 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. Étant donné que les groupes d'instances contiennent plusieurs VM, tous les disques supplémentaires que vous souhaitez partager entre toutes les VM du groupe ne peuvent être associés qu'en mode lecture seule.
  • Si vous avez configuré une règle d'autoréparation, mais que vous n'avez pas configuré (ou mal configuré) la règle de pare-feu qui permet aux vérifications d'état d'atteindre votre application, vos VM ne semblent pas opérationnelles et le MIG tente constamment de les recréer. Pour en savoir plus sur la configuration d'une règle de pare-feu de vérification d'état, consultez cet exemple de configuration de vérification d'état.

Étapes suivantes