Utiliser des instances gérées

Une instance gérée est une entité de données qui représente l'état souhaité d'une instance de machine virtuelle (VM) réelle dans un groupe d'instances géré (MIG). Lisez ce document pour savoir comment utiliser de manière fiable les instances gérées d'un MIG. Par exemple, vous devrez peut-être ajouter, supprimer ou mettre à jour une instance spécifique, ou bien obtenir des informations s'y rapportant.

Pour vous assurer que les modifications apportées à votre configuration ne sont pas annulées par le MIG, il est important d'utiliser les méthodes décrites dans ce document. Si vous travaillez en dehors des méthodes du groupe, le groupe d'instances géré détecte les modifications et peut essayer de réparer le groupe. Par exemple, si vous supprimez une instance d'un groupe, le MIG peut recréer automatiquement cette instance en appliquant la spécification de l'instance gérée.

Avant de commencer

Qu'est-ce qu'une instance gérée ?

Une instance gérée est une entité de données dans un MIG qui contient l'état actuel et l'état souhaité d'une instance de VM,

L'état actuel d'une instance gérée inclut les champs suivants :

  • l'état du cycle de vie de l'instance, par exemple : RUNNING, STOPPING ;
  • l'action actuelle réalisée par le MIG sur une instance, par exemple : RESTARTING, VERIFYING, NONE ;
  • l'état de santé de l'instance, par exemple : HEALTHY, UNHEALTHY.

Pour une instance de VM réelle, l'état souhaité d'une instance gérée inclut les éléments suivants :

  • la version souhaitée, c'est-à-dire le nom de version et le modèle d'instance à utiliser pour l'instance ;
  • l'état préservé des éléments (tels que les disques ou les métadonnées) à conserver.

Comme le montre la Figure 1, pour chaque instance gérée d'un MIG, celui-ci maintient une VM réelle opérationnelle en fonction de la spécification de l'instance gérée.

En fonction de votre configuration, le MIG génère automatiquement des instances gérées, qui correspondent aux instances de VM réelles qu'un MIG conserve en votre nom.

Figure 1 : Relation entre les instances gérées et les VM correspondantes.

Pour afficher les spécifications d'une instance gérée, consultez la section Obtenir des informations sur les instances de VM gérées d'un MIG.

Ajouter des instances à un groupe d'instances géré

Pour ajouter des instances à un groupe d'instances géré, vous pouvez :

Pour vérifier que les instances nouvellement ajoutées fonctionnent correctement, vérifiez l'état du groupe ou vérifiez l'état des instances gérées.

Redimensionnement manuel

Si l'autoscaling n'est pas déjà configuré pour un groupe d'instances géré, vous pouvez redimensionner le groupe manuellement (modifier le nombre d'instances du groupe). Reportez-vous à la section Redimensionner manuellement un groupe d'instances géré.

Autoscaling

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. En outre, cela vous permet de réduire les coûts lorsque vos besoins en ressources de calcul sont moins importants. Pour en savoir plus sur le scaling automatique de votre groupe d'instances géré, consultez la page Procéder à l'autoscaling de groupes d'instances.

Ajouter des instances avec des noms spécifiques

Si votre système dépend de noms spécifiques, utilisez l'outil gcloud ou l'API pour ajouter des VM avec des noms spécifiques à un MIG existant.

Les noms que vous attribuez à ces instances gérées sont conservés si le MIG recrée la VM. Pour en savoir plus sur la conservation de l'état des instances de MIG, consultez la page Groupes d'instances gérés avec état.

Limites

Respectez les conditions suivantes lorsque vous créez des instances avec des noms spécifiques :

  • Vous devez désactiver l'autoscaling pendant le processus de création de l'instance.
  • Vous devez définir la règle de mise à jour du MIG sur Quand l'occasion se présente.
  • Si vous mettez à jour un groupe d'instances géré régional :
  • Vous ne pouvez pas utiliser de noms d'instance de VM en double dans un projet.

gcloud

Exécutez la commande instance-groups managed create-instance.

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

Remplacez l'élément suivant :

  • INSTANCE_GROUP_NAME est le nom du groupe d'instances géré régional ou zonal auquel ajouter une instance.
  • INSTANCE_NAME est le nom que vous souhaitez attribuer à la nouvelle instance.

API

Dans l'API, envoyez une requête POST à la méthode regionInstanceGroupManagers.createInstances. Pour un groupe d'instances géré zonal, utilisez la méthode instanceGroupManagers.createInstances. Dans le corps de la requête, incluez le champ instances avec les noms d'une ou de plusieurs instances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/createInstances
{
  "instances": [
    {
      "name": "INSTANCE_NAME_1"
    },
    {
      "name": "INSTANCE_NAME_2"
    }
  ]
}

Mettre à jour les instances sélectionnées dans un groupe

Consultez la section Mettre à jour de manière sélective les instances dans un groupe d'instances géré.

Supprimer certaines instances d'un groupe d'instances géré

Lorsque vous supprimez des instances gérées, le groupe d'instances géré réduit la valeur targetSize spécifiée pour le groupe et supprime les instances de VM correspondantes.

Si vous configurez un MIG avec état, celui-ci supprime les configurations d'état conservées des instances. Le groupe d'instances géré supprime également les instances de tous les pools cibles auxquelles elles appartiennent.

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.

Pour supprimer une instance gérée et donc supprimer l'instance de VM correspondante, vous pouvez :

Supprimer des instances spécifiques

La suppression d'instances spécifiques appartenant à un groupe géré n'entraîne aucune modification des paramètres définis pour l'autoscaler. 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, arrêtez l'autoscaler avant d'essayer de supprimer les instances.

Supprimez des instances gérées spécifiques à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud 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 section Membres, dans la liste des instances, sélectionnez une ou plusieurs instances à supprimer.

  4. Cliquez sur Supprimer l'instance. Les instances sélectionnées sont supprimées.

gcloud

Pour supprimer une instance avec l'outil gcloud, utilisez la commande instance-groups managed delete-instances :

gcloud compute instance-groups managed delete-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    [--region REGION | --zone ZONE]

La commande renvoie l'état de l'opération par instance :

  • SUCCESS est renvoyé si l'outil gcloud a supprimé l'instance.
  • FAIL est renvoyé pour toutes les instances si une instance spécifiée dans la requête n'est pas membre du groupe, si un membre est déjà supprimé ou abandonné, ou si la requête échoue pour toute autre raison.
  • SKIPPED n'est renvoyé que si vous utilisez l'option --skip-instances-on-validation-error et que l'instance ne fait pas partie du groupe, ou est déjà en cours de suppression ou d'abandon.
  • MEMBER_NOT_FOUND n'est renvoyé que pour les groupes régionaux lorsque l'outil gcloud n'a pas pu résoudre la zone à partir du nom de l'instance.

Si vous pensez que votre requête de suppression peut entrer en conflit avec des opérations simultanées, utilisez l'option --skip-instances-on-validation-error. Cette option spécifie si la requête doit se poursuivre même si la requête inclut des instances qui ne sont pas membres du groupe ou qui sont déjà supprimées ou abandonnées, par exemple des instances supprimées par un autoscaler. Par défaut, si vous omettez cette option et qu'une instance de ce type est spécifiée dans la requête, l'opération échoue. L'opération échoue toujours si la requête contient un nom d'instance mal formaté ou une référence à une instance qui existe dans une zone ou une région autre que celles du groupe.

Par exemple, la commande suivante demande la suppression de quatre instances, mais trois d'entre elles ne font plus partie du groupe :

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1 \
    --skip-instances-on-validation-error

Dans cet exemple, trois instances n'ont pas pu être validées. Elles ont donc été ignorées, tandis que example-instance-3 a été supprimé :

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE           INSTANCE               STATUS   VALIDATION_ERROR
example-project  us-central1-a  example-instance-1     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-1 that was already deleted.
example-project  us-central1-a  example-instance-2     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-2 that was already abandoned.
example-project  us-central1-a  example-instance-3     SUCCESS
example-project  us-central1-a  example-instance-4     SKIPPED  Cannot find instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-4.

Si vous omettez l'option --skip-instances-on-validation-error et qu'une instance ne réussit pas la validation, aucune instance n'est supprimée :

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE             INSTANCE              STATUS
example-project  us-central1-a    example-instance-1    FAIL
example-project  us-central1-a    example-instance-2    FAIL
example-project  us-central1-a    example-instance-3    FAIL
example-project  us-central1-a    example-instance-4    FAIL

API

Dans l'API, envoyez une requête POST à la méthode regionInstanceGroupManagers.deleteInstances. Pour un groupe d'instances géré zonal, utilisez la méthode instanceGroupManagers.deleteInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
   ]
}

Si vous estimez que votre requête de suppression peut entrer en conflit avec des opérations simultanées, utilisez le champ skipInstancesOnValidationError. Ce champ indique si la requête doit continuer, même si elle contient des instances qui ne sont pas membres du groupe, ou qui sont déjà supprimées ou abandonnées, par exemple les instances qui sont supprimées par un autoscaler. Par défaut, si vous omettez cette option et qu'une instance de ce type est spécifiée dans la requête, l'opération échoue. L'opération échoue toujours si la requête contient un nom d'instance mal formaté ou une référence à une instance qui existe dans une zone ou une région autre que celles du groupe.

Par exemple, la requête suivante de suppression de deux instances aboutit même si l'une des instances est déjà supprimée ou en cours de suppression :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ],
 "skipInstancesOnValidationError": true
}

Vous pouvez afficher les instances qui ont été ignorées lors de l'opération en affichant l'opération. Pour les MIG régionaux, utilisez la méthode regionOperations.get. Pour les groupes d'instances gérés zonaux, utilisez la méthode zoneOperations.get. Les avertissements sont répertoriés dans le champ d'avertissement de l'opération.

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 du groupe ou vérifiez l'état des instances gérées.

Abandonner des instances d'un groupe d'instances géré

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 instances individuelles sans affecter le groupe dans son ensemble. Lorsque vous abandonnez une instance, elle 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.

Le fait d'abandonner des instances réduit la taille cible (targetSize) spécifiée pour le groupe d'instances, mais cela n'entraîne aucune modification des paramètres définis pour l'autoscaler. 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.

L'abandon d'instances dans un groupe d'instances géré s'effectue à l'aide de Google Cloud Console, de l'outil gcloud 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 section Membres, sélectionnez une ou plusieurs instances à retirer du groupe dans la liste des instances.

  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 la VM, exécutez la commande instance-groups managed abandon-instances.

gcloud compute instance-groups managed abandon-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    [--region REGION | --zone ZONE]

API

Dans l'API, envoyez une requête POST à la méthode regionInstanceGroupManagers.abandonInstances. Pour un groupe d'instances géré zonal, utilisez la méthode instanceGroupManagers.abandonInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/abandonInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ]
}

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

Recréer des instances dans un 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 et la dernière configuration avec état, le cas échéant. 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 après la fin de la période de drainage.

Recréez les instances de VM sélectionnées dans un groupe d'instances géré à l'aide de l'outil gcloud ou de l'API.

gcloud

Utilisez la commande instance-groups managed recreate-instances.

gcloud compute instance-groups managed recreate-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    [--region REGION | --zone ZONE]

API

Dans l'API, envoyez une requête POST à la méthode regionInstanceGroupManagers.recreateInstances. Pour un groupe d'instances géré zonal, utilisez la méthode instanceGroupManagers.recreateInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/recreateInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ]
}

Une fois votre requête de recréation d'instances de VM 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 du groupe ou vérifiez l'état des instances gérées.

Obtenir des informations sur des instances appartenant à un groupe d'instances géré

Reportez-vous à la section Obtenir des informations sur les instances gérées d'un groupe d'instances géré.

Configurer des instances avec état dans un groupe d'instances géré

Pour en savoir plus, consultez la page Configurer des groupes d'instances gérés (MIG) avec état.

Étape suivante