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

时间:2020-09-17 16:40:57

标签: docker kubernetes rabbitmq microservices

我有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似乎工作正常。窗格中没有显示错误。

我该怎么检查才能发现问题并与他们沟通?

1 个答案:

答案 0 :(得分:2)

您询问了如何解决此问题,因此,我将介绍如何解决此问题。

我将描述您的服务,以查看您的Pod ip是否列为其后面的端点。

kubectl describe service <rabbitmq-service>

如果未列出它们,那么我将查看您服务的选择器,以确保它与您的有状态组匹配。如果列出了它们,那么我将再次检查您的服务端口是否确实是5672,然后我将在执行您的应用程序的Pod中执行并尝试在连接字符串中ping服务名称以确保它是可从您应用的名称空间访问。我还将尝试对您的服务名称和端口进行telnet测试,以确保您的应用程序可以在该端口上连接到您的服务,并且我将通过telnet到您的Rabbitmq Pod IP和端口,以确保您的应用程序可以连接给他们。如果您的映像中没有telnet,我将其安装以进行故障排除。

kubectl exec -it <app-pod> -n <namespace> /bin/bash
telnet <pod ip or service name> <port>