【问题标题】:Automating MongoDB Replica set configuration on Kubernetes在 Kubernetes 上自动化 MongoDB 副本集配置
【发布时间】:2025-11-29 17:25:01
【问题描述】:

我正在使用有状态集在 Kubernetes 上创建一个 MongoDB 集群。我的状态集中配置了 3 个 mongo 副本。

现在我只使用一个命令创建有状态集和服务

kubectl create -f mongo-stateful.yaml

然后我使用mongo客户端发起mongo副本集成员。

rs.initiate(
   {
      _id: "replicaset1",
      version: 1,
      members: [
         { _id: 0, host:port1 },
         { _id: 1, host : host:port1 },
         { _id: 2, host : host:port1  }
      ]
   }
)

除了我想自动化配置副本集成员的这一步之外,所有这些都有效。

我的问题是这一步是否可以自动化,我们是否可以将其添加到 yaml 文件中?

【问题讨论】:

  • 您可以使用 env 变量将其添加到 yaml 文件中。您还可以查看服务,以便您的 host:port 成为 kubernetes 内部 DNS 地址

标签: mongodb kubernetes replicaset


【解决方案1】:
【解决方案2】:

是的,有可能,您有多种选择:

  1. 使用@tzik 指定的sidecar 方法,那么您不需要在代码中做太多事情
  2. 使用 kubernetes lifecycle.postInstall 功能自行实现集群(这有点棘手,因为 postInstall 在每个 statefulset 成员上运行)
  3. 如果您决定使用 helm 来管理您的 k8s 部署,则可以使用 helm post-install hooks 来启动您的 mongodb 集群。

【讨论】: