服务无法与 k8s 集群中的 rabbitmq 通信

service cannot communicate with rabbitmq in k8s cluster

我有一个 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 似乎工作正常。 pods.

中没有显示错误

我可以检查什么来找到问题并让他们沟通?

您询问了如何解决这个问题,所以我将如何处理它。

我会描述您的服务,看看您的 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>