云容器引擎 CCE-工作负载DNS配置说明:DNS配置项说明
DNS配置项说明
nameserver 10.247.x.xsearch default.svc.cluster.local svc.cluster.local cluster.localoptions ndots:5
- nameserver:容器解析 域名 时查询的DNS服务器的IP地址列表。如果设置为10.247.x.x说明DNS对接到Kube-DNS/CoreDNS,如果是其他IP地址,则表示采用云上DNS或者用户自建的DNS。
- search:定义域名的搜索域列表,当访问的域名不能被DNS解析时,会把该域名与搜索域列表中的域依次进行组合,并重新向DNS发起请求,直到域名被正确解析或者尝试完搜索域列表为止。对于CCE集群来说,容器的搜索域列表配置3个域,当解析一个不存在的域名时,会产生8次DNS查询,因为对于每个域名需要查询两次,分别是IPv4和IPv6。
- options:定义域名解析配置文件的其他选项,常见的有timeout、ndots等等。
Kubernetes集群容器的域名解析文件设置为options ndots:5,该参数的含义是当域名的“.”个数小于ndots的值,会先把域名与search搜索域列表进行组合后进行DNS查询,如果均没有被正确解析,再以域名本身去进行DNS查询。当域名的“.”个数大于或者等于ndots的值,会先对域名本身进行DNS查询,如果没有被正确解析,再把域名与search搜索域列表依次进行组合后进行DNS查询。
如查询www.***.com域名时,由于该域名的“.”个数为2,小于ndots的值,所以DNS查询请求的顺序依次为:www.***.default.svc.cluster.local、www.***.com.svc.cluster.local、 www.***.com.cluster.local和 www.***.com,需要发起至少7次DNS查询请求才能解析出该域名的IP。可以看出,这种配置在访问外部域名时,存在大量冗余的DNS查询,存在优化点。
完整的Linux域名解析文件配置项说明可以参考文档:http://man7.org/linux/man-pages/man5/resolv.conf.5.html。