CoreDNS
实现K8s所有的域名解析。集群CoreDNS镜像版本:gcr.io/coredns/coredns:1.6.0。
NodeLocalDNS
节点本地域名解析。如果k8s集群pod数增加后,pod之间的相互访问,都需先通过域名解析,那么CoreDNS将不堪重负,所以通过Daemonset在每个节点都启动了一个NodeLocalDNS,缓解全局CoreDNS的域名解析压力,其本身k8s-dns镜像,但功能没有全局的CoreDNS镜像丰富。
集群NodeLocalDNS镜像版本:gcr.io/k8s-dns-node-cache:1.15.4。
Kubernetes的域名解析流程
k8s的pod域名解析配置和解析流程:
- pod首先检查自己的/etc/resolv.conf配置文件
nameserver 169.254.25.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
发现DNS服务器的地址为169.254.25.10,这个IP是NodeLocalDNS侦听DNS请求的IP,所以pod会先将dns请求发给本地的NodeLocalDNS进行域名解析。
cluster.local:53 {
errors
cache {
success 9984 30
denial 9984 5
}
reload
loop
bind 169.254.25.10 # 绑定的IP
forward . 10.233.0.3 {
force_tcp
}
prometheus :9253
health 169.254.25.10:9254
}
in-addr.arpa:53 {
errors
cache 30