我有以下设置:k3s 安装和 istio 作为入口控制器,
我们面临的问题是 rabbitmq 服务无法从 pod 内部访问。
暴露了 rabbitmq 端口的服务 [5671] ->
type: ClusterIP
$ kubectl describe service rabbit-svc -n rabbit
......
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.43.139.126
IPs: 10.43.139.126
......
Port: https 443/TCP
TargetPort: 443/TCP
Endpoints: 10.42.0.222:443
Port: rabbitmq 5671/TCP
TargetPort: 5671/TCP
Endpoints: 10.42.0.222:5671
如果我尝试从 k3s pod 外部的机器内部通过 clusterIP 连接到该服务,它会响应
openssl s_client -connect 10.43.139.126:5671
CONNECTED(00000003)
如果我尝试通过服务 k8s fqdn 从 istio pod 连接到 pod,它会拒绝连接
openssl s_client -connect rabbit-svc.rabbit.svc.cluster.local:5671
139693269235008:error:0200206F:system library:connect:Connection refused:../crypto/bio/b_sock2.c:110:
139693269235008:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
connect:errno=111
知道为什么会发生这种情况,尽管我在通过 443 公开的 rabbitmq 服务内部有另一个端口并且它响应良好[这只是为了排除 DNS 问题]
连接错误:111 可能是由于以下问题引起的,您可以检查一下吗:
echo | openssl s_client -connect <hostname>:<port> | head
有关更多信息,请参阅此RabbitMQ 故障排除文档