如何在Kubernetes上设置Mongo副本?

时间:2015-12-24 08:43:47

标签: mongodb docker kubernetes

我正在尝试在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()"来执行命令。

1 个答案:

答案 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})