С Kubernetes Есть ли способ подождать, пока модуль завершит выполнение своих текущих задач, прежде чем обновлять его? - PullRequest
1 голос
/ 07 апреля 2020

Я управляю приложением внутри kubernetes, у меня есть интерфейс (nginx, flask) и серверная часть (сельдерей). Долгосрочные задачи отправляются на сервер с помощью промежуточного ПО (rabbitmq)

Моя проблема в том, что я могу получать долго выполняющиеся задачи в любое время, и я не хочу, чтобы это нарушало мой план обновления версии моего приложения.

Я использую команду kubectl apply -f $MY_FILE для развертывания / обновления моего приложения. Но если я сделаю это, когда ПО сельдерея будет занято, то оно будет остановлено, и я потеряю задание.

Я пытался использовать датчик готовности, но блоки все еще закрыты. У меня вопрос, есть ли способ, чтобы kube нацеливался только на «свободные» модули и ждал, пока занятое не закончится sh?

Спасибо

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

Вы можете использовать ловушки preStop, чтобы завершить текущую задачу до завершения работы модуля.

Kubernetes отправляет событие preStop непосредственно перед завершением работы контейнера. Управление Kubernetes Контейнерными блоками до завершения обработчика preStop, если не истек льготный период модуля. Для получения дополнительной информации см. Завершение модулей .

https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/#define -poststart- и-prestop-обработчики

0 голосов
/ 07 апреля 2020

Одним из способов является создание другого развертывания с новым образом, предоставление его в качестве службы. Передайте любые новые запросы ТОЛЬКО этому новому развертыванию / службе.

Между тем, старое развертывание / служба может продолжать обрабатывать существующие запросы и не принимать никаких новых. Как только все запросы обработаны, старое развертывание / служба могут быть удалены.

Единственная проблема с этим подходом, примерно удвоение ресурсов, необходимых для некоторой продолжительности, поскольку старое / новое развертывание / служба работают параллельно.

Что-то вроде А / Б тестирования. К вашему сведению ... Istio делает это легко с traffi c management .

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