我正在尝试与StatefulSets和Headless Services一起在Kubernetes中协调MongoDB集群。一段时间以来,我一直在试图找出问题所在,但找不到我可以使用的任何东西。
在进行研究时,我发现this repository是我克隆并适应用例的。您可以找到清单之一(用于mongoS实例的清单)right here。
然后,我运行存储库中随附的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
因此,我尝试直接从Pod内部运行mongo
,但是发生了相同的错误。然后,我只是尝试在容器内部使用不同的端口运行mongo
,运行mongo --port 27018
(也尝试了27019和27020),只是想看看未暴露的端口会产生哪种错误,并且似乎它给出了相同的错误。
如何在端口27017上运行mongos的容器中运行mongo?似乎即使运行mongod
,也必须在运行mongo
shell之前运行mongos
。这真是令人难以置信,我觉得我错过了一些东西。我在mongos pod内只有这个错误,而mongo-configdb和mongod-maindb似乎运行平稳(并且在其中运行mongo shell不会给出任何错误。此外,当在一个内部执行rs.status()
时)其中的效果很好)。
您可以找到一些mongos
日志there。
TL; DR 如何在端口27017上运行mongos的容器中运行mongo?
N.B。::我使用的是官方dockerhub存储库中的镜像 mongo:3.6 。
答案 0 :(得分:1)
我不太清楚为什么,但是将运行端口从27017更改为27020很好。如果有人路过并且可以解释如何做,我很高兴听到他/她的解释为<DataTemplate DataType="{x:Type vm:C_ViewModel}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding CName}" />
<Button Margin="2"
cal:Action.TargetWithoutContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType=TreeViewItem, AncestorLevel=2}}"
cal:Message.Attach="Remove($dataContext)"
Content="Delete"/>
</StackPanel>
</DataTemplate>
(还有netstat -tunelp
),而在我的两个k8s节点上greping端口27017都没有给出任何解释与端口27017相关的输出...