我记得DNS记录过去在各种Linux发行版中本地缓存,但是多年来似乎已经改变(DNS caching in linux)。
在我们的环境(非K8S)中,由于DNS查找,我们发现每个请求都有明显的延迟(1-2ms)。
我还注意到,默认情况下(https://github.com/kubernetes/kubernetes/issues/45363)在K8S中没有本地DNS缓存,并且默认情况下(https://coreos.com/os/docs/latest/configuring-dns.html)也禁用了CoreOS中的DNS缓存。
鉴于我们正在考虑向我想知道的K8S迁移;为什么没有特别为Kubernetes启用此功能?
我的唯一理论是在kube-dns记录中进行抢先更新以确保高可用性;但是我不确定K8S是否真的做到了?
作为一种解决方法,如果我要在每个节点上运行dnsmasq,我会破坏事情吗?我注意到有人尝试将K8S中的设置设为默认设置,但是这些尝试/ PR似乎已经过时了,我不确定为什么。
答案 0 :(得分:0)
自宣布GenerationType.SEQUENCE
以来,CoreDNS已作为默认DNS服务器包含在GenerationType.AUTO
,Kubernetes 1.9+
工具等中,并替换了以前的kubeadm
(基于minikube
)。
它是作为Caddy Web服务器和中间件链的分支而构建的,每个中间件组件都具有某些DNS功能。如果您已经使用kube-dns
,则可以使用此Link启动dnsmasq
。
CoreDNS已具备缓存和转发功能,假设缓存作为单独的组件运行,并且打破了使用kube-dns
的依赖。
CoreDNS
您可以使用很多plugins来扩展DNS功能,例如代理请求,重写请求,对端点进行运行状况检查以及将指标发布到Prometheus中。