如何使用Gunicorn和Kubernetes缩放Python?

时间:2018-09-22 16:00:58

标签: python docker flask kubernetes gunicorn

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

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

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

1 个答案:

答案 0 :(得分:3)

我建议您为工作人员设置一个HPA水平吊舱自动缩放器。

这将需要为metrics API设置支持。对于更高版本的Kubernetes上的自定义指标,已弃用heapster,而推荐使用metrics server

如果您使用的是AWS,GCP或Azure这样的公共云,我还建议您设置一个自动扩展组,以便您可以根据CPU利用率平均值等指标来扩展VM或服务器。

希望有帮助!