Docker中的DNS查询没有命中缓存



我使用Container-Optimized OS from Google来运行我的Docker容器之一。我发现我对谷歌云DNS的DNS查询量非常高(数十亿),这非常奇怪。如果它只用于内部DNS查询

因此,在尝试从容器内部执行dig之后,我看到它总是执行对nameserver的查询(从/etc/resolve.conf其谷歌名称服务器169.254.169.254)

所以每次查询它仍然执行一个查询到名称服务器,而不触及缓存,甚至一次。

所以我去检查它在ubuntu实例上是如何工作的,它在那里工作得很好。我还检查了kubernetes上的部署,它们像预期的那样从kube-dns命中缓存。

有办法解决吗?我得到了数十亿的查询,而不是使用正确的DNS TTL,在这种情况下会被忽略。

169.254.169.254不是名称服务器。这是将请求转发给DNS服务器的解析器的虚拟IP地址。

如果你想缓存查询,那么你必须在容器中配置缓存解析器。看看像dnsmasq这样的产品。

最新更新