Docker Swarm自定义Overlay网络跨地域节点域名解析异常求助
我来帮你梳理下这个Swarm集群跨区域DNS解析的问题——毕竟跨香港和美国节点的网络环境确实容易出现这类奇怪的DNS差异,结合你说的部分服务能解析、部分不行的情况,咱们一步步排查:
1. 先确认Swarm DNS是否生成了目标服务的记录
Swarm的内置DNS会为每个服务自动创建服务名.overlay网络名的完整域名,同时支持直接用服务名的短名解析,但前提是发起请求的容器和目标服务在同一个Overlay网络里。
- 先在能正常解析的服务(比如
bar)里执行nslookup对比测试:
如果nslookup foo nslookup barfoo返回NXDOMAIN(域名不存在),说明Swarm DNS根本没生成这个服务的解析记录,那重点要检查服务的创建配置。
2. 检查服务的端点模式(Endpoint Mode)配置
Swarm服务的端点模式会直接影响DNS解析逻辑:
- 默认的
vip模式会给服务分配一个虚拟IP,DNS返回这个VIP;dnsrr模式则会返回所有运行中任务的真实IP。如果失败的服务(foo/haha)用了和成功服务不同的端点模式,可能因为跨区域网络的路由问题导致解析失败。 - 快速查看所有4个服务的端点模式:
如果失败的服务用了docker service inspect foo bar haha hehe --format '{{.Spec.Name}}: {{.Spec.EndpointSpec.Mode}}'dnsrr,可以尝试改成默认的vip模式重新创建服务,看是否能解决问题。
3. 验证Overlay网络的范围与服务关联
Overlay网络的scope配置决定了它是否能在全集群生效:
- 如果你的Overlay网络是
local范围(仅当前节点可用),那跨区域的服务肯定无法被解析,但你有部分服务能正常工作,所以大概率是部分服务没正确挂载到目标Overlay网络。 - 先检查网络范围:
确保输出是docker network inspect your-overlay-network --format '{{.Name}}: {{.Scope}}'swarm(全集群范围)。 - 再确认失败的服务是否真的连接了这个网络:
对比docker service inspect foo --format '{{range .Spec.Networks}}{{.Target}}{{end}}'bar的输出,要是foo没挂载目标网络,那肯定解析不了,重新创建服务时加上--network your-overlay-network参数即可。
4. 排查跨区域节点的DNS同步问题
Swarm每个节点上的docker-dns容器负责提供本地DNS服务,跨区域的网络延迟可能导致DNS记录同步不及时:
- 在香港的节点上查看
docker-dns的日志,看看有没有关于foo/haha的同步错误:docker logs $(docker ps -q -f name=docker-dns) - 如果发现同步延迟,可以尝试重启香港节点上的
docker-dns容器(注意:这会暂时影响该节点的DNS解析,建议低峰操作):docker restart $(docker ps -q -f name=docker-dns)
5. 确认服务任务的运行状态与跨区域网络连通性
如果foo/haha的任务都部署在美国节点,那要确保香港节点到美国节点的DNS流量(UDP 53,Overlay网络内部使用)是通畅的:
- 先查看服务任务的运行状态:
确认任务都是docker service ps foo hahaRunning状态,有没有在香港节点部署(如果任务全在美国,那跨区域的UDP 53必须能通)。 - 虽然你说所有端口都开放了,但再核对下Swarm必需的端口:TCP 2377(集群管理)、UDP 7946(节点发现)、TCP/UDP 4789(Overlay网络隧道),还有UDP 53(内部DNS),确保跨区域节点之间这些端口都能双向连通。
6. 绕开DNS直接测试服务连通性
如果直接ping服务的VIP或任务IP能通,那就是纯DNS解析问题:
- 获取
foo服务的VIP:
在香港的服务里ping这个VIP,如果能通,那可以尝试删除并重新创建docker service inspect foo --format '{{.Endpoint.VirtualIPs}}'foo服务,强制Swarm刷新DNS记录:docker service rm foo docker service create --name foo --network your-overlay-network [你的其他服务参数] your-image
内容的提问来源于stack exchange,提问作者Tao Zhu
相关产品推荐
相关产品推荐

