Как Python масштабируется с Gunicorn и Kubernetes? - PullRequest
0 голосов
/ 22 сентября 2018

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

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

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

1 Ответ

0 голосов
/ 22 сентября 2018

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

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

Если вы используете публичное облако, такое как AWS, GCP илиAzure Я бы также рекомендовал настроить группу автоматического масштабирования, чтобы вы могли масштабировать свои виртуальные машины или серверные базы по таким показателям, как среднее использование ЦП.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...