为什么未在Kubernetes上立即启用dns本地缓存?

时间:2018-07-23 18:25:45

标签: dns kubernetes

我记得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似乎已经过时了,我不确定为什么。

1 个答案:

答案 0 :(得分:0)

自宣布GenerationType.SEQUENCE以来,CoreDNS已作为默认DNS服务器包含在GenerationType.AUTOKubernetes 1.9+工具等中,并替换了以前的kubeadm(基于minikube)。

它是作为Caddy Web服务器和中间件链的分支而构建的,每个中间件组件都具有某些DNS功能。如果您已经使用kube-dns,则可以使用此Link启动dnsmasq

CoreDNS已具备缓存和转发功能,假设缓存作为单独的组件运行,并且打破了使用kube-dns的依赖。

CoreDNS

您可以使用很多plugins来扩展DNS功能,例如代理请求,重写请求,对端点进行运行状况检查以及将指标发布到Prometheus中。