【问题标题】:service cannot communicate with rabbitmq in k8s cluster服务无法与k8s集群中的rabbitmq通信
【发布时间】:2023-03-13 20:53:01
【问题描述】:
我有一个 k8s 集群 (1.16),在它的特定命名空间中有一个服务,还有一组有状态的 rabbitmq(图像:3.8.0-alpine),有 3 个副本,我的每个工人都有一个,在不同的命名空间中。
我将服务配置为将rabbitmq与amqp://user:password@rabbitmq-service.rabbitmq-namespace:5672连接
我的服务日志中出现此错误:
Rabbit mq disconnected connect EHOSTUNREACH <rabbitmq_svc_ip>:5672
rabbitmq 似乎工作正常。 pod 中没有显示错误。
我可以检查什么来发现问题并让他们沟通?
【问题讨论】:
标签:
docker
kubernetes
rabbitmq
microservices
【解决方案1】:
您询问了如何解决这个问题,所以我将如何解决这个问题包括在内。
我会描述你的服务,看看你的 pod ips 是否被列为它背后的端点。
kubectl describe service <rabbitmq-service>
如果它们未列出,那么我会查看您的服务选择器以确保它与您的 statefulset 匹配。如果它们被列出,那么我会仔细检查您的服务端口实际上是 5672,然后我会执行到您的应用程序正在运行的 pod 中,并尝试ping 连接字符串中的服务名称,以确保它可以从您应用的命名空间。我还会尝试对您的服务名称和端口进行telnet 测试,以确保您的应用程序可以在该端口上连接到您的服务,并且我会远程登录到您的 rabbitmq pod ips 和端口,以确保您的应用程序可以连接到它们.如果您的映像中没有 telnet,我会安装它以进行故障排除。
kubectl exec -it <app-pod> -n <namespace> /bin/bash
telnet <pod ip or service name> <port>