Définir des actions pour les événements de correction du système d’exploitation AWS Fargate - Amazon EKS

Aidez à améliorer cette page

Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.

Définir des actions pour les événements de correction du système d’exploitation AWS Fargate

Amazon EKS doit régulièrement appliquer des correctifs au système d’exploitation pour les nœuds AWS Fargate afin d’assurer leur sécurité. Dans le cadre du processus d'application des correctifs, nous recyclons les nœuds pour installer les correctifs du système d'exploitation. Les tentatives de mises à jour sont réalisées de manière à avoir des répercussions minimales sur vos services. Toutefois, si les pods ne sont pas expulsés avec succès, ils doivent parfois être supprimés. Voici les actions que vous pouvez effectuer pour minimiser les perturbations potentielles :

  • Définissez des budgets de perturbation de pods (PDB) appropriés pour contrôler le nombre de pods simultanément hors service.

  • Créez des règles Amazon EventBridge pour réagir aux expulsions ayant échoué avant la suppression des pods.

  • Redémarrez manuellement vos pods concernés avant la date d’expulsion indiquée dans la notification que vous avez reçue.

  • Créez une configuration de notification dans Notifications d'utilisateur AWS.

Amazon EKS travaille en étroite collaboration avec la communauté Kubernetes pour corriger les bugs et appliquer les correctifs de sécurité le plus rapidement possible. Tous les pods Fargate démarrent sur la version la plus récente du correctif Kubernetes, disponible auprès d’Amazon EKS pour la version Kubernetes de votre cluster. Si un pod présente une ancienne version de correctif, Amazon EKS peut le recycler pour le mettre à jour à la dernière version. Cela garantit que vos pods comprennent les dernières mises à jour de sécurité. De cette façon, en cas de problème critique inhérent aux vulnérabilités et expositions courantes (CVE), vous êtes tenu à jour pour réduire les risques de sécurité.

Lorsque le système d’exploitation AWS Fargate est mis à jour, Amazon EKS vous envoie une notification indiquant les ressources concernées et la date des prochaines expulsions de pods. Si la date d’expulsion indiquée ne vous convient pas, vous avez la possibilité de redémarrer manuellement vos pods concernés avant la date d’expulsion indiquée dans la notification. Tous les pods créés avant le moment où vous recevez la notification sont susceptibles d’être expulsés. Consultez la documentation Kubernetes pour obtenir des instructions supplémentaires sur la manière de redémarrer manuellement vos pods.

Pour limiter le nombre de pods hors service simultanément lors du recyclage des pods, vous pouvez définir des budgets de perturbation des pods (PDB). Vous pouvez utiliser les PDB pour définir une disponibilité minimale en fonction des exigences de chacune de vos applications, tout en autorisant les mises à jour. La disponibilité minimale de votre PDB doit être inférieure à 100 %. Pour plus d’informations, consultez la section Spécification d’un budget de perturbation pour votre application dans la documentation Kubernetes.

Amazon EKS utilise l’API d’expulsion pour vider le pod en toute sécurité tout en respectant les PDB que vous avez définis pour l’application. Les pods sont expulsés par zone de disponibilité pour minimiser les répercussions. Si l’expulsion réussit, le nouveau pod reçoit le dernier correctif et aucune autre action n’est requise.

Lorsque l’expulsion d’un pod échoue, Amazon EKS envoie un événement à votre compte avec des informations sur les pods dont l’expulsion a échoué. Vous pouvez agir en fonction du message avant l'heure de fin prévue. Le temps spécifique varie en fonction de l'urgence du correctif. Le moment venu, Amazon EKS tente à nouveau d’expulser les pods. Toutefois, si l'expulsion échoue lors de cette tentative, un nouvel événement n'est pas envoyé. Si l’expulsion échoue à nouveau, vos pods existants sont supprimés périodiquement afin que les nouveaux pods puissent comporter le dernier correctif.

Vous trouverez ci-dessous un exemple d’événement reçu lorsque l’expulsion d’un pod échoue. Il contient des informations sur le cluster, le nom du pod, l’espace de noms du pod, le profil Fargate et l’heure de fin planifiée.

{ "version": "0", "id": "12345678-90ab-cdef-0123-4567890abcde", "detail-type": "EKS Fargate Pod Scheduled Termination", "source": "aws.eks", "account": "111122223333", "time": "2021-06-27T12:52:44Z", "region": "region-code", "resources": [ "default/my-database-deployment" ], "detail": { "clusterName": "my-cluster", "fargateProfileName": "my-fargate-profile", "podName": "my-pod-name", "podNamespace": "default", "evictErrorMessage": "Cannot evict pod as it would violate the pod's disruption budget", "scheduledTerminationTime": "2021-06-30T12:52:44.832Z[UTC]" } }

En outre, si plusieurs PDB sont associés à un pod, un événement d’échec d’expulsion peut survenir. Cet événement renvoie le message d'erreur suivant.

"evictErrorMessage": "This pod has multiple PodDisruptionBudget, which the eviction subresource does not support",

Vous pouvez créer une action souhaitée en fonction de cet événement. Par exemple, vous pouvez ajuster votre budget de perturbation de pod (PDB) pour contrôler l’expulsion des pods. Plus précisément, imaginions que vous utilisiez un PDB qui spécifie le pourcentage cible de pods disponibles. Avant que la résiliation de vos pods soit forcée lors d’une mise à niveau, vous pouvez ajuster le PDB à un pourcentage différent de pods. Pour recevoir cet événement, vous devez créer une règle Amazon EventBridge dans le compte AWS et la région AWS auxquels le cluster appartient. La règle doit utiliser le modèle personnalisé suivant. Pour plus d'informations, veuillez consulter Création d'une règle Amazon EventBridge qui réagit aux événements dans le Guide de l'utilisateur Amazon EventBridge.

{ "source": ["aws.eks"], "detail-type": ["EKS Fargate Pod Scheduled Termination"] }

Une cible appropriée peut être définie pour que l'événement le capture. Pour obtenir une liste complète des cibles disponibles, consultez Cibles Amazon EventBridge dans le Guide de l'utilisateur Amazon EventBridge. Vous pouvez également créer une configuration de notification dans Notifications d'utilisateurs AWS. Lorsque vous utilisez le AWS Management Console pour créer la notification, sous Règles d’événement, choisissez Elastic Kubernetes Service (EKS) comme nom de service AWS et EKS Fargate Pod Scheduled Termination comme Type d’événement. Pour plus d'informations, consultez la section Prise en main des notifications d'utilisateur AWS dans le Guide de l'utilisateur des notifications d'utilisateur AWS.

Consultez la FAQ : Avis d’expulsion de pod Fargate dans re:Post AWS pour connaître les questions fréquemment posées concernant les expulsions de pod EKS.