【问题标题】:Multiple pods using same database on kubernetes多个 pod 在 Kubernetes 上使用相同的数据库
【发布时间】:2019-05-27 11:11:17
【问题描述】:

我想知道同一个 Kubernetes 集群中的多个 pod 是否可以访问使用 Google 云永久磁盘上的永久卷配置的数据库。

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

如果我的架构是否正确,请告诉我

【问题讨论】:

  • 这种架构是合理的:只要数据库可以处理预期的传入连接数,并且在 Pod 中正确配置凭据,使用所有 API 访问数据库应该没有问题。您对这里的设计决策有什么特别的顾虑吗?
  • 您说的是像 Postgres 或 MySQL 这样的网络数据库,还是像 Sqlite 或 BDB 这样的本地文件数据库?
  • 我正在使用 mongo db @coderanger。我也想访问集群外的数据库。所以我希望它是高可用的
  • MongoDB(该公司)提供了一个操作符(一个自定义的 Kubernetes 控制器),可能从它开始。

标签: kubernetes google-kubernetes-engine persistent-volumes persistent-volume-claims google-persistent-disk


【解决方案1】:

您当然可以将多个基于节点的应用程序 pod 连接到同一个数据库。有时有人说微服务不应该共享数据库,但这取决于您的应用程序正在做什么、项目历史以及您希望单独处理这些部分的程度。

关于大规模运行数据库,您必须回答一些问题,例如您的未来负载以及如果您要尝试跨可用区,是否要使用关系数据库。并且有 一些特定于 Kubernetes,尤其是关于如何将 DB Pod 与数据相关联。见https://stackoverflow.com/a/53980021/9705485。另一个流行的选择是使用来自云提供商的托管数据库服务。如果您确实在 k8s 中运行数据库,那么我建议您寻找 helm chart 或查看运算符,例如 kubeDB 运算符,以避免自己制作 kubernetes 描述符并获得有关运行数据库和设置的更多指导.

如果这是一个新项目并且您之前没有使用过 k8s,那么您还必须决定在哪里托管您的代码、您的 docker 映像和您的部署描述符以及如何设置您的 CI 管道。如果您还没有这些问题的答案,那么我建议您查看 Jenkins-X,因为它会为您提供整个集群和 CI 设置的开箱即用默认值以及用于构建的模板(“构建包”)节点应用程序并通过管道将它们部署到登台和生产环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2019-04-13
    • 2021-12-07
    相关资源
    最近更新 更多