Quelles sont les bonnes pratiques à adopter pour utiliser les instances Spot EC2 avec Amazon EKS ?

Date de la dernière mise à jour : 22/12/2021

Je souhaite utiliser des instances Spot d'Amazon Elastic Compute Cloud (Amazon EC2) avec mon Amazon Elastic Kubernetes Service (Amazon EKS). Quelles sont les bonnes pratiques ?

Brève description

Les indications suivantes constituent des bonnes pratiques pour l'utilisation des instances Spot Amazon EC2 avec votre Amazon EKS :

  • N'utilisez pas les instances Spot pour les tâches de longue durée ou les applications avec état.
  • Utilisez des groupes de nœuds gérés avec des instances Spot.
  • Ajoutez plusieurs types d'instance aux groupes de nœuds.
  • Utilisez AWS Node Termination Handler pour les groupes de nœuds autogérés.

Résolution

N'utilisez pas les instances Spot pour les tâches de longue durée ou les applications avec état.

La courte durée de vie d'une instance Spot peut entraîner des arrêts indésirables de tâches de longue durée. Ce comportement peut également affecter les applications avec état, car ces dernières ne peuvent pas tolérer les arrêts. Privilégiez plutôt les instances à la demande pour les tâches de longue durée.

Utiliser des groupes de nœuds gérés avec des instances Spot

Vous pouvez définir le type de capacité d'un groupe de nœuds gérés en tant qu'instance Spot. Le groupe de nœuds gérés configure ensuite un groupe Auto Scaling pour utiliser la fonction de rééquilibrage de capacité EC2 Auto Scaling. Lorsque la fonction de rééquilibrage de capacité EC2 Auto Scaling est activée et qu'un nœud Spot reçoit une recommandation de rééquilibrage, Amazon EKS tente de remplacer ce nœud.

Une fois que le nouveau nœud Spot est prêt, Amazon EKS sépare et vide le nœud Spot précédent. Cette opération peut contribuer à réduire le risque de corruption des volumes Amazon Elastic Block Store (Amazon EBS) ou d'interruption des connexions à la base de données.

Ajouter plusieurs types d'instance à des groupes de nœuds

Chaque groupe d'instances Spot se compose d'une capacité d'instance EC2 inutilisée pour un type d'instance spécifique dans une zone de disponibilité donnée. Lorsqu'un groupe de nœuds tente d'allouer un nouveau nœud, il utilise l'un des types d'instance définis dans sa configuration. Si les types d'instance ne disposent de capacité Spot dans aucune des zones de disponibilité, le groupe de nœuds ne parvient pas à se mettre à l'échelle et se dégrade.

Pour éviter ce problème, augmentez le nombre de types d'instances similaires dans le groupe de nœuds. Par exemple, pour un type d'instance m5.large (2 vCPU/8 Gio de RAM), ajoutez celles avec les mêmes valeurs vCPU et RAM, notamment m5a.large, m5n.large et m4.large.

Utiliser AWS Node Termination Handler pour les groupes de nœuds autogérés

Le gestionnaire AWS Node Termination Handler (du site GitHub) est déployé sur un cluster Amazon EKS en tant que déploiement ou DaemonSet. Le gestionnaire AWS Node Termination Handler ajoute aux groupes de nœuds autogérés des capacités qui leur font défaut. Ce service aide les groupes de nœuds autogérés à détecter et à répondre de manière appropriée aux événements de maintenance EC2, aux avis d'interruption de service, aux événements de mise à l'échelle du groupe Auto Scaling et aux rééquilibrages de la zone de disponibilité. Utilisez l'option Processeur de file d'attente pour ajouter chaque fonction AWS Node Termination Handler au groupe de nœuds autogéré.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?