K8s 部署 Nacos 浏览器能访问,本地服务连接不上
问题: nacos service在测试环境部署在docker上,使用正常。正式环境采用 k8s 部署,seata service 能正常连接与注册,Java 服务连接上后无法读取到配置。 分析: nacos service的连接方式有两种,http协议/gRPC协议,Java客户端2.2.x版本或以上默认用的是gRPC协议,gRPC协议使用的是8848+1000=9848,部署在k8s时只开放了8848端口导致gRPC协议无法正常使用 解决: 调整 nacos service svc 的配置,保证8848与9848端口开放,另外如果是做主机端口映射需要注意9848的端口映射必需为8848的端口加1000 比如:8848:30003,9848:31003 Java客户端配置30003时,会自动请求gRPC 31003,没这样配置一样连不上 参考文章:https://blog.csdn.net/lin7420101/article/details/138732609 为什么只开了 8848 客户端却连不上 因为 Java nacos-client 会自动派生出 gRPC 端口(9848)来发请求,但这个端口没开放,就挂了。 为什么 Seata 没问题 它用的是旧版 HTTP 接口,没有用到 gRPC。