Настраиваемое действие Kubernetes при сбое проверки готовности

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

Модуль находится в состоянии бездействия до тех пор, пока ему не будет отправлен запрос POST, и пока он обрабатывает запрос, он не отвечает ни на какие другие запросы.

Чтобы знать, когда выполняется обработка, я создал конечную точку, возвращающую TRUE, если модуль IDLE, и FALSE в противном случае.

Я настраиваю зонд готовности для запроса этой конечной точки, чтобы пометить ее как недоступную, когда выполняется обработка (и чтобы пометить ее как доступную, когда она больше не обрабатывается).

По умолчанию у меня есть ограниченный пул модулей (например, 5), которые могут отвечать на запросы.

Но я все еще хочу иметь возможность отправить еще один POST с другими параметрами для запуска другой обработки, когда все мои 5 модулей недоступны.

Итак, когда проверка готовности не выполняется для всех модулей, я хочу масштабировать развертывание, чтобы другие модули могли отвечать на запросы.

Проблема здесь в том, что я не нашел, как это сделать с K8S и возможно ли это вообще. Есть ли кто-нибудь, кто мог бы мне в этом помочь?

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

Но эта альтернатива подразумевает развитие, которого я бы хотел избежать, если это изначально возможно в K8S.

Спасибо :)


person Gabi    schedule 05.08.2020    source источник


Ответы (1)


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

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

person shaki    schedule 05.08.2020
comment
Да, я так думал. Что ж, тогда я смирился, это будет несложно, но я бы предпочел остаться в управляемом стиле K8S. Спасибо за ваш отзыв :) - person Gabi; 08.08.2020