Cette page explique comment créer et gérer des VM Spot, et inclut les sections suivantes :
- Créer, démarrer et identifier des VM Spot
- Détecter, gérer et tester la préemption des VM Spot
- Bonnes pratiques pour les VM Spot
Les VM Spot sont des instances de machine virtuelle (VM) dotées du modèle de provisionnement Spot. Les VM Spot sont proposées avec une remise de 60 à 91 % par rapport au prix des VM standards. Toutefois, Compute Engine peut récupérer les ressources en préemptant des VM Spot à tout moment. Les VM Spot ne sont recommandées que pour les applications tolérantes aux pannes et capables de résister à la préemption de VM. Assurez-vous que votre application peut gérer la préemption avant de décider de créer des VM Spot.
Avant de commencer
- Consultez la documentation sur les VM Spot :
- Consultez les limites et les tarifs des VM Spot.
- Pour empêcher les VM Spot de consommer vos quotas pour les processeurs, GPU et disques des VM standards, envisagez de demander un quota préemptif pour les VM Spot.
-
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 comme suit :
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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Modèle de provisionnement de VM défini sur Spot dans la console Google Cloud
--provisioning-model=SPOT
dans gcloud CLI"provisioningModel": "SPOT"
dans l'API Compute EngineAccédez à la page Créer une instance dans Google Cloud Console.
Ensuite, procédez comme suit :
- Dans la section Règles de disponibilité, sélectionnez Spot dans la liste Modèle de provisionnement de VM. Ce paramètre désactive les options de redémarrage automatique et de maintenance de l'hôte pour la VM, et active l'option d'action de terminaison.
- Facultatif : dans la liste À l'arrêt de la VM, sélectionnez ce qui se passe lorsque Compute Engine préempte la VM :
- Pour arrêter la VM pendant la préemption, sélectionnez Arrêter (sélection par défaut).
- Pour supprimer la VM pendant la préemption, sélectionnez Supprimer.
Facultatif : spécifiez d'autres options de VM. Pour en savoir plus, consultez la page Créer et démarrer une instance de VM.
Pour créer et démarrer la VM, cliquez sur Créer.
VM_NAME
: nom de la nouvelle VM.TERMINATION_ACTION
(facultatif) : spécifiez l'action à effectuer lorsque Compute Engine préempte la VM, soitSTOP
(comportement par défaut) soitDELETE
.VM_NAME
: nom de la nouvelle VM.IMAGE
: spécifiez l'une des options suivantes :IMAGE
: version spécifique d'une image publique ou de la famille d'images. Par exemple, une image spécifique est--image=debian-10-buster-v20200309
.- Une famille d'images.
Cette action crée la VM à partir de l'image d'OS la plus récente et non obsolète.
Par exemple, si vous spécifiez
--image-family=debian-10
, Compute Engine crée une VM à partir de la dernière version de l'image de l'OS dans la famille d'images Debian 10.
IMAGE_PROJECT
: projet contenant l'image. Par exemple, si vous spécifiezdebian-10
comme famille d'images, spécifiezdebian-cloud
comme projet d'image.MACHINE_TYPE
: type de machine prédéfini ou personnalisé pour la nouvelle VM.TERMINATION_ACTION
(facultatif) : spécifiez l'action à effectuer lorsque Compute Engine préempte la VM, soitSTOP
(comportement par défaut) soitDELETE
.Pour obtenir la liste des types de machines disponibles dans une zone, utilisez la commande
gcloud compute machine-types list
avec l'option--zones
.PROJECT_ID
: ID du projet dans lequel créer la VM.ZONE
: zone dans laquelle créer la VM. La zone doit également accepter le type de machine à utiliser pour la nouvelle VM.MACHINE_TYPE
: type de machine prédéfini ou personnalisé pour la nouvelle VM.VM_NAME
: nom de la nouvelle VM.IMAGE_PROJECT
: projet contenant l'image. Par exemple, si vous spécifiezdebian-10
comme famille d'images, spécifiezdebian-cloud
comme projet d'image.IMAGE
: spécifiez l'une des options suivantes :- Version spécifique d'une image publique. Par exemple, une image spécifique est
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
oùdebian-cloud
correspond àIMAGE_PROJECT
. - Une famille d'images.
Cette action crée la VM à partir de l'image d'OS la plus récente et non obsolète.
Par exemple, si vous spécifiez
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
oùdebian-cloud
a la valeurIMAGE_PROJECT
, Compute Engine crée une VM à partir de la dernière version de l'image de l'OS dans la famille d'images Debian 10.
- Version spécifique d'une image publique. Par exemple, une image spécifique est
TERMINATION_ACTION
(facultatif) : spécifiez l'action à effectuer lorsque Compute Engine préempte la VM, soitSTOP
(comportement par défaut) soitDELETE
.Accédez à la page Instances de VM.
Cliquez sur le nom de la VM que vous souhaitez modifier. La page Détails de l'instance de VM s'affiche.
Accédez à la section Gestion en bas de la page. Dans la sous-section Règles de disponibilité, vérifiez les options suivantes :
- Si le modèle de provisionnement de VM est défini sur Spot, alors la VM est une VM Spot.
- Le champ À l'arrêt de la VM indique l'action à effectuer lorsque Compute Engine préempte la VM, soit arrêter la VM, soit la supprimer.
- Sinon, si le modèle de provisionnement de VM est défini sur Standard ou — :
- Si l'option Préemption est définie sur Activé, alors la VM est une VM préemptive.
- Sinon, il s'agit d'une VM standard.
- Si le modèle de provisionnement de VM est défini sur Spot, alors la VM est une VM Spot.
Si la sortie inclut le champ
provisioningModel
défini surSPOT
, comme ci-après, alors la VM est une VM Spot.... scheduling: ... provisioningModel: SPOT instanceTerminationAction: TERMINATION_ACTION ...
Où
TERMINATION_ACTION
indique l'action à effectuer lorsque Compute Engine préempte la VM, soit l'arrêter (STOP
), soit la supprimer (DELETE
). Si le champinstanceTerminationAction
n'est pas renseigné, la valeur par défaut estSTOP
.Dans le cas contraire, si la sortie inclut le champ
provisioningModel
défini surstandard
ou si le champprovisioningModel
y est omis :- Si la sortie inclut le champ
preemptible
défini surtrue
, alors la VM est une VM préemptive. - Sinon, il s'agit d'une VM standard.
- Si la sortie inclut le champ
PROJECT_ID
: ID du projet dans lequel se trouve la VM.ZONE
: zone où se trouve la VM.VM_NAME
: nom de la VM que vous souhaitez vérifier.Si la sortie inclut le champ
provisioningModel
défini surSPOT
, comme ci-après, alors la VM est une VM Spot.{ ... "scheduling": { ... "provisioningModel": "SPOT", "instanceTerminationAction": "TERMINATION_ACTION" ... }, ... }
Où
TERMINATION_ACTION
indique l'action à effectuer lorsque Compute Engine préempte la VM, soit l'arrêter (STOP
), soit la supprimer (DELETE
). Si le champinstanceTerminationAction
n'est pas renseigné, la valeur par défaut estSTOP
.Dans le cas contraire, si la sortie inclut le champ
provisioningModel
défini surstandard
ou si le champprovisioningModel
y est omis :- Si la sortie inclut le champ
preemptible
défini surtrue
, alors la VM est une VM préemptive. - Sinon, il s'agit d'une VM standard.
- Si la sortie inclut le champ
La VM a été créée avec au moins un accès en lecture/écriture à Cloud Storage. Pour savoir comment créer une VM avec les champs d'application appropriés, consultez la documentation sur l'authentification.
Vous disposez d'un bucket Cloud Storage et de l'autorisation d'y écrire.
Copiez ou téléchargez le script d'arrêt :
Copiez le script d'arrêt précédent après avoir remplacé les éléments suivants :
PROGRAM_NAME
est le nom du processus ou du programme que vous souhaitez arrêter. Par exemple,apache2
ounginx
.LOCAL_USER
est le nom d'utilisateur sous lequel vous êtes connecté à la machine virtuelle.BUCKET_NAME
correspond au nom du bucket Cloud Storage dans lequel vous souhaitez enregistrer le fichier de point de contrôle du programme. Notez que dans ce cas, le nom du bucket ne commence pas pargs://
.
Téléchargez le script d'arrêt sur votre poste de travail local, puis remplacez les variables suivantes dans le fichier :
[PROGRAM_NAME]
est le nom du processus ou du programme que vous souhaitez arrêter. Par exemple,apache2
ounginx
.[LOCAL_USER]
est le nom d'utilisateur sous lequel vous êtes connecté à la machine virtuelle.[BUCKET_NAME]
correspond au nom du bucket Cloud Storage dans lequel vous souhaitez enregistrer le fichier de point de contrôle du programme. Notez que dans ce cas, le nom du bucket ne commence pas pargs://
.
Ajoutez le script d'arrêt à une nouvelle VM ou à une VM existante.
Dans Google Cloud Console, accédez à la page Journaux.
Sélectionnez le projet et cliquez sur Continuer.
Ajoutez
compute.instances.preempted
au champ filtre par libellé ou recherche textuelle.Vous pouvez également saisir un nom de VM pour consulter les opérations de préemption d'une VM spécifique.
Appuyez sur Entrée pour appliquer les filtres spécifiés. La console Google Cloud met à jour la liste des journaux pour n'afficher que les opérations au cours desquelles une VM a été préemptée.
Sélectionnez une opération dans la liste pour voir les détails de la VM qui a été préemptée.
SYSTEM_EVENT
: événement système issu de la sortie de la commandegcloud compute operations list
(par exemple,systemevent-xxxxxxxx
).ZONE
: zone de l'événement système, par exempleus-central1-f
PROJECT_ID
: ID de projet.ZONE
: zone.Utilisez des modèles d'instance. Plutôt que de créer des VM Spot une par une, vous pouvez utiliser des modèles d'instance pour créer plusieurs VM Spot avec les mêmes propriétés. Les modèles d'instance sont requis pour utiliser les MIG. Vous pouvez également créer plusieurs VM Spot à l'aide de l'API d'instances groupées.
Utilisez des MIG pour assurer la distribution régionale et la recréation automatique des VM Spot. Utilisez les MIG pour rendre les charges de travail sur les VM Spot plus flexibles et résilientes. Par exemple, utilisez des MIG régionaux pour répartir les VM sur plusieurs zones, ce qui permet de limiter les erreurs de disponibilité des ressources. De plus, utilisez l'autoréparation pour recréer automatiquement les VM Spot après leur préemption.
Choisissez des types de machines plus petits. Les ressources des VM Spot proviennent de la capacité excédentaire et de sauvegarde de Google Cloud. La capacité des VM Spot est souvent plus facile à obtenir pour des types de machines plus petits, c'est-à-dire qui disposent de moins de ressources, comme les vCPU (processeurs virtuels) et la mémoire. Vous pouvez augmenter la capacité des VM Spot en sélectionnant un type de machine personnalisé plus petit, mais la probabilité d'obtention de capacité est encore plus élevée en optant pour des types de machines prédéfinis plus petits. Par exemple, par rapport à la capacité du type de machine prédéfini
n2-standard-32
, la capacité du type de machine personnalisén2-custom-24-96
présente certes une bonne probabilité, mais celle associée à la capacité du type de machine prédéfinin2-standard-16
est encore plus élevée.Exécutez les grands clusters de VM Spot pendant les heures creuses. La charge sur les centres de données Google Cloud varie en fonction de l'emplacement et de l'heure de la journée, mais est généralement plus faible la nuit et le week-end. Par conséquent, la nuit et le week-end sont les meilleurs moments pour exécuter de grands clusters de VM Spot.
Concevez des applications tolérantes aux erreurs et à la préemption. Il est important de prévoir que des changements se produisent dans les schémas de préemption à différents moments. Par exemple, en cas de panne partielle d'une zone, un grand nombre de VM Spot peuvent être préemptées pour libérer de l'espace pour les VM standards à déplacer dans le cadre de la reprise. Dans ce petit intervalle de temps, le taux de préemption sera très différent de celui d'un autre jour. Si votre application suppose que les préemptions sont toujours effectuées par petits groupes, vous ne serez peut-être pas préparé à un tel événement.
Réessayez de créer des VM Spot qui ont été préemptées. Si vos VM Spot ont été préemptées, il est conseillé de réessayer de créer une ou deux fois des VM Spot avant de revenir aux VM standards. Selon vos besoins, il peut être judicieux de combiner des VM standards et des VM Spot dans vos clusters pour vous assurer que le travail se déroule à la cadence appropriée.
Utilisez des scripts d'arrêt. Gérez les notifications d'arrêt et de préemption à l'aide d'un script d'arrêt qui peut enregistrer la progression d'une tâche et permettre de la reprendre là où elle s'était arrêtée, plutôt que de tout recommencer à zéro.
- Connectez-vous à votre instance de VM.
- Apprenez-en plus sur les scripts d'arrêt.
- Découvrez comment limiter l'environnement d'exécution d'une VM.
- Apprenez-en plus sur les modèles d'instance.
- Apprenez-en plus sur les MIG.
Terraform
Pour utiliser les exemples Terraform de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
Pour en savoir plus, consultez Set up authentication for a local development environment.
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.
Créer une VM Spot
Créez une VM Spot à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Compute Engine. Une VM Spot est une VM configurée pour utiliser le modèle de provisionnement Spot :
Console
gcloud
Pour créer une VM à partir de la CLI gcloud, utilisez la commande
gcloud compute instances create
. Pour créer des VM Spot, vous devez inclure l'option--provisioning-model=SPOT
. Vous pouvez également spécifier une action d'arrêt pour les VM Spot en incluant l'option--instance-termination-action
.gcloud compute instances create VM_NAME \ --provisioning-model=SPOT \ --instance-termination-action=TERMINATION_ACTION
Remplacez les éléments suivants :
Pour en savoir plus sur les options que vous pouvez spécifier lors de la création d'une VM, consultez la page Créer et démarrer une instance de VM. Par exemple, pour créer des VM Spot avec un type de machine et une image spécifiés, utilisez la commande suivante :
gcloud compute instances create VM_NAME \ --provisioning-model=SPOT \ [--image=IMAGE | --image-family=IMAGE_FAMILY] \ --image-project=IMAGE_PROJECT \ --machine-type=MACHINE_TYPE \ --instance-termination-action=TERMINATION_ACTION
Remplacez les éléments suivants :
Terraform
Vous pouvez utiliser une ressource Terraform pour créer une instance Spot à l'aide d'un bloc de planification.
REST
Pour créer une VM à partir de l'API Compute Engine, utilisez la méthode
instances.insert
. Vous devez spécifier un type de machine et un nom pour la VM. Vous pouvez également spécifier une image pour le disque de démarrage.Pour créer des VM Spot, vous devez inclure le champ
"provisioningModel": spot
. Vous pouvez également spécifier une action d'arrêt pour les VM Spot en incluant le champ"instanceTerminationAction"
.POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME
", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ] "scheduling": { "provisioningModel": "SPOT", "instanceTerminationAction": "TERMINATION_ACTION" }, ... }Remplacez les éléments suivants :
Pour en savoir plus sur les options que vous pouvez spécifier lors de la création d'une VM, consultez la page Créer et démarrer une instance de VM.
Pour créer plusieurs VM Spot avec les mêmes propriétés, vous pouvez créer un modèle d'instance et utiliser celui-ci pour créer un groupe d'instances géré (MIG). Pour en savoir plus, consultez la section Bonnes pratiques.
Démarrer les VM Spot
Comme les autres VM, les VM Spot démarrent lors de la création. De même, si les VM Spot sont arrêtées, vous pouvez redémarrer les VM pour qu'elles reprennent l'état
RUNNING
. Vous pouvez arrêter et redémarrer les VM Spot préemptées autant de fois que vous le souhaitez tant qu'elles disposent d'une capacité suffisante. Pour en savoir plus, consultez la page Cycle de vie des instances de VM.Si Compute Engine arrête une ou plusieurs VM Spot dans un groupe d'instances géré soumis à l'autoscaling ou dans un cluster Google Kubernetes Engine (GKE), le groupe redémarre les VM lorsque les ressources sont à nouveau disponibles.
Identifier le modèle de provisionnement et l'action d'arrêt d'une VM
Identifiez le modèle de provisionnement d'une VM pour vérifier s'il s'agit d'une VM standard, d'une VM spot ou d'une VM préemptive. Pour une VM Spot, vous pouvez également identifier l'action d'arrêt. Vous pouvez identifier le modèle de provisionnement et l'action d'arrêt d'une VM en utilisant la console Google Cloud, gcloud CLI ou l'API Compute Engine.
Console
gcloud
Pour décrire une VM à partir de la CLI gcloud, utilisez la commande
gcloud compute instances describe
:gcloud compute instances describe VM_NAME
où
VM_NAME
est le nom de la VM à vérifier.Dans la sortie, vérifiez le champ
scheduling
afin d'identifier la VM :REST
Pour décrire une VM à partir de l'API Compute Engine, utilisez la méthode
instances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Remplacez les éléments suivants :
Dans la sortie, vérifiez le champ
scheduling
afin d'identifier la VM :Gérer la préemption avec un script d'arrêt
Lorsque vos VM Spot sont préemptées par Compute Engine, vous pouvez utiliser un script d'arrêt pour effectuer des actions de nettoyage avant que chaque VM ne soit préemptée. Par exemple, vous pouvez arrêter normalement un processus en cours et copier un fichier de point de contrôle dans Cloud Storage.
Voici un exemple de script d'arrêt que vous pouvez ajouter à l'exécution des VM Spot ou ajouter lors de la création de VM Spot. Ce script s'exécute lorsque la VM commence à s'arrêter, avant que la commande
kill
normale du système d'exploitation ne mette fin à tous les processus restants. Une fois qu'il a arrêté de manière optimale le programme souhaité, le script effectue un téléchargement parallèle d'un fichier de point de contrôle dans un bucket Google Cloud Storage.#!/bin/bash MY_PROGRAM="PROGRAM_NAME" # For example, "apache2" or "nginx" MY_USER="LOCAL_USER" CHECKPOINT="/home/$MY_USER/checkpoint.out" GSUTIL_OPTS="-m -o GSUtil:parallel_composite_upload_threshold=32M" BUCKET_NAME="BUCKET_NAME" # For example, "my-checkpoint-files" (without gs://) echo "Shutting down! Seeing if ${MY_PROGRAM} is running." # Find the newest copy of $MY_PROGRAM PID="$(pgrep -n "$MY_PROGRAM")" if [[ "$?" -ne 0 ]]; then echo "${MY_PROGRAM} not running, shutting down immediately." exit 0 fi echo "Sending SIGINT to $PID" kill -2 "$PID" # Portable waitpid equivalent while kill -0 "$PID"; do sleep 1 done echo "$PID is done, copying ${CHECKPOINT} to gs://${BUCKET_NAME} as ${MY_USER}" su "${MY_USER}" -c "gsutil $GSUTIL_OPTS cp $CHECKPOINT gs://${BUCKET_NAME}/" echo "Done uploading, shutting down."
Ce script suppose que les conditions suivantes sont remplies :
Pour ajouter ce script à une VM, configurez-le pour qu'il fonctionne avec une application dans la VM et ajoutez-le aux métadonnées de la VM.
Détecter la préemption des VM Spot
Déterminez si les VM Spot ont été préemptées par Compute Engine à l'aide de Google Cloud Console, de la CLI gcloud ou de l'API Compute Engine.
Console
Vous pouvez vérifier si une VM a été préemptée en consultant les journaux d'activité du système.
gcloud
Utilisez la commande
gcloud compute operations list
avec un paramètre de filtre pour obtenir la liste des événements de préemption de votre projet.gcloud compute operations list \ --filter="operationType=compute.instances.preempted"
Vous pouvez éventuellement utiliser des paramètres de filtre supplémentaires pour affiner davantage les résultats. Par exemple, pour n'afficher que les événements de préemption associés aux instances appartenant à un groupe d'instances géré, exécutez la commande suivante :
gcloud compute operations list \ --filter="operationType=compute.instances.preempted AND targetLink:instances/BASE_INSTANCE_NAME"
où
BASE_INSTANCE_NAME
est le nom de base spécifié en tant que préfixe pour les noms de toutes les VM de ce groupe d'instances géré.Le résultat ressemble à ce qui suit :
NAME TYPE TARGET HTTP_STATUS STATUS TIMESTAMP systemevent-xxxxxxxx compute.instances.preempted us-central1-f/instances/example-instance-xxx 200 DONE 2015-04-02T12:12:10.881-07:00
Le type d'opération
compute.instances.preempted
indique que l'instance de VM a été préemptée. Vous pouvez utiliser la commandegcloud compute operations describe
pour obtenir plus d'informations sur une opération de préemption spécifique.gcloud compute operations describe SYSTEM_EVENT \ --zone=ZONE
Remplacez les éléments suivants :
Le résultat ressemble à ce qui suit :
... operationType: compute.instances.preempted progress: 100 selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/operations/systemevent-xxxxxxxx startTime: '2015-04-02T12:12:10.881-07:00' status: DONE statusMessage: Instance was preempted. ...
REST
Pour obtenir la liste des opérations système récentes pour un projet et une zone spécifiques, utilisez la méthode
zoneOperations.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations
Remplacez les éléments suivants :
Pour n'afficher que les opérations de préemption, vous pouvez ajouter un filtre à votre requête API :
operationType="compute.instances.preempted"
Sinon, pour afficher les opérations de préemption pour une VM spécifique, ajoutez un paramètre
targetLink
au filtre :operationType="compute.instances.preempted" AND targetLink="https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Remplacez les éléments suivants : +
PROJECT_ID
: ID du projet. +ZONE
: zone. +VM_NAME
: nom d'une VM spécifique dans cette zone et ce projet.La réponse contient la liste des opérations récentes. Par exemple, une préemption se présente comme suit :
{ "kind": "compute#operation", "id": "15041793718812375371", "name": "systemevent-xxxxxxxx", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f", "operationType": "compute.instances.preempted", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/instances/example-instance", "targetId": "12820389800990687210", "status": "DONE", "statusMessage": "Instance was preempted.", ... }
Vous pouvez également déterminer si une VM a été préemptée depuis la VM elle-même. Cette fonction est utile si vous souhaitez gérer un arrêt dû à une préemption Compute Engine différemment d'un arrêt normal dans un script d'arrêt. Pour ce faire, il vous suffit de consulter, sur le serveur de métadonnées, la valeur de
preempted
dans les métadonnées par défaut de votre VM.Par exemple, utilisez
curl
depuis votre VM pour obtenir la valeur depreempted
:curl "http://metadata.google.internal/computeMetadata/v1/instance/preempted" -H "Metadata-Flavor: Google" TRUE
Si cette valeur est
TRUE
, la VM a été préemptée par Compute Engine. Sinon, elle estFALSE
.Pour utiliser cette fonctionnalité en dehors d'un script d'arrêt, vous pouvez ajouter
?wait_for_change=true
à l'URL. Cette opération génère une requête HTTP GET suspendue qui ne renvoie les résultats que si les métadonnées ont été modifiées et que la VM a été préemptée.curl "http://metadata.google.internal/computeMetadata/v1/instance/preempted?wait_for_change=true" -H "Metadata-Flavor: Google" TRUE
Tester les paramètres de préemption
Vous pouvez simuler des événements de maintenance sur vos VM pour forcer la préemption. Utilisez cette fonctionnalité pour tester la manière dont vos applications gèrent les VM Spot. Consultez la section Simuler un événement de maintenance de l'hôte pour savoir comment tester les événements de maintenance sur vos instances.
Vous pouvez également simuler une préemption de VM en arrêtant l'instance de VM plutôt qu'en simulant un événement de maintenance. Cela évite d'atteindre les limites du quota.
Bonnes pratiques
Voici quelques bonnes pratiques pour vous aider à tirer le meilleur parti des VM Spot.
Étape suivante
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/11/22 (UTC).
-