我有一个具有master和1个节点的kubernetes安装。
它已经配置好,一切都很好。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mantis-gfs 1/1 Running 1 22h
mongodb-gfs 1/1 Running 0 14h
我暴露了pod mongodb-gfs:
$ kubectl expose pod mongodb-gfs --port=27017 --external-ip=10.9.8.100 --name=mongodb --labels="env=development"
外部IP 10.9.8.100是kubernetes主节点的IP
服务创建成功。
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
glusterfs-cluster ClusterIP 10.111.96.254 <none> 1/TCP 23d
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 29d
mongodb ClusterIP 10.100.149.90 10.9.8.100 27017/TCP 1m
现在我可以使用以下方式访问mongo:
mongo 10.9.8.100:27017
这是问题所在。它可以工作一段时间,但有时不能。 我连接一次,得到外壳,第二次连接,得到:
$ mongo 10.9.8.100:27017
MongoDB shell version v3.4.17
connecting to: mongodb://10.9.8.100:27017/test
2018-11-01T09:27:23.524+0100 W NETWORK [thread1] Failed to connect to 10.9.8.100:27017, in(checking socket for error after poll), reason: Connection refused
2018-11-01T09:27:23.524+0100 E QUERY [thread1] Error: couldn't connect to server 10.9.8.100:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:240:13
@(connect):1:6
exception: connect failed
然后我再试一次,它会起作用,再试一次,它会起作用,再试一次,它不起作用...
任何线索可能导致问题的原因?
答案 0 :(得分:1)
我找到了问题和解决方案。问题是豆荚定义。对于这两个Pod:mongodb-gfs和mantis-gfs我具有相同的标签设置。然后,我使用相同的标签=“ env = development”公开了服务。在这种情况下,我期望始终流向一个Pod的流量被“负载均衡”到一个或另一种不同类型的Pod(它们具有相同的标签)。
更改mongodb-gfs pod定义中的标签解决了连接问题。