我有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似乎工作正常。窗格中没有显示错误。
我该怎么检查才能发现问题并与他们沟通?
答案 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>