我正在尝试在Kubernetes内部协调一个MongoDB群集,并使用Statefulssets和无头服务。我试图弄清楚这有什么问题,但找不到我可以使用的东西。
进行研究时,我发现了我克隆并适应用例的存储库。您可以在这里找到其中一种清单(用于蒙古实例的清单)。
然后,我在存储库中运行运行的generate.sh
脚本,但是与gcloud
或persistentVolume
有关的所有内容都发表了评论,仅保留statefulSet
/Service
产卵过程。一切似乎都很好,但是每当脚本到达块
时 # Wait for the mongos to have started properly
echo "Waiting for the first mongos to come up (`date`)..."
echo " (IGNORE any reported not found & connection errors)"
echo -n " "
until kubectl --v=0 exec mongos-router-0 -c mongos-container -- mongo --quiet --eval 'db.getMongo()'; do
sleep 2
echo -n " "
done
echo "...first mongos is now running (`date`)"
echo
它只是无限地提供此错误消息:
2019-03-11T14:02:03.531+0000 E QUERY [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:343:13
@(connect):1:21
exception: connect failed
command terminated with exit code 1
因此,我尝试直接从吊舱内部运行mongo
,但是发生了同样的错误。然后,我只是尝试使用容器内的不同端口,运行mongo --port 27018
(也尝试了27019和27020),只是尝试运行mongo
,只是为了查看它带有非暴露端口的错误,并且似乎给出了相同的错误。
我如何在端口27017上带有运行的蒙古斯的容器内运行mongo?似乎我必须在运行mongo
壳之前运行mongod
,即使mongos
已经启动。这确实令人难以置信,我觉得我缺少一些东西。我只有在蒙哥多豆荚内有这个错误,而蒙古configdb和mongod-maindb似乎正在顺利运行(并且在其中运行蒙哥壳没有任何错误。此外,在其中之一进行rs.status()
时很好)。
您可以在那里找到一些mongos
日志。
tl; dr 我如何在端口27017上使用运行的蒙古斯的容器内运行mongo?
n.b。:我正在使用image mongo:3.6 来自官方Dockerhub存储库。
我不太了解为什么,但是将运行端口从27017更改为27020都很好。如果有人经过并可以解释如何,我很高兴听到他/她的解释为netstat -tunelp
(以及ps aux
),而我的两个K8S节点上的Greppper端口27017则没有给出与端口27017相关的任何输出...