在Kubernetes上多个Pod使用同一个数据库

5

我想知道在同一个Kubernetes集群中,是否有多个Pod可以访问由Google Cloud持久磁盘配置的数据库。

目前,我正在构建一个微服务架构的Web应用程序,其中有3个不同Pod中的节点API都访问同一个数据库。那么,我如何使用Kubernetes实现这一点。

请告知我我的架构是否正确。


这种架构是合理的:只要数据库能处理预期数量的传入连接,并且Pod中的凭据配置正确,就应该没有问题使用所有API访问数据库。您对此处设计决策有任何特定的顾虑吗? - Monkeyanator
1
你是在谈论像Postgres或MySQL这样的网络数据库,还是像Sqlite或BDB这样的本地文件数据库? - coderanger
我正在使用@coderanger的MongoDB。我还想在集群外访问数据库。因此,我希望它具有高可用性。 - suprith
MongoDB(公司)提供了一个 operator(一个自定义 Kubernetes 控制器),建议从那里开始。 - coderanger
1个回答

2
您可以将多个基于节点的应用程序Pod连接到同一个数据库。有时会说微服务不应该共享数据库,但这取决于您的应用程序正在做什么、项目历史以及您希望分别处理部分的程度。
在运行大规模数据库时,您必须回答一些问题,例如未来的负载和是否要使用关系数据库,如果您要尝试跨可用性区域,则需要考虑一些问题。还有一些特定于Kubernetes的问题,特别是围绕如何将DB Pod与数据相关联。请参见https://dev59.com/d7Dma4cB1Zd3GeqPBcdE#53980021。另一个流行的选项是使用云提供商的托管DB服务。如果您要在k8s中运行DB,则建议查找helm图表或查看操作器(例如kubeDB操作器),以避免自己制作kubernetes描述符,并获得有关运行DB和设置它的更多指导。
如果这是一个新项目,而且您之前没有使用过k8s,则还必须决定在哪里托管代码、docker镜像和部署描述符,以及如何设置CI流水线。如果您还没有回答这些问题,那么我建议查看Jenkins-X,因为它将为您提供整个集群和CI设置的开箱即用默认值,并为构建节点应用程序和通过管道将其部署到staging和prod环境的模板(“构建包”)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接