Ce document explique comment créer un groupe d'instances géré (MIG) qui utilise des VM Spot.
Les VM Spot sont des instances de machines virtuelles (VM) que vous pouvez obtenir à un prix très réduit. Toutefois, Compute Engine peut arrêter ou supprimer les VM Spot à tout moment pour récupérer de la capacité. Utilisez des VM Spot pour exécuter des charges de travail tolérantes aux pannes, telles que des tâches de traitement par lot ou des applications sans état, à faible coût.
Pour découvrir d'autres méthodes de création de MIG, consultez Scénarios de base pour la création d'un MIG.
Avant de commencer
- En savoir plus sur les VM Spot, en particulier sur les limites
- Vérifiez que vous disposez d'un quota suffisant pour les ressources que vous souhaitez demander. Pour en savoir plus, consultez Quotas d'allocation.
-
Avant de créer des VM Spot pour une charge de travail, procédez comme suit :
Configurez votre charge de travail pour gérer la préemption. Plus précisément, nous vous recommandons de préparer un script pour gérer la préemption, qui s'exécute dans le cadre de votre charge de travail ou qui est un fichier que vous pouvez ajouter aux métadonnées de la VM pour qu'il s'exécute lors de l'arrêt. Pour obtenir des instructions, consultez Gérer la préemption des VM Spot.
Nous vous recommandons vivement de consulter les données des VM Spot pour vous aider à choisir un type de machine et un emplacement. En sélectionnant un type de machine et un emplacement avec une plus grande disponibilité des ressources, vous pouvez augmenter vos chances d'éviter les erreurs de disponibilité des ressources et de bénéficier d'une durée de disponibilité plus longue avant la préemption.
Pour obtenir des données historiques sur la préemption et les tarifs, qui sont particulièrement utiles pour planifier des charges de travail à long terme, consultez Afficher le taux de préemption et les données tarifaires pour les VM Spot.
Pour obtenir des données de disponibilité actuelles, qui sont particulièrement utiles juste avant de créer des VM Spot pour des charges de travail à court terme, consultez Afficher la disponibilité des VM Spot.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification permet 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 :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud , vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :
gcloud initSi vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
- Définissez une région et une zone par défaut.
REST
Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.
Installez la Google Cloud CLI.
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .
Rôles requis
Pour obtenir les autorisations nécessaires à la création de MIG utilisant des VM spot, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur le projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour créer des MIG qui utilisent des VM spot. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer des MIG qui utilisent des VM Spot :
-
Pour créer un modèle d'instance :
compute.instanceTemplates.createsur le projet. -
Pour créer un MIG :
compute.instanceGroupManagers.createsur le projet
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer un MIG utilisant des VM Spot
Pour créer un MIG qui utilise des VM Spot, vous devez procéder comme suit :
Créer un modèle d'instance configuré pour créer des VM Spot
Pour créer un modèle d'instance configuré pour créer des VM Spot, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page Modèles d'instances.
Cliquez sur Créer un modèle d'instance. La page Créer un modèle d'instance s'affiche.
Dans le champ Nom, saisissez un nom pour le modèle d'instance.
Dans la section Emplacement, sélectionnez le type de modèle d'instance que vous souhaitez créer :
Pour un modèle d'instance régional, sélectionnez Régional, puis sélectionnez la région dans laquelle créer votre modèle. En fonction du type de machine que vous souhaitez que vos VM Spot utilisent, spécifiez une région prise en charge.
Pour un modèle d'instance global, sélectionnez Global.
Dans la section Configuration de la machine, sélectionnez une série de machines compatible avec les VM spot.
Dans la section Modèle de provisionnement, procédez comme suit :
Dans la liste Modèle de provisionnement de VM, sélectionnez Spot. La section Paramètres avancés du modèle de provisionnement de VM se développe.
Dans la liste Durée de la notification de préemption, sélectionnez une option en fonction de la façon dont vous souhaitez gérer la préemption.
Si vous sélectionnez 120 secondes (recommandé), assurez-vous de gérer la préemption dans votre charge de travail avant de créer une VM Spot. Par exemple, vérifiez que votre charge de travail inclut un script permettant d'enregistrer votre progression et qui attend d'être exécuté jusqu'à ce qu'une préemption soit détectée.
Si vous sélectionnez 0 seconde (par défaut), assurez-vous de gérer la préemption à l'aide d'un script d'arrêt. Avant de créer une VM Spot, créez un fichier contenant un script d'arrêt qui enregistre votre progression lorsque l'arrêt est dû à la préemption. Associez ce script d'arrêt comme expliqué dans une étape ultérieure.
Pour spécifier si les VM spot doivent être arrêtées ou supprimées en cas de préemption, sélectionnez l'une des options suivantes dans la liste À l'arrêt de la VM :
Pour arrêter les VM Spot, sélectionnez Arrêter.
Pour supprimer des VM spot, sélectionnez Supprimer.
Pour ajouter un script d'arrêt, procédez comme suit. Si vous avez sélectionné 0 seconde (par défaut) pour la Durée de la notification de préemption, cette étape est nécessaire pour gérer la préemption. Sinon, si vous avez sélectionné 120 secondes, cette étape est facultative.
- Développez la section Options avancées.
- Développez la section Gestion.
- Dans la section Métadonnées, cliquez sur Ajouter un élément.
- Dans le champ Clé, saisissez
shutdown-scriptcomme clé de métadonnées. - Dans le champ Valeur, ajoutez le contenu d'un script d'arrêt qui gère la préemption.
Facultatif : pour modifier le type ou l'image de disque de démarrage par défaut, cliquez sur Modifier dans la section Disque de démarrage. Suivez ensuite les instructions pour modifier le disque de démarrage.
Cliquez sur Créer.
gcloud
Pour créer un modèle d'instance configuré pour créer des VM Spot, utilisez la commande gcloud compute instance-templates create.
La commande suivante crée un modèle d'instance régional. Si vous souhaitez créer un modèle d'instance global, utilisez la même commande sans le flag --instance-template-region.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--instance-template-region=REGION \
--instance-termination-action=TERMINATION_ACTION \
--machine-type=MACHINE_TYPE \
--provisioning-model=SPOT \
--preemption-notice-duration=PREEMPTION_NOTICE_DURATION \
--metadata shutdown-script=SHUTDOWN_SCRIPT
Remplacez les éléments suivants :
INSTANCE_TEMPLATE_NAME: nom du modèle d'instance à créer.IMAGE_PROJECT: projet contenant l'image, par exemple,debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.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écifiezdebian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.REGION: région dans laquelle créer le modèle d'instance. En fonction du type de machine que vous souhaitez que les VM Spot utilisent, spécifiez une région prise en charge.TERMINATION_ACTION: indique si Compute Engine arrête ou supprime les VM Spot en cas de préemption. Vous devez spécifier si vous souhaitez arrêter (STOP) ou supprimer (DELETE) les VM.MACHINE_TYPE: type de machine compatible avec les VM Spot. Si vous spécifiez un type de machine N1, vous devez inclure l'option--acceleratorpour définir le nombre et le type de GPU à associer à vos VM.PREEMPTION_NOTICE_DURATION: indique si une durée de préavis de préemption doit être activée. Pour gcloud CLI, la valeur doit être120sou0s.Si vous spécifiez
120s(recommandé), gérez la préemption dans votre charge de travail. (Vous pouvez également spécifier un script d'arrêt.)Si vous spécifiez
0s(valeur par défaut), gérez la préemption dans un script d'arrêt.
SHUTDOWN_SCRIPT: script d'arrêt.Si vous définissez
PREEMPTION_NOTICE_DURATIONsur0s(valeur par défaut), vous devez spécifier un script d'arrêt pour gérer la préemption. Pour savoir comment mettre en forme et spécifier un script d'arrêt, consultez Exécuter des scripts d'arrêt.Sinon, si vous ne souhaitez pas spécifier de script d'arrêt, vous pouvez supprimer l'option
--metadata shutdown-script.
REST
Pour créer un modèle d'instance configuré pour créer des VM Spot, envoyez l'une des requêtes POST suivantes :
Pour créer un modèle d'instance régional : méthode
regionInstanceTemplates.insertPour créer un modèle d'instance global : méthode
instanceTemplates.insert
Par exemple, pour créer un modèle d'instance régional, envoyez une requête comme suit :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"machineType": "MACHINE_TYPE",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"instanceTerminationAction": "TERMINATION_ACTION",
"provisioningModel": "SPOT",
"preemptionNoticeDuration": { "seconds": PREEMPTION_NOTICE_DURATION }
},
"metadata": {
"items": [
{
"key": "shutdown-script",
"value": "SHUTDOWN_SCRIPT"
}
]
}
}
}
Remplacez les éléments suivants :
PROJECT_ID: ID du projet dans lequel créer le modèle d'instance.REGION: région dans laquelle créer le modèle d'instance. En fonction du type de machine que vous souhaitez que les VM Spot utilisent, spécifiez une région prise en charge.INSTANCE_TEMPLATE_NAME: nom du modèle d'instance.IMAGE_PROJECT: projet contenant l'image, par exemple,debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.IMAGE: spécifiez l'une des options suivantes :Une version spécifique de l'image de l'OS. Exemple :
debian-12-bookworm-v20240617.Une famille d'images, qui doit être au format
family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiezfamily/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.
MACHINE_TYPE: type de machine compatible avec les VM Spot. Si vous spécifiez un type de machine N1, vous devez inclure le champguestAcceleratorspour définir le nombre et le type de GPU à associer à vos VM.TERMINATION_ACTION: indique si Compute Engine arrête ou supprime les VM Spot en cas de préemption. Vous devez spécifier si vous souhaitez arrêter (STOP) ou supprimer (DELETE) les VM.PREEMPTION_NOTICE_DURATION: indique si une durée de préavis de préemption doit être activée. Pour REST, la valeur doit être120ou0.Si vous spécifiez
120(recommandé), gérez la préemption dans votre charge de travail. (Vous pouvez également spécifier un script d'arrêt.)Si vous spécifiez
0(valeur par défaut), gérez la préemption dans un script d'arrêt.
SHUTDOWN_SCRIPT: script d'arrêt.Si vous définissez
PREEMPTION_NOTICE_DURATIONsur0s(valeur par défaut), vous devez spécifier un script d'arrêt pour gérer la préemption. Pour savoir comment mettre en forme et spécifier un script d'arrêt, consultez Exécuter des scripts d'arrêt.Sinon, si vous ne souhaitez pas spécifier de script d'arrêt, vous pouvez supprimer le champ
metadataet ses sous-champs.
TERMINATION_ACTION(facultatif) : spécifiez l'action de terminaison à effectuer lorsque Compute Engine préempte la VM, soitSTOP(comportement par défaut) soitDELETE.
Une fois créé, vous pouvez consulter les détails du modèle d'instance pour examiner ses propriétés.
Créer un MIG régional ou zonal
Pour créer un MIG régional ou zonal, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page Groupes d'instances.
Cliquez sur Créer un groupe d'instances. La page Créer un groupe d'instances s'ouvre.
Dans le champ Nom, saisissez un nom pour le MIG.
Dans la liste Modèle d'instance, sélectionnez le modèle d'instance que vous avez créé à l'étape précédente.
Dans le champ Nombre d'instances, saisissez le nombre de VM spot à créer dans le MIG. Si votre charge de travail nécessite des VM avec des noms spécifiques, saisissez
0pour ignorer la création de VM à cette étape. Une fois le MIG créé, ajoutez-y des VM avec des noms spécifiques.Dans la section Emplacement, indiquez si vous souhaitez créer un MIG zonal ou régional :
Pour créer un MIG zonal, sélectionnez Zone unique. Pour créer un MIG régional, sélectionnez Plusieurs zones.
Sélectionnez la région et les zones du MIG.
Cliquez sur Créer.
gcloud
Pour créer un MIG, utilisez la commande gcloud compute instance-groups managed create.
En fonction du type de MIG que vous souhaitez créer, incluez les indicateurs suivants dans la commande :
Pour créer un MIG zonal, incluez l'indicateur
--zone:gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_URL \ --zone=ZONEPour créer un MIG régional, incluez l'indicateur
--region:gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_URL \ --region=REGION
Remplacez les éléments suivants :
INSTANCE_GROUP_NAME: nom du MIG.INSTANCE_TEMPLATE_URL: URL du modèle d'instance que vous avez créé dans la section précédente. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :Pour un modèle d'instance régional :
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_IDPour un modèle d'instance global :
INSTANCE_TEMPLATE_ID
SIZE: nombre de VM Spot à créer dans le MIG. Si votre charge de travail nécessite des noms de VM spécifiques, spécifiez0pour ignorer la création de VM à ce stade. Une fois le MIG créé, ajoutez-y des VM avec des noms spécifiques.ZONE: zone dans laquelle créer le MIG zonal. Si vous utilisez un modèle d'instance régional pour créer le MIG, vous devez spécifier une zone dans la même région que le modèle.REGION: région dans laquelle créer le MIG régional. Si vous utilisez un modèle d'instance régional pour créer le MIG, vous devez spécifier la même région que celle du modèle.
REST
Pour créer un MIG, envoyez une requête POST à l'une des méthodes suivantes :
Pour créer un MIG zonal, envoyez une requête
POSTà la méthodeinstanceGroupManagers.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "targetSize": SIZE }Pour créer un MIG régional, envoyez une requête
POSTà la méthoderegionInstanceGroupManagers.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "instanceTemplate": "INSTANCE_TEMPLATE_URL", "targetSize": SIZE }
Remplacez les éléments suivants :
PROJECT_ID: ID du projet dans lequel créer le MIG régional ou zonal.ZONE: zone dans laquelle créer le MIG zonal. Si vous utilisez un modèle d'instance régional pour créer le MIG, vous devez spécifier une zone dans la même région que le modèle.REGION: région dans laquelle créer le MIG régional. Si vous utilisez un modèle d'instance régional pour créer le MIG, vous devez spécifier la même région que celle du modèle.INSTANCE_GROUP_NAME: nom du MIG.INSTANCE_TEMPLATE_URL: URL du modèle d'instance que vous avez créé dans la section précédente. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :Pour un modèle d'instance régional :
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_IDPour un modèle d'instance global :
INSTANCE_TEMPLATE_ID
SIZE: nombre de VM Spot à créer dans le MIG. Si votre charge de travail nécessite des noms de VM spécifiques, spécifiez0pour ignorer la création de VM à cette étape. Après avoir créé le MIG, ajoutez-y des VM avec des noms spécifiques.
Une fois le MIG créé, vous pouvez afficher ses détails pour examiner ses propriétés.
Étapes suivantes
En savoir plus sur les bonnes pratiques pour les VM Spot
En savoir plus sur la réparation des VM pour la haute disponibilité dans les MIG
En savoir plus sur l'autoscaling des VM dans les MIG
En savoir plus sur les MIG avec état