在 Kubernetes 中,我们还需要多进程/gunicorn 吗?

web*_*ebp 15 multiprocessing gunicorn kubernetes python-multiprocessing

在面向机器的部署中,通常,人们会使用gunicorn启动多个 worker 来处理传入的请求。(是的,worker_class将进一步定义工作进程内的行为)

在 Kubernetes 集群中部署时,我们是否仍然gunicorn(或者确切地说,我们仍然需要多进程部署)吗?

基本上,每个正在运行的容器都是一个进程(在一个容器每个 pod 配置中)。运行在一个服务后面的多个 Pod 已经等同于gunicorn必须提供的服务。换句话说,依靠 Kubernetes 服务而不是gunicorn

是否gunicorn还需要?

是的,一个 Pod 与一个进程并不完全相同(每个 Pod 中伴随容器的一些开销),但除此之外,我们可能会因为没有而错过gunicorn什么?

已编辑

澄清:是的,仍然需要gunicorn或其他wsgi http服务器来运行 python 应用程序。我的问题实际上是关于multiprocess方面的(如标题中的多进程/gunicor)。

Ken*_*ars 7

Gunicorn 用于服务 WSGI(Web 服务器网关接口)应用程序,因此它是一个服务器,而不仅仅是多进程编排工具。Kubernetes 是一个帮助管理基础设施的编排工具。它不支持 HTTP,也不了解 WSGI 规范。换句话说,您无法在裸 kubernetes pod 上运行 WSGI 应用程序,您仍然需要 WSGI 服务器(例如 Gunicorn、uWSGI 等)来为应用程序提供服务。


Ric*_*ico 3

还需要gunicorn吗?

确实不需要。Kubernetes 可以像 Gunicorn 一样使用 HPAVPA以及集群自动缩放器等其他功能来处理扩展和缩小(pod/容器) 。

事实上你不需要它,它不需要你不能使用gunicorn。您可以在一个 Pod/容器中完美地拥有多个由资源限制控制的进程。请记住,Kubernetes 资源管理器最终将决定容器(在 Pod 中运行)的资源请求和上限。

  • 请勿在生产环境中使用 RUNSERVER。它尚未经过安全审核或性能测试。(这就是它的发展方向。我们的业务是制作 Web 框架,而不是 Web 服务器,因此改进此服务器以使其能够处理生产环境超出了 Django 的范围。)请参阅:https://forum .djangoproject.com/t/which-http-server-for-k8s-gunicorn/7911/2 (2认同)