系统信息:
- Docker 引擎版本:17.06.2-ee-6
我和我的团队最近一直在观察我们的 Docker 集群中的奇怪行为,其中对服务(此处myservice
:)的 REST 请求随机失败并被拒绝连接。
为了进行故障排除,我们删除并重新部署了该myservice
服务。突然间,拒绝连接的请求数量增加,尽管所有容器都是刚刚启动并且运行正常。
因此,我们host myservice
从同一网络中的容器运行并得到了如下结果:
myservice has address 172.10.13.241
myservice has address 172.10.0.81
Host myservice not found: 3(NXDOMAIN)
结果显示了两个 IP 地址,当直接测试 IP 地址(例如使用 curl)时,该地址172.10.13.241
有效,而该地址172.10.0.81
总是因连接被拒绝而失败 - 解释了为什么 50% 的请求都被拒绝连接。
然后我们myservice
再次移除所有容器并运行host myservice
一次,发现以下结果:
myservice has address 172.10.0.81
Host myservice not found: 3(NXDOMAIN)
虽然服务已被删除,但损坏的 IP 地址仍然被注册。
我们通过重新启动运行命令的容器进一步确保我们不会被某些 DNS 缓存所欺骗,但结果保持不变。
问题:
- 怎么会这样呢?
- 我可以/如何从 Docker 网络中删除孤立的 DNS 映射?
- 我们可以做些什么来防止这种情况发生?