首页 > 解决方案 > 如何在 Kubernetes 中扩展 Web 应用程序?

问题描述

让我们考虑一个通过 Nginx 在 uWSGI 下部署的 Python Web 应用程序。

HTTP 客户端 ↔ Nginx ↔ Socket/HTTP ↔ uWSGI (web server) ↔ webapp

其中 nginx 用作反向代理/负载均衡器。

如何在 Kubernetes 中扩展此类应用程序? 我想到了几个选择:

  1. 在单个 pod 中部署 nginx 和 uWSGI。简单的方法。
  2. 在单个容器中部署 nginx + uWSGI?违反“一个容器一个进程”的原则。
  3. 仅部署一个 uWSGI(通过 HTTP)。省略nginx的使用。

还是有另一种解决方案,涉及 nginx 入口/负载均衡器服务?

标签: nginxkubernetes

解决方案


这取决于。

我看到两种情况:

  1. 使用入口

    在这种情况下,不需要在 pod 中安装 nginx 服务器,但它可以ingress-nginx用来平衡 kubernetes 集群中的流量。你可以在这个关于 GitHub 问题的评论中找到一个很好的例子。

  2. 不使用入口。

    在这种情况下,我会选择option 1- Deploy nginx and uWSGI in a single pod. Simple approach.。通过这种方式,您可以轻松地扩展/扩展您的应用程序,并且没有任何复杂/不必要的依赖项。

如果您不熟悉what ingress is,请查找kubernetes 文档 - ingress


推荐阅读