Docker Swarm节点可连接但容器无法解析主机及证书轮换故障
问题解决步骤
一、跨主机容器无法解析service_name问题
- 检查Swarm DNS服务状态:在所有节点执行
docker service inspect dns,确认dns服务在GCP工作节点上正常运行,副本数匹配节点数量。 - 验证overlay网络连通性:
- 在各节点执行
ip addr show proxy,确认proxy网络的子网无冲突(AWS和GCP节点的overlay子网段需一致)。 - 用
ping测试不同云节点的overlay网络网关IP(从ip addr结果中获取),确保跨云节点能互通。
- 在各节点执行
- 检查容器DNS配置:在任意容器内执行
cat /etc/resolv.conf,确认nameserver为127.0.0.11(Docker内置DNS)或Swarm DNS的VIP地址,若异常则重启对应服务。 - 重建overlay网络:先停止使用
proxy网络的所有服务,执行docker network rm proxy,再重新创建网络docker network create --driver overlay proxy,最后重新部署服务。
二、docker swarm ca --rotate证书同步失败问题
- 确认节点状态:执行
docker node ls,确保GCP节点状态为Ready,无Unreachable标记。 - 重新加入节点修复证书:在未更新证书的GCP节点执行
docker swarm leave --force,然后用管理节点生成的最新docker swarm join-token worker命令重新加入Swarm,重新加入后节点会自动同步新证书。 - 查看Swarm日志排查错误:在管理节点和GCP节点执行
journalctl -u docker.service | grep swarm,查找证书同步相关的错误(如连接超时、权限拒绝),定位具体故障点。 - 再次验证控制平面端口:确认所有节点间的2377(TCP)、7946(TCP/UDP)、4789(UDP)端口双向连通,跨云环境需额外检查VPC peering规则、路由表是否允许这些端口的流量通行。
内容的提问来源于stack exchange,提问作者DaveIdito
相关产品推荐
相关产品推荐

