有一个运行中的kubernetes集群,其中包含Web服务器,Redis服务器和使用官方docker映像的MongoDB服务器: mongo:4.4.0
我公开了名称为mongodb
的MongoDB服务器和名称为redis
的Redis服务器:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
backend ClusterIP 172.19.14.124 <none> 7001/TCP 15h
mongodb ClusterIP 172.19.10.24 <none> 27017/TCP 15h
redis ClusterIP 172.19.6.203 <none> 6379/TCP 15h
现在,从后端Web服务器,我无法使用mongo --host mongodb
连接到MongoDB服务器,但是可以使用redis -h redis
连接到Redis。
然后由 kubectl exec -it mongodb-5f4bd8c8d-hbsfx -- bash
检查:
mongo mongodb
有效,它已连接到127.0.0.1
mongo 172.19.10.24
失败,导致
Error: couldn't connect to server 172.19.10.24:27017, connection attempt failed: SocketException: Error connecting to 172.19.10.24:27017 :: caused by :: Connection refused :
ping mongodb
效果很好。
从ps
结果来看,它已经绑定了所有内容:
mongodb 1 0.2 2.5 1588248 98272 ? Ssl Aug20 2:02 mongod --bind_ip_all
怎么了?如何解决?谢谢。
命令ss
来自吊舱的结果
LISTEN 0 0 0.0.0.0:27017 0.0.0.0:* users:(("mongod",pid=1,fd=9))
apiVersion: v1
kind: Service
metadata:
namespace: tabby
name: mongodb
labels:
app: mongodb
spec:
ports:
- port: 27017
targetPort: 27017
selector:
name: mongodb
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: tabby
name: mongodb
labels:
app: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
imagePullSecrets:
- name: regcred
containers:
- name: mongodb
image: mongo:4.4.0
ports:
- containerPort: 27017
volumeMounts:
- name: data
mountPath: /data/db
volumes:
- name: data
emptyDir: {}
答案 0 :(得分:1)
服务选择器具有name: mongodb
,但部署具有app: mongodb
标签。由于这种不匹配,服务无法选择吊舱。如果使用Endpoints
检查服务的kubectl describe svc mongodb -n tabby
部分,由于上述原因,您将看不到任何Pod IP。
按如下所示更改服务。
apiVersion: v1
kind: Service
metadata:
namespace: tabby
name: mongodb
labels:
app: mongodb
spec:
ports:
- port: 27017
targetPort: 27017
selector:
app: mongodb