Уменьшение количества реплик при завершении без завершения - PullRequest
0 голосов
/ 19 сентября 2019

Я использую реплики Kubernetes для запуска задач «от выполнения к завершению».

В настоящее время я увеличиваю количество реплик, когда у нас есть рабочий элемент для завершения в очереди, и контейнер немедленно потребляет элемент.Поскольку требуемые реплики никогда не менялись, Kubernetes запускает новую реплику, которая затем обнаруживает, что делать нечего, и поэтому немедленно завершается (и повторяется).Если я уменьшу количество реплик до завершения работы контейнера (т. Е. Как только будет использован элемент очереди), одна из выполняющих работу реплик преждевременно прекратит работу.

Есть ли способ уменьшить количество реплик, а непринудительное прекращение?

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

Вы можете добавить termination grace period для всех модулей, поэтому, когда контейнер завершит свою работу, он подождет некоторое время.

Вы также можете добавить термин SIG в жизненном цикле, и этот конкретный модуль не получит следующий элемент из очереди.

lifecycle:
          preStop:
            exec:
              # SIGTERM triggers a quick exit; gracefully terminate instead
              command: ["/usr/sbin/nginx","-s","quit"]

Вы также можете посмотреть на это: https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-terminating-with-grace

0 голосов
/ 21 сентября 2019

Если вы оказались в той же ситуации, что и я, взгляните на Арго: https://argoproj.github.io/argo/

...