spring.cloud.nacos.discovery.ip=10.0.8.21
spring.cloud.nacos.discovery.network-interface=eth0

服务在 Nacos 列表里显示健康,网关调用却一直 connect timed out,点开实例详情看到 IP 是 172.17.0.3 这种容器地址,宿主机上根本访问不到。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:服务注册时会自动探测网卡,容器里第一块网卡是 docker 网桥,注册上去的地址只在容器网络内可达,跨主机自然连不上,日志里也不会提示。

围绕「Nacos 注册IP」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

处理上按这个顺序:显式指定要注册的网卡或者 IP 地址,别让它自己自动挑;容器环境里改成用宿主机 IP 或者服务名来注册地址;改完去控制台核对实例地址和端口写得对不对。

确认没问题再收工,控制台里实例 IP 是宿主机地址,网关能直接连通并返回 200,调用恢复正常。

作者 9823189