Как Python масштабируется с Gunicorn и Kubernetes?

1

Я собираюсь развернуть сервер флипсы Python с Docker на Kubernetes, используя Gunicorn и Gevent/Eventlet в качестве асинхронных рабочих. Приложение будет:

  1. Подпишитесь на 20 разных тем на Apache Kafka.
  2. Оцените некоторые модели машинного обучения с этими данными.
  3. Загрузите результаты в реляционную базу данных.

Каждая тема в Kafka будет получать 1 сообщение в минуту, поэтому приложение должно потреблять около 20 сообщений в минуту от Kafka. Для каждого сообщения обработка и выполнение занимает около 45 секунд. Вопрос в том, как я могу это хорошо масштабировать? Я знаю, что я могу добавить нескольких сотрудников в Gunicorn и использовать несколько реплик контейнера, когда я развертываю Kubernetes. Но этого достаточно? Будет ли рабочая нагрузка автоматически сбалансирована между доступными рабочими в разных контейнерах? Или что я могу сделать для обеспечения масштабируемости?

Теги:
docker
flask
kubernetes
gunicorn

1 ответ

2
Лучший ответ

Я рекомендую вам создать HPA Horizontal Pod Autoscaler для ваших работников.

Для этого потребуется настроить поддержку API метрик. Для персонализированных метрик в более поздних версиях кубернетов- кукурузы устарел в пользу сервера показателей

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

Надеюсь, поможет!

  • 0
    Я предполагаю, что HPA горизонтально масштабирует стручки в соответствии с тем, сколько мне нужно. Но произойдет ли автоматическое распределение нагрузки между моими рабочими и модулями? Таким образом, теоретически 5 стручков с 4 рабочими в каждой будет достаточно для обработки 20 сообщений каждую минуту от Кафки?
  • 0
    Да. Балансировка нагрузки должна происходить автоматически, если она настроена правильно.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню