我将使用Gunicorn和Gevent / Eventlet作为异步工作器在Kubernetes上部署带有Docker的Python Flask服务器。该应用程序将:
Kafka中的每个主题每分钟将收到1条消息,因此应用程序每分钟需要从Kafka中消耗大约20条消息。对于每条消息,处理和执行大约需要45秒。问题是我怎样才能很好地扩展呢?我知道我可以在Gunicorn中添加多个工作程序,并在部署到Kubernetes时使用pod的多个副本。但是够了吗?是否可以自动平衡不同吊舱中可用工人之间的工作量?或者我该怎么做才能确保可扩展性?
答案 0 :(得分:3)
我建议您为工作人员设置一个HPA水平吊舱自动缩放器。
这将需要为metrics API设置支持。对于更高版本的Kubernetes上的自定义指标,已弃用heapster,而推荐使用metrics server
如果您使用的是AWS,GCP或Azure这样的公共云,我还建议您设置一个自动扩展组,以便您可以根据CPU利用率平均值等指标来扩展VM或服务器。
希望有帮助!