我在Kubernetes集群中托管的容器中使用uwsgi。 UWSGI支持传统的master / slave architecture为应用程序提供更好的可用性,但我的问题是,我是否应该使用此功能?
换句话说,当我需要更多进程来处理和计算请求时,我是否应该增加群集中的pod数量,还是应该使用UWSGI的主/从模式来响应请求?
答案 0 :(得分:5)
在Kubernetes中管理此方法的推荐方法是根据工作负载要求增加POD的数量。
答案 1 :(得分:5)
如果应用程序在为每个HTTP请求提供服务时阻塞(例如Django),请注意有足够的线程/进程/ pod来维护可用性。如果您使用的是水平pod自动调节器,那么将会有一些pod启动时间,并且我发现在高流量应用程序中我使用uwsgi和每个pod中的应用程序(相同的容器)以及单独的nginx pod可以获得更好的可用性当所有uwsgi工作人员都忙时,进行反向代理并请求汇集。
YMMV但是在一天结束时,可用性比坚持每个pod经验法则的单个进程更重要。只需了解缺点,例如同一容器内进程之间的隔离度较低。日志基于每个容器可用,因此使用内置的kubectl日志功能不会在同一容器中的任何内容之间进行隔离。
答案 2 :(得分:2)
我们使用一种部署模型,其中基于django的应用程序由gunicorn提供,具有几个工作进程。我们进一步尝试将此pod扩展到2-3个副本,并且已经看到了性能改进。
完全取决于适合您应用的内容。
扩展容器的优点是您可以动态配置它,因此不会浪费资源。