NodeLocal DNSCache加速 手动指定DNSConfig 可以通过修改Pod进行手动指定DNSConfig,示例配置如下: apiVersion: v1 kind: Pod metadata: name: nginxdemo namespace: default spec: containers: image: registryvpcgzsyj.crs.ctyun.cn:30015/library/nginxphoton:v1.8.6 name: demo dnsPolicy: None dnsConfig: nameservers: ["169.254.20.10","172.21.0.10"] searches: default.svc.cluster.local svc.cluster.local cluster.local options: name: ndots value: "3" name: attempts value: "2" name: timeout value: "1" 说明 1、dnsPolicy:必须为None; 2、nameservers:配置成169.254.20.10和kubedns的ClusterIP对应的IP地址; 3、searches:设置搜索域,保证集群内部域名能够被正常解析; 4、ndots:默认为5,可以适当降低ndots以提升解析效率。更多信息,请参见resolv.conf。 配置kubelet启动参数 kubelet通过–clusterdns和–clusterdomain两个参数来全局控制Pod DNSConfig。在 /etc/systemd/system/kubelet.service.d/10kubeadm.conf 配置文件中需要增加一个–clusterdns参数,设置值为链路本地地址169.254.20.10,染后执行sudo systemctl daemonreload和sudo systemctl restart kubelet重启kubelet。 clusterdns169.254.20.10 clusterdns clusterdomain 参数解释如下: clusterdns:部署Pod时,默认采用的DNS服务器地址,默认只引用了 kubedns 的服务IP,需要增加一个对链路本地地址169.254.20.10的引用; clusterdomain:部署Pod时,默认采用的DNS搜索域,保持原有搜索域即可,一般为 cluster.local。