2017-09-17 5 views
0

J'ai un simple conteneur docker, qui récupère les tâches d'une file d'attente. Un script de mise à l'échelle gère la quantité de pods qui s'exécutent en envoyant une requête api au contrôleur de réplication.Le pod Kubernetes reconnaît s'il va être arrêté

Le problème est que je ne veux pas arrêter un pod quand il fait un travail en ce moment. Si je réduis la quantité de pods, les kubernetes supprimeront le dernier pod créé.

Donc, je veux savoir s'il est possible de dire au dernier pod, qu'il sera fermé dans quelques minutes afin qu'il ne puisse pas obtenir un nouveau travail? Une solution serait que le script de mise à l'échelle appelle le dernier module manuellement. Mais est-il possible pour chaque pod d'écouter l'événement de fermeture pour sa propre instance?

Répondre

3

Vous pouvez spécifier une période de grâce des pods sont donnés pour compléter leur travail. Les pods reçoivent un signal TERM quand ils devraient commencer à s'arrêter. Vos pods peuvent l'écouter, terminer leur travail actuel et ne pas en prendre un autre mais quitter à la place. La période de grâce est par défaut de 30 secondes, mais vous pouvez définir une durée suffisamment longue pour que le travail type se termine via le champ terminationGracePeriodSeconds dans la spécification de pod.

Voir https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods pour plus de détails

+0

Merci, je suis en mesure de mettre en œuvre un écouteur de python pour l'événement dans mon conteneur pour écouter cet appel – mimo