【发布时间】:2018-08-27 19:25:29
【问题描述】:
我有以下服务...
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
app: mongo
spec:
ports:
- name: mongo
port: 27017
clusterIP: None
selector:
app: mongo
还有下面的有状态集...
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongo
spec:
serviceName: mongo
selector:
matchLabels:
app: mongo
replicas: 3
template:
metadata:
labels:
app: mongo
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongo
image: mongo
command:
- mongod
- "--replSet"
- rs0
- "--smallfiles"
- "--noprealloc"
ports:
- name: mongo
containerPort: 27017
- name: mongo-sidecar
image: cvallance/mongo-k8s-sidecar
env:
- name: "VERSION"
value: "2"
- name: MONGO_SIDECAR_POD_LABELS
value: "role=mongo"
但是,我的代码无法使用 URL mongo:27017 建立连接。我试过连接到mongo、mongo-0.mongo:27017,还有很多其他人。如果我执行到容器中并运行$ nslookup mongo 我会得到...
Name: mongo
Address 1: 10.1.0.80 mongo-0.mongo.default.svc.cluster.local
Address 2: 10.1.0.81 mongo-1.mongo.default.svc.cluster.local
Address 3: 10.1.0.82 mongo-2.mongo.default.svc.cluster.local
点击$ curl mongo:27017 或$ telnet mongo 27017 会给我一个连接被拒绝错误。
【问题讨论】:
-
telnet mongo 27017是正确的语法 -
你是在应用容器中运行telnet还是curl?
-
@FarhadFarahi 与正确的 telnet 调用相同的错误,是的,这是来自应用程序容器。
-
使用
netstat -tlpn然后看一下 :27017 之前的 ip,是 0.0.0.0 吗?我确保 mongo 没有在本地主机上监听,因此您面临的问题。 -
net: bindIp: 0.0.0.0 port: 27017
标签: mongodb docker kubernetes gcloud