如何在Kubernetes环境中的mongoDB上远程初始化replicaset

如何在Kubernetes环境中的mongoDB上远程初始化replicaset,mongodb,kubernetes,Mongodb,Kubernetes,我正在尝试在我的Kubernetes集群上部署MongoDB 我在几个不同的步骤中部署它,第一个步骤将包括config svr replicated,第二个步骤将包括Shard replicated,第三个步骤将包括:;复制路由器吊舱 我能够创建一个由3个配置吊舱组成的kubernetes statefulset,但现在我必须初始化副本集 我知道我需要使用rs.initiate()方法来初始化复制集,但我不能从远程执行 我的安装是全自动的,我可以为部署运行kubernetes作业,并且不能在任何

我正在尝试在我的Kubernetes集群上部署MongoDB

我在几个不同的步骤中部署它,第一个步骤将包括config svr replicated,第二个步骤将包括Shard replicated,第三个步骤将包括:;复制路由器吊舱

我能够创建一个由3个配置吊舱组成的kubernetes statefulset,但现在我必须初始化副本集

我知道我需要使用rs.initiate()方法来初始化复制集,但我不能从远程执行

我的安装是全自动的,我可以为部署运行kubernetes作业,并且不能在任何脚本中运行exec命令

我尝试将远程mongo pod作业与--host flg一起使用,但收到一条错误消息,指示管理员未获得授权:

{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { replSetInitiate: { _id: \"crs\", configsvr: true, members: [ { _id: 0.0, host: \"mongo-config-0.mongo-config-svc.default.svc.cluster.local:27017\" }, { _id: 1.0, host: \"mongo-config-1.mongo-config-svc.default.svc.cluster.local:27017\" }, { _id: 2.0, host: \"mongo-config-2.mongo-config-svc.default.svc.cluster.local:27017\" } ] } }",
    "code" : 13,
    "codeName" : "Unauthorized"
}
我读到我需要给我的管理员用户读/写权限,但这将需要再次手动(或通过外部脚本)在POD中执行“exec”命令,我不能这样做

我还尝试在pod作业中使用具有ServiceAccount令牌权限的kubernetes api,但我发现不可能将curl与exec api一起使用,因为它需要与其他kubernetes api命令不同的web会话

是否有人能够初始化mongoDB副本,但使用了Mongo解决方案或Kubernetes解决方案


谢谢

这在吊舱外对我很有效:

kubectl exec PODNAME-mongo-0 -- bash -c 'mongo localhost:27017 --eval "rs.initiate({_id:\"YOURREPLICASETNAME\",members:[{\"_id\":1,\"host\":\"YOUR-NODE-1-NAME:27017\",\"priority\":10}, {\"_id\":2,\"host\":\"YOUR-NODE-2-NAME:27017\",\"priority\":5}]})"'