Необходимо создать модуль для каждого нового запроса от сервиса веб-интерфейса в Кубернетесе.
У меня есть случай использования, в котором приложение переднего плана при отправке файла на сервер для обработки. И только один запрос может быть обработан модулем бэкэнда. И если поступил множественный запрос, сервис должен автоматически масштабировать и отправить этот запрос новому Pod. Таким образом, я нахожу способ, которым я могу создать новый POD для каждого запроса, и после завершения обработки модулем бэкэнд-службы он вернет результат в интерфейсный сервис и уничтожит сам себя. Так что каждый модуль обрабатывает только один запрос за раз.
Я исследую автомасштабирование HPA, но не нашел подходящего способа. Открыт для использования любого пользовательского сервера метрик для этого, даже может использовать задания, если они в состоянии выполнить вышеописанный сценарий.
Так что, если кто-то обладает знаниями или решает тот же вариант использования, то помогите мне, чтобы я также мог попробовать это решение. Заранее спасибо.
2 ответа
На самом деле я не могу придумать ничего встроенного. Вы можете создать служебную учетную запись для своего приложения, у которой есть разрешения на создание модулей, а затем встроить поведение порождения в код приложения. Если вы можете получить метрики о том, какие модули доступны, вы можете использовать HPA с Prometheus, чтобы обеспечить наличие хотя бы одного незанятого бэкэнда, но это зависит от того, какие метрики предоставляет ваш материал.
Как уже было сказано, для этого нет встроенного способа, вам нужно найти собственный способ добиться этого.
Одним из решений может быть использование служебной учетной записи и HTTP-запроса к серверу API для создания внутреннего модуля, как только ваш сервис будет получен внешним модулем, проверка состояния внутреннего модуля и, как только он будет запущен, переадресация запроса на внутренний сервер.
Во-вторых, я могу подумать об использовании некоторого временного хранилища (тома db или hostpath) и написать cronejob в своем мастере, чтобы опросить это хранилище и в зависимости от модуля порождения статуса, имеющего контейнер заданий.