我正在尝试在Kubernetes上设置一个三节点Mongo副本集。我的想法是启动三个pod,每个都有Mongo,当pod启动时,它会自动设置副本集,所以我需要修改Mongo镜像Dockerfile以在Mongo shell中执行一些命令。
但我坚持执行命令rs.initiate()
。如果我只使用没有参数的命令rs.initiate()
它可以工作,但是当添加参数时,它会发生错误,如
rs.initiate({ "_id": "rs0", "members" : [ { "_id" : 0, "host" : "172.18.248.87:27017" } ]})
但是当执行pod并使用带参数的相同命令时,它可以工作。命令rs.add()
的情况相同。如何解决这个问题?
另外:在我的Dockerfile中,我使用mongo admin --port 27017 --eval "rs.initiate()"
来执行命令。
答案 0 :(得分:0)
您应该检查pod中的hosts文件(主机名)并添加:
ip_address mongoslave
ip_address mongomaster
例如:
172.18.248.87 mongomaster
然后添加参数:
rs.initiate()
rsconf = { _id:" rs0", 成员:[ { _id:0, 主持人:" mongomaster:27017" } ] }
rs.reconfig(rsconf,{force:true})