Python Автоматическое масштабирование сельдерея Kubernetes - PullRequest
0 голосов
/ 05 августа 2020

Сейчас я использую AWS EBS, но перехожу на Kubernetes для управления нашим рабочим пулом сельдерея. Согласно документации Celery, когда вы хотите остановить работника сельдерея, существует два типа сигналов, которые могут быть отправлены работнику . Один из них TERM , а другой KILL . Когда используется TERM , он ждет, пока исполнитель завершит sh то, что он в данный момент выполняет, перед остановкой. Когда KILL используется для немедленной остановки, это может привести к потере задач . У меня вопрос с автоматическим масштабированием Kubernetes при уменьшении пула рабочих, как я могу гарантировать, что TERM отправляется рабочим, а не KILL? У меня возникла проблема с уменьшением масштаба с AWS EBS, где цветок сельдерея показывал потерю задач при уменьшении.

1 Ответ

3 голосов
/ 05 августа 2020

Цепочка событий здесь следующая:

  1. HorizontalPodAutoscaler уменьшает replicas: в развертывании, которое он контролирует.
  2. Развертывание уменьшает replicas: в соответствующем ReplicaSet.
  3. ReplicaSet удаляет поды по мере необходимости.
  4. Kubernetes отправляет каждому контейнеру SIGTERM и ожидает его завершения.
  5. Если контейнер еще не завершился, он отправляет каждый container SIGKILL.

Последовательность завершения работы, в частности, описана в Завершение работы Pods . Ваш процесс получит SIGTERM, а затем SIGKILL через 30 секунд, если он еще не завершился. Нет ничего особенного в том, что HPA удаляет модуль, в отличие от любого другого пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...