Как масштабировать сервис knative на основе пользовательских показателей?

#kubernetes #containers #autoscaling #knative #knative-serving

#кубернетес #контейнеры #автоматическое масштабирование #кнатив #кнатив-сервировка

Вопрос:

Я использую подачу Knative с KPA. Автоматическое масштабирование доступно в Knative на основе параллелизма и RPS. Но нам нужно масштабировать различные службы в зависимости от длины очереди, потому что существуют длительные асинхронные процессы. Есть ли какой-нибудь способ добиться этого в Knative? Я не могу использовать Knative HPA, потому что нам нужна функция масштабирования до нуля Knative. Заранее спасибо!

Ответ №1:

Если у вас асинхронные (фоновые или запланированные процессы), вполне вероятно, что Knative не подходит для вашего приложения. Было проведено некоторое расследование по выявлению параметров сканирования пользовательских метрик HPA v2 (которые, как вы заметили, могут исключить масштабирование до нуля), но даже при масштабировании HPA2 вы все равно столкнетесь с проблемами.

Проблема с фоновыми процессами заключается в том, что у Knative и Kubernetes нет видимости того, какие модули все еще выполняют работу, поэтому они с равной вероятностью отключат модуль, выполняющий работу, как простаивающий.

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