【发布时间】:2020-04-05 23:47:33
【问题描述】:
我从 kubernetes 开始,我在从 backend 命名空间内的 banking 服务访问 messaging 命名空间内的 rabbitmq 服务时遇到了一些问题。通过阅读文档,我知道这应该很“简单”:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
但是,我花了一天多的时间试图弄清楚为什么我无法连接到 rabbitmq 客户端主机
这些是我的 yaml 文件:
银行-ip-服务:
apiVersion: v1
kind: Service
metadata:
name: banking-ip-service
namespace: backend
spec:
type: NodePort
ports:
- port: 8000
targetPort: 8000
nodePort: 30080
protocol: TCP
name: "banking-api"
selector:
component: bank
银行部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: banking
namespace: backend
spec:
replicas: 1
selector:
matchLabels:
component: bank
template:
metadata:
labels:
component: bank
spec:
containers:
- name: banking
image: user/myownimage
env:
- name: URL
# cluster ip
value: rabbit-ip-service.messaging.svc.cluster.local
- name: PORT
value: "5672"
- name: USER
value: "guest"
- name: PASSWORD
value: "guest"
ports:
- containerPort: 8000
resources:
requests:
memory: "64Mi"
cpu: "25m"
limits:
memory: "128Mi"
cpu: "50m"
restartPolicy: Always
imagePullSecrets:
- name: regcred
rabbitmq-ip-service:
apiVersion: v1
kind: Service
metadata:
name: rabbit-ip-service
namespace: messaging
spec:
type: ClusterIP
ports:
- port: 5672
targetPort: 5672
name: "rabbit-api"
- port: 15672
targetPort: 15672
name: "rabbit-manager"
selector:
component: rabbitmq
rabbitmq 部署:
apiVersion: v1
kind: Pod
metadata:
name: rabbitmq
labels:
component: rabbitmq
namespace: messaging
spec:
containers:
- image: rabbitmq:3.5.4-management
name: rabbitmq
ports:
- containerPort: 5672
name: service
- containerPort: 15672
name: management
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "100m"
volumeMounts:
- name: config-volume
mountPath: /etc/rabbitmq
volumes:
- name: config-volume
configMap:
name: rabbitmq-config
items:
- key: rabbitmq.conf
path: rabbitmq.conf
- key: enabled_plugins
path: enabled_plugins
这是运行kubectl describe svc rabbit-ip-service -n messaging时的输出:
Name: rabbit-ip-service
Namespace: messaging
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"rabbit-ip-service","namespace":"messaging"},"spec":{"ports":[{"na...
Selector: component=rabbitmq
Type: ClusterIP
IP: 10.106.248.55
Port: rabbit-api 5672/TCP
TargetPort: 5672/TCP
Endpoints: 172.17.0.5:5672
Port: rabbit-manager 15672/TCP
TargetPort: 15672/TCP
Endpoints: 172.17.0.5:15672
Session Affinity: None
Events: <none>
如果我在 backend 部署中硬编码 url 值,它也不起作用:
env:
- name: URL
# cluster ip
value: 10.106.248.55:5672
【问题讨论】:
-
你能提供 Kubectl describe svc rabbit-ip-service -n messing 的输出吗
-
@ArghyaSadhu 编辑了我的答案(在输出底部)
-
如果您尝试 10.106.248.55:15672 或 10.106.248.55:5672 是否有效?
-
你得到什么具体错误?
-
@ArghyaSadhu 不,它也不起作用:(我编辑了我的答案。我收到
level=fatal msg="Error getting rabbit client@DavidMaze
标签: kubernetes