Kubernetes暴露的Pod连接被拒绝-有时有效,有时不起作用

时间:2018-11-01 08:30:56

标签: kubernetes connection pod

我有一个具有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

然后我再试一次,它会起作用,再试一次,它会起作用,再试一次,它不起作用...

任何线索可能导致问题的原因?

1 个答案:

答案 0 :(得分:1)

我找到了问题和解决方案。问题是豆荚定义。对于这两个Pod:mongodb-gfs和mantis-gfs我具有相同的标签设置。然后,我使用相同的标签=“ env = development”公开了服务。在这种情况下,我期望始终流向一个Pod的流量被“负载均衡”到一个或另一种不同类型的Pod(它们具有相同的标签)。

更改mongodb-gfs pod定义中的标签解决了连接问题。