在本地,裸机,两个独立的'服务'通过gRPC连接,客户端和'后端'成功地相互通信。两者都是作为NestJS应用实现的,使用gRPC传输。
当部署在kubernetes(minikube)环境中时,我在客户端得到Error: 14 UNAVAILABLE: No connection established
。后端监听localhost:50051
(端口从k8服务暴露),前端尝试连接engine-svc.default.svc.cluster.local:50051
,其中第一部分直到点是服务名称,我已经nslookup
'd它以确保这是完整的域名。
我尝试了端口转发到gRPC kubernetes服务,这个连接的"后端"部分工作正常,并且与之通信正常。因此,"前端"部署/pods是建立连接失败的部分。
Minikube附带了coreDNS。我试过调试它,但没有成功。当"前端"服务试图连接时,来自coreDNS的日志被标记为NOERROR
,我已经读到这意味着服务被找到;但仍未成功。
还有什么问题?我错过了什么?如有任何帮助,不胜感激。
多亏了这个答案,我的问题解决了。问题是后端监听localhost:50051
,这意味着只有本地连接;端口转发也算作一个,所以这就是它工作的原因。将'listen on'属性更改为后端部分的0.0.0.0:50051
解决了这个问题;