k8s – coredns禁用ipv6解析

如果K8S集群宿主机没有关闭IPV6内核模块的话,容器请求coredns时的默认行为是同时发起IPV4和IPV6解析。

由于我们通常只使用IPV4地址,所以此时如果我们仅仅在coredns中配置DOMAIN -> IPV4地址的解析的话,当coredns收到IPV6解析请求的时候就会因为本地找不到配置而foward到upstream DNS服务器解析,从而导致容器的DNS解析请求变慢。

coredns提供了一种plugin叫做template,经过配置后可以给所有的IPV6请求立即返回一个空结果的应答,避免请求forward到上游DNS。

使用方法

template插件的文档地址:https://github.com/coredns/coredns/tree/master/plugin/template,coredns默认已携带此插件,大家只需要配置即可。

AAAA表示IPV6解析请求,rcode控制应答返回NXDOMAIN,即表示没有解析结果。

为了降低DNS查询压力,建议容器开启nscd本地化缓存,具体参考我的另外一篇博客:《K8S – 优化dns解析时间》

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~