python - Python 如何使用 Gunicorn 和 Kubernetes 进行扩展?

标签 python docker flask kubernetes gunicorn

我将使用 Gunicorn 和 Gevent/Eventlet 作为异步工作程序,在 Kubernetes 上部署带有 Docker 的 Python Flask 服务器。该应用程序将:

  1. 订阅关于 Apache Kafka 的大约 20 个不同主题。
  2. 使用该数据对一些机器学习模型进行评分。
  3. 将结果上传到关系数据库。

Kafka 中的每个主题每分钟将收到 1 条消息,因此应用程序每分钟需要从 Kafka 接收大约 20 条消息。对于每条消息,处理和执行大约需要 45 秒。问题是我如何才能很好地扩展它?我知道我可以在 Gunicorn 中添加多个 worker,并在我部署到 Kubernetes 时使用 pod 的多个副本。但这就够了吗?工作负载是否会在不同 pod 中的可用 worker 之间自动平衡?或者我可以做些什么来确保可扩展性?

最佳答案

我建议您设置一个 HPA适用于您的工作人员的水平 Pod 自动缩放器。

需要设置对 metrics API 的支持.对于更高版本的 Kubernetes 的自定义指标 heapster已弃用 metrics server

如果您使用 AWS、GCP 或 Azure 等公共(public)云,我还建议您设置一个自动缩放组,以便您可以根据 CPU 平均利用率等指标缩放您的虚拟机或服务器。

希望对您有所帮助!

关于python - Python 如何使用 Gunicorn 和 Kubernetes 进行扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52458393/

相关文章:

python - 具有动态 'secondary' 导航栏的 Flask-Nav

python - Flask Postgresql 数组不会永久更新

python - 为什么django不保存加密密码?

javascript - Odoo PoS 获取订单产品

python - 用回归填充 NaN 值

python - 从dockerfile中的uvicorn命令和pythonfile运行fastapi和pythonfile有什么区别?

python - Elastic Beanstalk 从 shell SSH 连接到 RDS

docker - 环境变量不会从 docker-compose 进入容器

docker - 我的docker-compose无法正常工作,并向我显示 “pkg_resources.VersionConflict…”

python - 在 HTML (Flask) 中使用 Python 并行迭代多个列表