Instances ponctuelles
Les instances ponctuelles sont des versions très réduites des instances standard. Ils sont conçus pour utiliser les ressources informatiques disponibles pour des charges de travail interruptibles ou sans état. Les instances Spot peuvent être préemptées (ou expulsées) à tout moment.
Avec les instances Spot, vous pouvez choisir le profil compatible le mieux adapté aux caractéristiques de votre charge de travail, à vos besoins en termes de performances et à votre niveau de prix. Les instances ponctuelles sont idéales pour les charges de travail interruptibles et tolérantes aux pannes, car IBM Cloud VPC préempte ces instances en fonction de la demande de ressources.
Les instances Spot sont idéales pour les charges de travail suivantes, sans toutefois s'y limiter.
- Serveurs de test de développement
- Analyse de données
- Rendu d'image
- Conteneurisation
- Traitement par lots
Avantages de l'instance de repérage
Les instances ponctuelles présentent les avantages suivants.
- Coût-efficacité
- Évolutif - vous pouvez ajouter ou supprimer des instances Spot grâce à la fonction Auto scale pour VPC
- Les instances Spot n'utilisent pas le quota d'instance standard. Les instances Spot ont leurs propres quotas (la valeur par défaut est de 100).
- Pas de durée d'exécution minimale
- Redimensionnable (l'instance doit être arrêtée pour pouvoir être redimensionnée)
Limites de l'instance Spot
Les instances Spot ne sont pas compatibles avec les fonctionnalités suivantes.
- Instances instables
- Hôtes dédiés
- Réservations
Détails des instances à points
- Les instances Spot ne prennent en charge que les profils GPU et les profils Flex.
- L' échelle automatique et les groupes d'instances prennent en charge les instances Spot.
- Les groupes de placement sont pris en charge, mais n'oubliez pas que l'utilisation de groupes de placement peut entraîner des erreurs de capacité.
Les instances ponctuelles ne bénéficient pas d'une garantie de capacité disponible. Si la capacité n'est pas disponible, vous pouvez essayer une autre zone ou région ou réessayer plus tard.
Les profils d'instance ont une propriété appelée availability_class qui est soit "standard", soit "spot", soit les deux. Si "spot" figure dans le tableau de valeurs, vous pouvez utiliser le profil pour créer une instance de spot.
Lorsque vous créez une instance, vous devez définir quelques nouveaux champs :
- availability.class doit être "spot"
- availability_policy.preemption peut être "stop" ou "delete" (la valeur par défaut est "stop")
Voir l'exemple suivant des propriétés d'une demande d'API.
{
"availability": {
"class": "spot"
},
"availability_policy": {
"preemption": "delete"
},
...
}
Préemption
La préemption d'une instance Spot a lieu lorsque la plateforme détermine qu'il est nécessaire d'expulser l'instance Spot. Au début de la préemption, la politique de préemption est appliquée et un délai de grâce de 30 secondes pour la préemption du meilleur effort commence. À la fin de cette période de grâce, l'instance spot est fermée de force.
La politique de préemption détermine le comportement de l'instance Spot lorsqu'elle est préemptée. La propriété availability_policy.preemption, lorsqu'elle est ajoutée aux instances prises en charge, a pour valeur "stop"
ou "delete". Cette propriété ne s'applique qu'aux cas ponctuels où availability.class = spot.
- "stop" - l'instance passe à l'état d'arrêt lorsque la préemption est terminée. Vous pouvez relancer l'instance ou la supprimer.
- "delete" - l'instance est supprimée après la préemption.
Les modifications apportées à la politique de préemption pendant une préemption ne sont pas appliquées avant la préemption suivante.
Vous êtes informé d'une préemption de deux manières.
- Une commande d'arrêt gracieux est émise dans le système d'exploitation de l'instance Spot. Cette commande d'arrêt peut faire l'objet d'une réponse programmatique au sein de l'invité.
- Lorsqu'une instance ponctuelle est sélectionnée pour la préemption, un journal destiné à l'utilisateur est envoyé au début du processus de préemption. Exemple : " instance.00002 " : "L'instance de spot {{.instanceID}} est sélectionnée pour la préemption". Après 30 secondes et si l'instance spot n'est pas encore arrêtée, un arrêt forcé est émis au sein de l'invité. Pour plus d'informations sur la journalisation, voir Journalisation pour VPC.
Les instances Spot qui sont supprimées suite à une réduction d'échelle avec un groupe d'instances ne sont pas considérées comme préemptées et la politique de préemption est donc ignorée.
Lorsqu'une instance ponctuelle est préemptée, une commande d'arrêt gracieux est envoyée au système d'exploitation de l'instance ponctuelle. Cette demande d'arrêt peut être interceptée et un script d'arrêt peut être exécuté en créant le script
d'arrêt et en l'ajoutant à un fichier de service systemd. Un exemple de script est disponible à l'adresse suivante : usr/local/bin/ibm-cloud-shutdown-script.sh.
#!/bin/bash
OUTPUT_FILE="/tmp/counter.out"
counter=0
while true; do
echo "$counter" > "$OUTPUT_FILE"
((counter++))
sleep 1
done
Ce script est un substitut pour l'exécution d'un arrêt. Pour exécuter le script à partir du fichier de service systemd, ajoutez le chemin d'accès à votre script dans le champ ExecStop du fichier de service, comme
indiqué dans l'exemple suivant.
Exemple systemd fichier de service qui se trouve à /etc/systemd/system/ibm-cloud-shutdown-script.service:
[Unit]
Description=IBM Cloud Shutdown Script
Wants=network-online.target rsyslog.service
After=network-online.target rsyslog.service
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=true
ExecStop=/usr/local/bin/ibm-cloud-shutdown-script.sh
TimeoutStopSec=0
KillMode=process
[Install]
WantedBy=multi-user.target
Le délai entre la commande d'arrêt gracieux et la commande d'arrêt forcé qui suit est de 30 secondes. Par conséquent, si un script d'arrêt est toujours en cours d'exécution après les 30 secondes, il est interrompu par l'arrêt forcé. Ce délai de grâce de 30 secondes est une tentative de meilleur effort et peut varier en fonction des circonstances.
Recréer une instance de spot en utilisant un groupe d'instances
Lorsqu'une instance spot est préemptée, si elle est membre d'un groupe d'instances, le groupe d'instances tente de créer une instance spot pour remplacer l'instance spot préemptée. La nouvelle instance de spot est créée et attachée à l'un des sous-réseaux spécifiés dans le tableau de sous-réseaux du groupe d'instances.
Si vous souhaitez recréer automatiquement une instance spot après la préemption, vous pouvez utiliser un groupe d'instances pour recréer ces instances spot.
-
Créez un modèle d'instance qui réponde à vos besoins avec les instances availability.class à
spotet availability_policy.preemption àdelete. -
Créez un groupe d'instances avec le modèle d'instance que vous avez créé.
Pour augmenter les chances de trouver de la capacité pour votre instance spot (si la capacité est limitée à une zone), spécifiez plusieurs sous-réseaux répartis dans les zones de la région pour une haute disponibilité. { :tip}
Pour maintenir vos instances préemptées dans un état d'arrêt, vous devez spécifier stop pour la configuration availability_policy.preemption_. Après la création de l'instance de spot par le groupe d'instances, vous devez soumettre
un PATCH /instance_groups/{instance_group_id}/memberships/{id} et spécifier false pour la propriété delete_instance_on_membership_delete.