docker - 将数据库和应用程序放在同一个 Kubernetes pod 中的好处
问题描述
我只知道最基本的 Kubernetes。但是,我想知道在单个 pod 中运行 2 个容器是否有任何好处:
- 1 运行应用程序的容器(例如 NodeJS 应用程序)
- 1 运行相应本地数据库的容器(例如 PouchDB 数据库)
这会提高性能还是耦合两个容器的缺点会克服任何好处?
解决方案
Pod旨在将共享相同生命周期的容器放在一起。同一个 pod 中的容器共享一些命名空间(如网络)和卷。
这样,将应用程序与其数据库耦合看起来是个好主意,因为应用程序可以通过 localhost 等连接到数据库。但事实并非如此!正如 Diego Velez 所指出的,您可能面临的首要限制之一是扩展您的应用程序。如果您将应用程序与数据库耦合在一起,那么每当您扩展应用程序时,您就不得不扩展您的数据库,这根本不是最佳的,并且会阻止您从使用容器编排器(如 kubernetes)的主要好处之一中受益。
一些好的用例是:
- 带有应用程序的容器 + 带有用于应用程序指标、CI 代理等代理的容器。
- CI/CD 容器(如 jenkins 代理)+ 带有 CI/CD 工具的容器。
- 带有 app 的容器 + 带有代理的容器(就像在 istio 中使用 sidecar 模式一样)。
推荐阅读
- javascript - 根据用户交互显示数据库列表
- c# - 神经网络周期性成本值变化
- internationalization - 在 aiohttp 中翻译
- javascript - 如何在 amCharts4 上禁用值轴(Yaxis)上的光标值
- c# - 如何在使用 C# 无法检测到 json 中的项目时显示警告
- reactjs - componentDidMount 中存在我无法解决的语法错误
- c++ - 可以 std::list
转换为 std::list 在 C++ 中 - sql - 在 SELECT 中,select 中的相关子查询将 rowID 转换为 rowname
- asp.net-core - RenderComponentAsync vs html?预渲染 blazor?
- python - LabelEncoder 将列中的每个值更改为“LabelEncoder()”