nginx - 如何在 Kubernetes 中扩展 Web 应用程序?
问题描述
让我们考虑一个通过 Nginx 在 uWSGI 下部署的 Python Web 应用程序。
HTTP 客户端 ↔ Nginx ↔ Socket/HTTP ↔ uWSGI (web server) ↔ webapp
其中 nginx 用作反向代理/负载均衡器。
如何在 Kubernetes 中扩展此类应用程序? 我想到了几个选择:
- 在单个 pod 中部署 nginx 和 uWSGI。简单的方法。
- 在单个容器中部署 nginx + uWSGI?违反“一个容器一个进程”的原则。
- 仅部署一个 uWSGI(通过 HTTP)。省略nginx的使用。
还是有另一种解决方案,涉及 nginx 入口/负载均衡器服务?
解决方案
这取决于。
我看到两种情况:
使用入口
在这种情况下,不需要在 pod 中安装 nginx 服务器,但它可以
ingress-nginx
用来平衡 kubernetes 集群中的流量。你可以在这个关于 GitHub 问题的评论中找到一个很好的例子。不使用入口。
在这种情况下,我会选择
option 1
-Deploy nginx and uWSGI in a single pod. Simple approach.
。通过这种方式,您可以轻松地扩展/扩展您的应用程序,并且没有任何复杂/不必要的依赖项。
如果您不熟悉what ingress is
,请查找kubernetes 文档 - ingress。
推荐阅读
- postgresql - 查询挂起时如何解释 PostgreSQL EXPLAIN 结果
- c# - 如何使用 System.Windows.Forms 键模拟“_”或“=”的按键?
- android - Android AsyncTask 不调用 onProgressUpdate
- shell - Unix cat 命令、管道和标准输入/标准输出
- javascript - 从具有特定值的现有对象创建新对象的最佳方法
- c++ - 如何在 Visual Studio C++ 中集成 CryptoPP (2019)
- javascript - 如何在 javascript 中解决此任务?
- reactjs - 在没有 GitHub fetch 的情况下为 Nextjs 安装Sharp:错误:找不到模块“sharp”
- vim - 如何在 vim 命令中转义一个点?
- java - X509Cerificate 检查是否从某个 CA 发出