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

Un groupe d'instances géré contient des instances identiques que vous pouvez gérer comme une seule entité sur une seule zone. Ils maintiennent la haute disponibilité de vos applications en s'assurant de manière proactive que vos instances restent disponibles, c'est-à-dire dans l'état RUNNING. Ils sont compatibles avec l'autoréparation, l'équilibrage de charge, l'autoscaling, les mises à jour progressives et bien plus.

Vous pouvez également créer des groupes d'instances gérés régionaux, qui contiennent 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 Google Cloud Storage.

Vous pouvez spécifier une image de conteneur ou une image personnalisée et les scripts de démarrage pertinents dans vos modèles d'instance. Ainsi, lorsqu'une instance est recréée, elle dispose des applications logicielles nécessaires et d'un accès aux données requises. Pour lire d'autres recommandations sur la création de modèles d'instance, 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 devra ê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 la console Google Cloud Platform, l'outil gcloud compute ou l'API.

Console

  1. Dans la console GCP, 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 [NAME] \
    --base-instance-name [BASE_NAME] \
    --size [SIZE] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

où vous remplacez les valeurs suivantes :

  • [NAME] par le nom du groupe d'instances.
  • [BASE_NAME] par le nom à utiliser pour les instances créées au sein du groupe. Comme 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, example-qtyz, etc.
  • [SIZE] par la taille du groupe d'instances.
  • [INSTANCE_TEMPLATE] par le nom du modèle d'instance à utiliser pour le groupe.
  • [ZONE] est l'une des zones disponibles pour Compute Engine.

    Par exemple, la commande suivante permet de créer un groupe d'instances appelé "example-group", dont le nom 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 à la méthode 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://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

{
  "baseInstanceName": "[BASE_NAME]",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]"
    }
  ],
  "name": "[NAME]",
  "targetSize": [SIZE]
}

où vous remplacez les valeurs suivantes :

  • [PROJECT_ID] par l'ID du projet concerné par la requête.
  • [ZONE] par la zone associée à la requête.
  • [NAME] par le nom du groupe d'instances.
  • [BASE_NAME] par le nom à utiliser pour les instances créées au sein du groupe. Comme 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, example-qtyz, etc.
  • [SIZE] par la taille du groupe d'instances.
  • [INSTANCE_TEMPLATE] par le modèle d'instance à utiliser pour le groupe.

Récupérer des groupes existants et leur description

Vous pouvez obtenir des informations sur vos groupes d'instances gérés existants à l'aide de la console, de l'outil de ligne de commande gcloud ou de l'API. Pour obtenir l'id du groupe, vous devez utiliser gcloud ou l'API.

Console

  1. Dans la console GCP, accédez à la page "Groupes d'instances".

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

    Cette page répertorie les groupes d'instances dont vous disposez, ainsi que les groupes d'instances non gérés.

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe d'instances que vous souhaitez examiner. La page qui s'ouvre affiche les propriétés du groupe ainsi que la liste des instances qui en font partie.

gcloud

Pour répertorier tous les groupes d'instances gérés d'un projet, exécutez la commande suivante :

gcloud compute instance-groups managed list

Pour obtenir des informations sur un groupe spécifique, exécutez la commande suivante :

gcloud compute instance-groups managed describe [INSTANCE_GROUP] \
    --zone [ZONE]

API

Pour répertorier tous les groupes d'instances gérés d'une zone, créez une requête GET auprès du service instanceGroupManagers :

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

Pour obtenir des informations sur un groupe spécifique, créez une requête GET auprès du service instanceGroupManagers et incluez le nom d'un groupe d'instances géré spécifique :

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

Pour les groupes d'instances gérés régionaux (multizones), utilisez plutôt la ressource regionInstanceGroupManagers : regionInstanceGroupManagers.list et regionInstanceGroupManagers.get.

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 la console GCP, 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] \
    --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://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers[INSTANCE_GROUP]/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 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.

Redimensionner manuellement un groupe d'instances géré

Si un groupe d'instances géré n'est pas déjà configuré pour s'adapter automatiquement, 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 la console Google Cloud Platform, de l'outil gcloud compute ou de l'API.

Console

  1. Dans la console GCP, 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

Vous pouvez redimensionner un groupe d'instances géré à l'aide de la commande suivante :

gcloud compute instance-groups managed resize [INSTANCE_GROUP ] \
    --size [NEW_SIZE] \
    --zone [ZONE]

API

Envoyez une requête au service instanceGroupManagers en indiquant le nom du groupe d'instances géré cible. Spécifiez la nouvelle taille d'instance en tant que paramètre.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resize?size=[NEW_SIZE]

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

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

À l'aide de l'outil de ligne de commande gcloud, exécutez la commande resize en ajoutant l'indicateur --no-creation-retries :

gcloud beta compute instance-groups managed resize [INSTANCE_GROUP] --size [NEW_SIZE] \
    --nocreation-retries \
    --zone [ZONE]

API

Envoyez une requête au service instanceGroupManagers en indiquant le nom du groupe d'instances géré cible. Spécifiez la nouvelle taille d'instance et le champ noCreationRetries dans le corps de la requête.

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resizeAdvanced

{
 "targetSize": [SIZE]
 "noCreationRetries": true
}

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é aura la valeur CREATING_WITHOUT_RETRIES.

Identifier des instances appartenant à un groupe

Pour afficher la liste de toutes les instances d'un groupe, consultez la section Récupérer des groupes existants et leur description.

Pour vérifier si une instance spécifique appartient actuellement à un groupe, vous pouvez utiliser la console ou l'API.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur une instance pour accéder aux informations sur l'instance de VM.
  3. Si l'instance de machine virtuelle appartient à un groupe d'instances gérés, le nom de ce groupe apparaît sous l'en-tête Utilisée par. Si l'instance de VM n'appartient pas à un groupe, l'en-tête Utilisée par n'apparaît pas sur la page des détails de l'instance.

API

Reportez-vous à la section Afficher les référents associés à des instances de VM.

Pour vérifier si une instance appartient ou appartenait à un groupe d'instances géré, recherchez les deux clés de métadonnées suivantes dans les métadonnées de l'instance :

  • instance-template indique le modèle à partir duquel l'instance a été créée.
  • created-by indique le groupe d'instances géré qui a créé l'instance.

Même si vous abandonnez l'instance, elle possédera toujours ces entrées de métadonnées, à moins que vous ne les supprimiez manuellement.

Par exemple, si vous disposez d'une instance random-instance-biy et souhaitez savoir si elle a été créée par un groupe d'instances géré, vous pouvez la décrire et rechercher les clés de métadonnées mentionnées ci-dessus. Exemple :

gcloud compute instances describe random-instance-biy --zone us-central1-f

gcloud affiche une réponse semblable à la suivante :

canIpForward: false
cpuPlatform: Intel Ivy Bridge
creationTimestamp: '2016-08-24T14:11:38.012-07:00'
disks:
- autoDelete: true
  boot: true
  deviceName: persistent-disk-0
  index: 0
  interface: SCSI
  kind: compute#attachedDisk
...[snip]...
metadata:
  items:
  - key: instance-template
    value: projects/123456789012/global/instanceTemplates/example-it
  - key: created-by
    value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

Supprimer des instances individuelles 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 l'autoscaler détecte une augmentation de la charge de travail sur les autres instances du groupe, il peut alors lui réattribuer sa taille précédente. Pour éviter cela, arrêtez 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 la console Google Cloud Platform, de l'outil gcloud compute ou de l'API.

Console

  1. Dans la console GCP, 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

Pour supprimer une instance à l'aide de gcloud, exécutez la sous-commande instance-groups managed delete-instances :

gcloud compute instance-groups managed delete-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Envoyez une requête au service instanceGroupManagers en indiquant le nom du groupe d'instances géré cible. Dans le corps de la requête, spécifiez les URL de la ou des instances que vous souhaitez supprimer.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/deleteInstances

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

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é 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 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 la console Google Cloud Platform, de l'outil gcloud compute ou de l'API.

Console

  1. Dans la console GCP, 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 sans la supprimer, exécutez la sous-commande abandon-instances.

gcloud compute instance-groups managed abandon-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Envoyez une requête au service instanceGroupManagers en indiquant le nom du groupe d'instances géré cible. 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]/abandonInstances

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

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 des instances au sein d'un 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] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Envoyez une requête au service instanceGroupManagers en indiquant le nom du groupe d'instances géré cible. 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]/recreateInstances

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

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é.

Vérifier l'état des instances d'un groupe d'instances géré

Plusieurs commandes et requêtes permettent de créer, de supprimer et de modifier les instances d'un groupe géré. Un message DONE s'affiche lorsque le groupe planifie ces actions pour les instances. Celles-ci ne sont toutefois créées, supprimées ou mises à jour qu'une fois les actions planifiées terminées. Vous devez vérifier l'état de ces instances, ou du groupe lui-même, à l'aide de l'outil gcloud compute ou de l'API.

Vérifier l'état des instances

gcloud

Répertoriez les instances du groupe et les actions actuelles qui leur sont associées à l'aide de la commande instance-groups managed list-instances.

gcloud compute instance-groups managed list-instances [INSTANCE_GROUP] \
    --zone [ZONE]

Exemple :

gcloud compute instance-groups managed list-instances example-group \
    --zone [ZONE]
NAME               STATUS  ACTION   LAST_ERROR
example-group-0gnk RUNNING NONE
example-group-15xy         CREATING Error QUOTA_EXCEEDED: Instance 'example-group-15xy' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0
example-group-18ep         CREATING Error QUOTA_EXCEEDED: Instance 'example-group-18ep' creation failed: Quota 'CPUS' exceeded.  Limit: 24.0, Error QUOTA_EXCEEDED: Instance 'example-group-18ep' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0
example-group-1u1y         CREATING

Dans cet exemple, example-group contient quatre instances : une instance en cours d'exécution, deux instances dont la création a échoué en raison de limites de quotas d'adresses et de processeurs, et une instance en cours de création qui n'a pas encore rencontré d'erreur.

Pour les groupes d'instances préemptives, si la capacité préemptive est indisponible, les actions de création échouent avec l'erreur suivante : ZONE_RESOURCE_POOL_EXHAUSTED. Pour afficher les événements de préemption passés, consultez la section Détecter si une instance a été préemptée.

Attendre que les instances soient stables

Exécutez la commande instance-groups managed wait-until-stable pour vérifier automatiquement un groupe d'instances et demander à votre script d'attendre que toutes les instances du groupe soient stables.

gcloud compute instance-groups managed wait-until-stable example-group \
    --zone [ZONE]

API

Envoyez une requête au service instanceGroupManagers en spécifiant le nom du groupe d'instances géré qui contient les instances à vérifier.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/listManagedInstances

Exemple :

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instanceGroupManagers/example-group/listManagedInstances

La requête reçoit la réponse suivante :

{
 "managedInstances": [
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-0gnk",
   "id": "16960422116594945029",
   "instanceStatus": "RUNNING",
   "currentAction": "NONE"
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-15xy",
   "currentAction": "CREATING",
   "lastAttempt": {
    "errors": {
     "errors": [
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-15xy' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0"
      }
     ]
    }
   }
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-18ep",
   "currentAction": "CREATING",
   "lastAttempt": {
    "errors": {
     "errors": [
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-18ep' creation failed: Quota 'CPUS' exceeded.  Limit: 24.0"
      },
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-18ep' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0"
      }
     ]
    }
   }
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-1u1y",
   "id": "7239700230861444556",
   "instanceStatus": "RUNNING",
   "currentAction": "CREATING"
  }
 ]
}

Dans cet exemple, example-group contient quatre instances : une instance en cours d'exécution, deux instances dont la création a échoué en raison de limites de quotas d'adresses et de processeurs, et une instance en cours de création qui n'a pas encore rencontré d'erreur.

Pour les groupes d'instances préemptives, si la capacité préemptive est indisponible, les actions de création échouent avec l'erreur suivante : ZONE_RESOURCE_POOL_EXHAUSTED. Pour afficher les événements de préemption passés, consultez la section Détecter si une instance a été préemptée.

Vérifier l'état du groupe

Au niveau du groupe, Compute Engine insère un champ en lecture seule nommé status, qui comprend un indicateur isStable, auquel vous pouvez accéder à l'aide de l'outil gcloud compute ou de API.

gcloud

gcloud compute instance-groups managed describe [INSTANCE_GROUP_NAME] \
    [--zone [ZONE] | --region [REGION]]

L'outil gcloud renvoie des informations détaillées sur le groupe d'instances, y compris le champ status.isStable.

API

Dans l'API, envoyez une demande POST à l'adresse URI suivante :

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP_NAME]/get

Si le groupe d'instances est un groupe d'instances géré au niveau régional, remplacez zones/[ZONE] par regions/[REGION].

L'API renvoie des informations détaillées sur le groupe d'instances, y compris le champ status.isStable.

Vous pouvez vérifier qu'un groupe d'instances géré est en cours d'exécution et opérationnel en consultant la valeur du champ status.isStable de la ressource instanceGroupManagers ou regionInstanceGroupManagers associée.

Si le champ status.isStable est défini sur false, cela signifie que les modifications sont actives, en attente ou que le groupe d'instances géré est lui-même en cours de modification.

Si le champ status.isStable est défini sur true, on peut en déduire les éléments suivants :

  • Aucune des instances du groupe d'instances géré n'est en cours de modification, et le champ currentAction est défini sur NONE pour toutes les instances.
  • Aucune modification n'est en attente pour les instances du groupe d'instances géré.
  • Le groupe d'instances géré n'est pas en cours de modification.

Les groupes d'instances gérés peuvent être modifiés de différentes façons. Exemple :

  • Vous pouvez demander le déploiement d'un nouveau modèle d'instance.
  • Vous pouvez demander à créer, supprimer, redimensionner ou mettre à jour des instances du groupe.
  • Un autoscaler peut demander le redimensionnement du groupe.
  • Une ressource d'autoréparation peut remplacer une ou plusieurs instances non opérationnelles dans le groupe d'instances géré.
  • Si des instances d'un groupe d'instances géré régional sont en cours de redistribution.

Une fois toutes les actions terminées, le champ status.isStable est à nouveau défini sur true pour ce groupe d'instances géré.

Vous pouvez également utiliser la commande gcloud beta compute instance-groups managed wait-until avec l'indicateur --stable pour attendre que l'indicateur status.isStable soit défini sur true pour le groupe :

gcloud beta compute instance-groups managed wait-until INSTANCE_GROUP_NAME \
    --stable \
    [--zone [ZONE] | --region [REGION]]

Supprimer un groupe d'instances géré

Lorsque vous supprimez un groupe d'instances géré à l'aide de la console Google Cloud Platform ou de gcloud, toutes les instances du groupe et tous les autoscalers associés sont également supprimés. 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é à l'aide de delete.

Avant de pouvoir supprimer un groupe d'instances géré à l'aide de l'API, vous devez d'abord envoyer des requêtes distinctes pour supprimer tous les autoscalers associés.

Supprimez l'intégralité d'un groupe d'instances géré et ses instances à l'aide de la console Google Cloud Platform, de l'outil gcloud compute ou de l'API.

Console

  1. Dans la console GCP, 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] \
    --zone [ZONE]

API

Envoyez une requête DELETE au service instanceGroupManagers en spécifiant le nom du groupe d'instances géré que vous souhaitez supprimer.

DELETE https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

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. Accédez à la page "Modèles d'instances" de la console GCP.

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

  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, en spécifiant l'indicateur --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, faites appel à 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.

Ajouter un groupe d'instances géré à un équilibreur de charge

La fonctionnalité d'équilibrage de charge de Google Cloud Platform diffuse le trafic à l'aide de groupes d'instances, gérés ou non. Selon le type d'équilibreur de charge que vous utilisez, vous pouvez ajouter des groupes d'instances à un service de backend ou à un pool cible. Pour en savoir plus sur l'équilibrage de charge, consultez la page Choisir un équilibreur de charge.

Ajouter un groupe d'instances géré à un service de backend

Vous devez disposer d'un service de backend pour pouvoir créer un équilibreur de charge interne, proxy TCP, proxy SSL ou HTTP(S). Ce type de service contient des backends individuels qui comportent chacun un groupe d'instances, géré ou non. Les instances du groupe répondent au trafic provenant de l'équilibreur de charge. Le service de backend sait à son tour quelles instances il peut exploiter, quel volume de trafic il peut traiter et quel volume il traite actuellement. En outre, le service de backend vérifie l'état et n'envoie pas de nouvelles connexions aux instances défectueuses.

Pour découvrir comment ajouter un groupe d'instances à un service de backend, consultez la section Ajouter des groupes d'instances à un service de backend.

Ajouter un groupe d'instances géré à un pool cible

Un pool cible est un objet qui contient une ou plusieurs instances de VM. Il permet à un équilibreur de charge réseau de transférer des requêtes utilisateur vers le pool cible associé. Les instances qui appartiennent à ce pool cible traitent ces requêtes et renvoient une réponse. Vous pouvez ajouter un groupe d'instances géré à un pool cible pour que, lorsque des instances sont ajoutées ou supprimées dans ce groupe, le pool soit lui aussi automatiquement mis à jour avec les modifications.

Le pool cible dans lequel vous ajoutez un groupe d'instances géré doit avoir été créé au préalable. Pour en savoir plus, consultez la section Ajouter un pool cible.

Pour ajouter un groupe d'instances géré existant à un pool cible, suivez les instructions ci-dessous. Ce processus permet d'ajouter toutes les instances de VM faisant partie du groupe géré au pool cible.

Console

  1. Accédez à la page "Pools cibles" de la console GCP.

    Accéder à la page "Pools cibles"

  2. Cliquez sur le pool cible auquel vous souhaitez ajouter le groupe d'instances.
  3. Cliquez sur le bouton Modifier.
  4. Faites défiler l'écran vers le bas jusqu'à la section Instances de VM, puis cliquez sur Sélectionner des groupes d'instances.
  5. Sélectionnez un groupe d'instances dans le menu déroulant.
  6. Enregistrez les modifications.

gcloud

Dans l'outil de ligne de commande gcloud, exécutez la commande set-target-pools :

gcloud compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
    --target-pools [TARGET_POOL,..] [--zone ZONE]

où :

  • [INSTANCE_GROUP] est le nom du groupe d'instances.
  • [TARGET_POOL] est le nom du ou des pools cibles auxquels vous souhaitez ajouter le groupe d'instances.
  • [ZONE] est la zone du groupe d'instances.

API

Dans l'API, envoyez une demande POST à l'adresse URI suivante :

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

où :

  • [PROJECT_ID] est l'ID de projet pour cette requête.
  • [ZONE] est la zone du groupe d'instances.
  • [INSTANCE_GROUP] est le nom du groupe d'instances.

Le corps de la requête doit contenir une liste d'URI pointant vers les pools cibles auxquels vous souhaitez ajouter le groupe. Exemple :

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Attribuer des ports nommés à des groupes d'instances gérés

Les ports nommés sont des paires clé/valeur qui représentent un nom de service et le numéro de port sur lequel le service s'exécute. Ils permettent aux services d'équilibrage de charge de rediriger le trafic vers des ports spécifiques sur des instances individuelles. Par exemple, si vous définissez un port nommé sur http:80, puis configurez votre service de backend pour qu'il envoie du trafic vers un port nommé http, l'équilibrage de charge transfère le trafic au port 80 des instances individuelles appartenant au groupe d'instances.

Les ports nommés sont des métadonnées simples utilisées par l'équilibrage de charge. Ils ne permettent de contrôler ni les ressources réseau, ni le pare-feu dans Compute Engine.

Vous pouvez attribuer plusieurs ports à chaque nom de service, et plusieurs noms de service à chaque port. Gardez toutefois à l'esprit qu'un service de backend ne peut transférer le trafic qu'à un seul port nommé à la fois.

Console

  1. Dans la console GCP, accédez à la page "Groupes d'instances".

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

  2. Cliquez sur le nom du groupe d'instances dans lequel vous souhaitez spécifier des ports nommés. La page qui s'ouvre affiche les propriétés du groupe.
  3. Cliquez sur Modifier le groupe pour modifier le groupe d'instances géré.
  4. Cliquez sur Préciser le mappage des noms des ports pour développer les options relatives aux ports nommés.
  5. Cliquez sur Ajouter un élément, puis saisissez le nom de port souhaité, ainsi que les numéros de port que vous voulez associer à ce nom. Cliquez à nouveau sur Ajouter un élément pour ajouter d'autres entrées le cas échéant.
  6. Cliquez sur Enregistrer pour enregistrer les modifications et appliquer les ports nommés aux instances du groupe géré.

gcloud

Définissez un ou plusieurs ports nommés à l'aide de la commande set-named-ports :

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports [PORT_NAME]:[PORT],[PORT_NAME]:[PORT]

Exemple :

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports name1:80,name2:8080

Pour attribuer plusieurs ports à chaque nom de service, ou plusieurs noms à chaque service, créez plusieurs entrées pour chaque nom ou port. Par exemple, attribuez le nom name1 aux ports 10, 20 et 80. Assignez ensuite les noms name2 et name3 au port 80. Enfin, attribuez le port 9000 au nom name4.

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports name1:10,name1:20,name1:80,\
                name2:8080,name3:8080,\
                name4:9000

Vous pouvez vérifier les attributions des ports nommés d'un groupe d'instances géré à l'aide de la commande get-named-ports :

gcloud compute instance-groups managed get-named-ports [INSTANCE_GROUP]
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

API

L'API Instance Group Manager n'offre pas de méthode API setNamedPorts, mais vous pouvez effectuer cette tâche à l'aide de l'API Instance Group à la place.

Envoyez une requête à l'API Instance Group en spécifiant le nom du groupe d'instances. Récupérez la valeur fingerprint actuelle associée au groupe en obtenant des informations sur un groupe spécifique. Incluez la valeur fingerprint et une ou plusieurs paires de valeurs namedPorts dans le corps de la requête :

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroups/[INSTANCE_GROUP]/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  },
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  }
 ]
}

Exemple :

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 80
  },
  {
   "name": "name2",
   "port": 8080
  }
 ]
}

Pour attribuer plusieurs ports à chaque nom de service, créez plusieurs entrées pour ce nom de service. Par exemple, vous pouvez attribuer les ports 10, 20 et 80 au nom name1. Affectez également le port 8080 au nom name2.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 10
  },
  {
   "name": "name1",
   "port": 20
  }
  {
   "name": "name1",
   "port": 80
  }
  {
   "name": "name2",
   "port": 8080
  }
  {
   "name": "name3",
   "port": 80
  }
  {
   "name": "name4",
   "port": 8080
  }
 ]
}

Pour répertorier les ports nommés déjà attribués à un groupe d'instances géré, envoyez une requête GET qui pointe vers le groupe :

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

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 tous deux 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 versions et d'omettre instanceTemplates dans la mesure du possible. Si votre code d'application définit toutefois 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 Mettre à jour les groupes d'instances gérés.

(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://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

Votre corps de 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 :

[PROJECT_ID]@cloudservices.gserviceaccount.com

où :

  • [PROJECT_ID] est l'ID numérique du projet correspondant.

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 détenir le rôle compute.instanceAdmin.v1 (et éventuellement le rôle serviceAccountUser) pour créer et gérer des instances au sein du 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. Gardez également à 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 :

  • Si vous envisagez de créer des instances pouvant s'exécuter en tant que compte de service, le compte de service des API Google doit détenir le rôle serviceAccountUser sur le modèle d'instance.
  • 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é

Consultez la page Mettre à jour les 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 voulez 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é le nom d'une ressource.
    • Vous avez essayé d'associer d'autres disques persistants non amorçables en mode lecture-écriture. Comme 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

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine