Ce document explique comment arrêter automatiquement des machines virtuelles (VM) dans un groupe d'instances géré (MIG) en spécifiant une limite de temps pour les VM. Il décrit également le fonctionnement du délai pour les VM dans un MIG.
Vous pouvez optimiser les charges de travail temporaires en spécifiant une limite de temps pour les VM d'un MIG. Lorsqu'une VM atteint sa limite de temps, le MIG l'arrête automatiquement (la supprime). Limiter la durée d'exécution des VM dans un MIG permet de réduire les coûts et de libérer des quotas.
Pour savoir comment spécifier une limite de temps pour une VM autonome, consultez la section Limiter la durée d'exécution d'une VM. Si vous souhaitez qu'un MIG ajoute ou supprime automatiquement des VM en fonction de vos charges de travail, consultez la page Autoscaling groups of instances (Procéder à l'autoscaling de groupes d'instances).
Avant de commencer
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Limite de temps en tant que durée d'exécution
- Durée limite en tant qu'heure de fin
Créez un modèle d'instance avec une durée d'exécution pour les VM ou avec une heure d'arrêt pour les VM.
Utilisez le modèle d'instance pour créer un groupe d'instances géré ou mettre à jour un groupe d'instances géré existant.
Vous devez respecter les restrictions concernant la limitation de la durée d'exécution des VM autonomes.
Lorsque vous créez un modèle d'instance pour spécifier une limite de temps pour les VM dans un MIG, les limites suivantes s'appliquent :
- Vous ne pouvez pas définir l'action d'arrêt sur
STOP
. Les MIG ne sont compatibles qu'avecDELETE
. - Vous ne pouvez pas utiliser de VM Spot.
- Vous ne pouvez pas définir l'action d'arrêt sur
Vous ne pouvez pas créer de requête de redimensionnement dans un MIG qui utilise un modèle d'instance qui limite la durée d'exécution de la VM.
Vous ne pouvez pas limiter l'exécution des VM dans un MIG régional avec une forme de distribution cible
EVEN
et la rédistribution proactive des instances activée.Dans la console Google Cloud, accédez à la page Modèles d'instances.
Cliquez sur Créer un modèle d'instance.
Sélectionnez l'emplacement comme suit :
- Si vous souhaitez utiliser le modèle d'instance dans plusieurs régions, sélectionnez Global.
- Si vous souhaitez réduire la dépendance interrégionale, sélectionnez Régional.
Si vous avez choisi régional, sélectionnez la région dans laquelle vous souhaitez créer votre modèle d'instance.
Dans la section Règles de disponibilité, développez Paramètres avancés du modèle de provisionnement de VM.
Cochez la case Définir une limite de temps pour la VM.
Dans le champ Type de délai, sélectionnez Par heure (par défaut) pour spécifier le délai sous la forme d'une durée. Dans le champ suivant, saisissez la durée en heures.
Dans la liste À l'arrêt de la VM, sélectionnez Supprimer.
Pour les autres champs, acceptez les valeurs par défaut ou modifiez-les si nécessaire.
Cliquez sur Créer.
INSTANCE_TEMPLATE_NAME
: nom du modèle d'instance.DURATION
: durée d'exécution des VM demandée. Le MIG supprime automatiquement la VM après la durée spécifiée.Formatez la durée en nombre de jours, d'heures, de minutes et de secondes, suivis respectivement de
d
,h
,m
ets
. Par exemple, spécifiez30m
pour définir une durée de 30 minutes ou1d2h3m4s
pour une durée d'un jour, deux heures, trois minutes et quatre secondes. La durée minimale est de 30 secondes (30s
) et la durée maximale est de 120 jours (120d
).PROJECT_ID
: ID du projet dans lequel vous souhaitez créer le modèle d'instance.INSTANCE_TEMPLATE_NAME
: nom du modèle d'instance.MACHINE_TYPE
: type de machine prédéfini ou personnalisé pour les VM du groupe.IMAGE_PROJECT
: projet contenant l'image, par exemple,debian-cloud
.IMAGE
ouIMAGE_FAMILY
: spécifiez l'un des éléments suivants :IMAGE
: version spécifique de l'image de l'OS. Exemple :debian-10-buster-v20200309
.IMAGE_FAMILY
: famille d'images. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiezfamily/debian-10
, la dernière version de la famille d'images Debian 10 est utilisée.
DURATION
: durée d'exécution des VM demandée. Le MIG supprime automatiquement la VM après la durée spécifiée.Formatez la durée en nombre de jours, d'heures, de minutes et de secondes, suivis respectivement de
d
,h
,m
ets
. Par exemple, spécifiez30m
pour définir une durée de 30 minutes ou1d2h3m4s
pour une durée d'un jour, deux heures, trois minutes et quatre secondes. La durée minimale est de 30 secondes (30s
) et la durée maximale est de 120 jours (120d
).Dans la console Google Cloud, accédez à la page Modèles d'instances.
Cliquez sur Créer un modèle d'instance.
Sélectionnez l'emplacement comme suit :
- Si vous souhaitez utiliser le modèle d'instance dans plusieurs régions, sélectionnez Global.
- Si vous souhaitez réduire la dépendance interrégionale, sélectionnez Régional.
Si vous avez choisi régional, sélectionnez la région dans laquelle vous souhaitez créer votre modèle d'instance.
Dans la section Règles de disponibilité, développez Paramètres avancés du modèle de provisionnement de VM.
Dans le champ Type de délai, sélectionnez Par date pour spécifier le délai sous la forme d'un code temporel (date et heure). Dans le champ suivant, cliquez sur
Sélectionner une date et une heure, puis sélectionnez la date, l'heure et le fuseau horaire pour l'arrêt automatique.Dans la liste À l'arrêt de la VM, sélectionnez Supprimer.
Pour les autres champs, acceptez les valeurs par défaut ou modifiez-les si nécessaire.
Cliquez sur Créer.
INSTANCE_TEMPLATE_NAME
: nom du modèle d'instance.TIME
: heure à laquelle cette VM doit être arrêtée automatiquement. L'heure que vous spécifiez doit être une heure à venir, comprise entre 30 secondes et 120 jours par rapport à l'heure active. Formatez l'heure sous la forme d'un code temporel RFC 3339 :YYYY-MM-DDTHH:MM:SSOFFSET
Remplacez les éléments suivants :
YYYY-MM-DD
: date respectant la syntaxe année (valeur à quatre chiffres), mois à deux chiffres et jour à deux chiffres du mois, séparés par des traits d'union.HH:MM:SS
: heure respectant la syntaxe heures au format 2 chiffres sur 24 heures, minutes à deux chiffres et secondes à deux chiffres, séparés par des signes deux-points.OFFSET
: fuseau horaire mis en forme en tant que décalage par rapport au temps universel coordonné (UTC). Par exemple, pour utiliser l'heure normale du Pacifique (PST), soit huit heures avant l'heure UTC, spécifiez-08:00
. Pour utiliser un décalage (UTC+0), spécifiezZ
.
PROJECT_ID
: ID du projet dans lequel vous souhaitez créer le modèle d'instance.INSTANCE_TEMPLATE_NAME
: nom du modèle d'instance.MACHINE_TYPE
: type de machine prédéfini ou personnalisé pour les VM du groupe.IMAGE_PROJECT
: projet contenant l'image, par exemple,debian-cloud
.IMAGE
ouIMAGE_FAMILY
: spécifiez l'un des éléments suivants :IMAGE
: version spécifique de l'image de l'OS. Exemple :debian-10-buster-v20200309
.IMAGE_FAMILY
: famille d'images. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiezfamily/debian-10
, la dernière version de la famille d'images Debian 10 est utilisée.
TIME
: heure à laquelle cette VM doit être arrêtée automatiquement. L'heure que vous spécifiez doit être une heure à venir, comprise entre 30 secondes et 120 jours par rapport à l'heure active. Formatez l'heure sous la forme d'un code temporel RFC 3339 :YYYY-MM-DDTHH:MM:SSOFFSET
Remplacez les éléments suivants :
YYYY-MM-DD
: date respectant la syntaxe année (valeur à quatre chiffres), mois à deux chiffres et jour à deux chiffres du mois, séparés par des traits d'union.HH:MM:SS
: heure respectant la syntaxe heures au format 2 chiffres sur 24 heures, minutes à deux chiffres et secondes à deux chiffres, séparés par des signes deux-points.OFFSET
: fuseau horaire mis en forme en tant que décalage par rapport au temps universel coordonné (UTC). Par exemple, pour utiliser l'heure normale du Pacifique (PST), soit huit heures avant l'heure UTC, spécifiez-08:00
. Pour utiliser un décalage (UTC+0), spécifiezZ
.
Limite de temps sous la forme d'une durée d'exécution (
maxRunDuration
):terminationTimestamp
d'une VM = dernière création ou heure de début de la VM +maxRunDuration
Lorsque vous spécifiez une durée, l'horodatage de fin est défini par rapport à la dernière heure de création ou de début de la VM. Si la VM est recréée, redémarrée, reprise ou remplacée, l'horodatage de fin est recalculé. Le code temporel d'arrêt peut varier entre les VM d'un MIG en fonction de l'heure à laquelle chaque VM a été créée ou démarrée pour la dernière fois. Par exemple, si une VM est réparée, l'horodatage de fin de la VM est recalculé en ajoutant la durée à l'heure à laquelle la VM a été recréée lors de la réparation.
Limite de temps en tant qu'heure de fin (
terminationTime
):terminationTimestamp
d'une VM =terminationTime
Lorsque vous spécifiez une heure, l'horodatage de fin est défini sur cette heure, à condition qu'elle soit future. Si l'heure d'arrêt est passée, toute action MIG qui tente de créer, de redémarrer ou de remplacer une VM échoue et renvoie une erreur. Pour résoudre ce problème, vous devez créer un nouveau modèle d'instance avec une heure d'arrêt ultérieure et appliquer ce modèle au MIG. Si vous souhaitez utiliser les propriétés de modèle existantes dans le nouveau modèle, créez un modèle d'instance basé sur le modèle existant.
- Découvrez les scénarios de base pour la création de MIG.
- Découvrez comment appliquer un nouveau modèle d'instance à un MIG existant.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Limiter l'exécution des VM dans un MIG
Vous pouvez limiter l'exécution des VM dans un MIG en spécifiant une limite de temps dans le modèle d'instance utilisé pour le MIG. Lorsque le MIG crée des VM basées sur le modèle, la limite de temps est appliquée à chaque VM.
Vous pouvez spécifier l'un des deux types de limites de temps suivants:
Pour spécifier une limite de temps pour les VM d'un MIG, procédez comme suit:
Limites
Créer un modèle d'instance avec une durée d'exécution pour les VM
Pour arrêter automatiquement les VM d'un MIG après une certaine durée d'exécution, définissez une durée d'exécution maximale (
maxRunDuration
) dans le modèle d'instance.Console
gcloud
Exécutez la commande
instance-templates create
. Pour supprimer automatiquement les VM après une durée spécifique, incluez l'option--max-run-duration
et définissez l'option--instance-termination-action
surDELETE
comme suit :gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --max-run-duration=DURATION \ --instance-termination-action=DELETE
Remplacez les éléments suivants :
Terraform
Pour créer un modèle d'instance à l'aide de Terraform, utilisez la ressource
google_compute_instance_template
. Pour créer un modèle d'instance qui supprime automatiquement les VM après une durée spécifique, vous devez inclure l'argumentmax_run_duration
et définir l'argumentinstance_termination_action
surDELETE
.Pour en savoir plus, consultez la documentation Terraform de la ressource
google_compute_instance_template
.REST
Exécutez la méthode
instanceTemplates.insert
. Pour supprimer automatiquement les VM après une durée spécifique, incluez le champmaxRunDuration
et définissez le champinstanceTerminationAction
surDELETE
comme suit :POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default", "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ] "scheduling": { "maxRunDuration": { "seconds": DURATION }, "instanceTerminationAction": "DELETE" } } }
Remplacez les éléments suivants :
Créer un modèle d'instance avec une heure d'arrêt pour les VM
Pour arrêter automatiquement les VM d'un MIG à une heure spécifique, définissez une heure d'arrêt (
terminationTime
) dans le modèle d'instance. Vous pouvez définir une date et une heure auxquelles vous souhaitez qu'un MIG arrête les VM.Console
gcloud
Exécutez la commande
instance-templates create
. Pour supprimer automatiquement des VM à une heure spécifique, incluez l'option--termination-time
et définissez l'option--instance-termination-action
surDELETE
comme suit :gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --termination-time=TIME \ --instance-termination-action=DELETE
Remplacez les éléments suivants :
REST
Exécutez la méthode
instanceTemplates.insert
. Pour supprimer automatiquement des VM à une heure spécifique, incluez le champterminationTime
et définissez le champinstanceTerminationAction
surDELETE
comme suit :POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default", "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ] "scheduling": { "terminationTime": TIME, "instanceTerminationAction": "DELETE" } } }
Remplacez les éléments suivants :
Fonctionnement du délai pour les VM dans un MIG
Lorsque vous spécifiez une limite de temps pour les VM d'un MIG, l'heure à laquelle un MIG arrêtera une VM est automatiquement définie dans le champ de code temporel d'arrêt (
terminationTimestamp
) de la VM.En fonction du type de délai que vous spécifiez, l'horodatage d'arrêt d'une VM est défini comme suit:
Lors d'une actualisation de VM, le code temporel d'arrêt ne change pas. Par exemple, si vous définissez le niveau de perturbation pour les mises à jour sur
REFRESH
, l'horodatage de fin est conservé chaque fois que le MIG met à jour la VM.Lorsque vous suspendez ou arrêtez une VM dans un MIG, le code temporel d'arrêt est automatiquement effacé, quel que soit le type de limite de temps. Lorsque vous reprenez ou démarrez une VM, l'horodatage de fin est défini à nouveau en fonction du type de limite de temps, comme expliqué précédemment dans cette section.
Fonctionnement de l'autoscaling lorsqu'une limite de temps est définie
L'autoscaling permet à votre MIG d'ajouter ou de supprimer automatiquement des VM en fonction de l'augmentation ou de la diminution de la charge. Lorsqu'un MIG supprime des VM qui ont atteint leur code temporel d'arrêt, il crée des VM pour maintenir la taille recommandée par l'autoscaler. Les nouvelles VM s'exécutent pendant la durée spécifiée. Si la recommandation de l'autoscaler est de réduire le nombre de VM, le MIG supprime les VM même avant qu'elles n'atteignent leurs limites de temps.
Si vous avez configuré des horaires de mise à l'échelle, les VM ne s'exécutent que jusqu'à la fin d'un calendrier ou jusqu'à ce qu'une VM atteigne son code temporel d'arrêt, selon la première éventualité.
Étapes suivantes
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/22 (UTC).
-