Я собираюсь развернуть сервер флипсы Python с Docker на Kubernetes, используя Gunicorn и Gevent/Eventlet в качестве асинхронных рабочих. Приложение будет:
Каждая тема в Kafka будет получать 1 сообщение в минуту, поэтому приложение должно потреблять около 20 сообщений в минуту от Kafka. Для каждого сообщения обработка и выполнение занимает около 45 секунд. Вопрос в том, как я могу это хорошо масштабировать? Я знаю, что я могу добавить нескольких сотрудников в Gunicorn и использовать несколько реплик контейнера, когда я развертываю Kubernetes. Но этого достаточно? Будет ли рабочая нагрузка автоматически сбалансирована между доступными рабочими в разных контейнерах? Или что я могу сделать для обеспечения масштабируемости?
Я рекомендую вам создать HPA Horizontal Pod Autoscaler для ваших работников.
Для этого потребуется настроить поддержку API метрик. Для персонализированных метрик в более поздних версиях кубернетов- кукурузы устарел в пользу сервера показателей
Если вы используете общедоступный Cloud, такой как AWS, GCP или Azure, я также рекомендую настроить группу автосохранения, чтобы вы могли масштабировать свои виртуальные машины или серверную базу по показателям, таким как средний коэффициент загрузки процессора.
Надеюсь, поможет!