为什么未在Kubernetes上启用现成的dns本地缓存?

为什么未在Kubernetes上启用现成的dns本地缓存?,dns,kubernetes,Dns,Kubernetes,我记得过去,DNS记录在本地缓存在各种linux发行版上,但这些年来似乎有所改变() 在我们的环境(非K8S)中,由于DNS查找,我们发现每个请求都有明显的延迟(1-2ms) 我还注意到默认情况下K8S中没有本地DNS缓存(),并且默认情况下CoreOS中的DNS缓存也被禁用() 考虑到我们正在考虑迁移到K8S,我想知道;为什么特别是Kubernetes没有启用此功能 我唯一的理论是kube dns记录会提前更新,以确保高可用性;但我不确定K8S是否真的做到了 作为一种解决方法,如果我在每个节点

我记得过去,DNS记录在本地缓存在各种linux发行版上,但这些年来似乎有所改变()

在我们的环境(非K8S)中,由于DNS查找,我们发现每个请求都有明显的延迟(1-2ms)

我还注意到默认情况下K8S中没有本地DNS缓存(),并且默认情况下CoreOS中的DNS缓存也被禁用()

考虑到我们正在考虑迁移到K8S,我想知道;为什么特别是Kubernetes没有启用此功能

我唯一的理论是kube dns记录会提前更新,以确保高可用性;但我不确定K8S是否真的做到了


作为一种解决方法,如果我在每个节点上运行dnsmasq,我会破坏它吗?我注意到有人试图在K8S中设置默认设置,但这些尝试/PR似乎已经过时了,我不知道为什么。

自从宣布Kubernetes 1.9+以来,已经包含在
kubeadm
minikube
工具中,等作为默认DNS服务器,并取代以前的
kube DNS
(基于
dnsmasq

它是作为web服务器和中间件链的分支构建的,每个中间件组件都带有一些DNS功能。如果您已经使用了
kube dns
,则可以使用此选项启动
CoreDNS

CoreDNS已经配备了缓存和转发功能,假设缓存作为一个单独的组件运行,并代理使用
dnsmasq
的依赖关系

. {
    proxy . 8.8.8.8:53
    cache example.org
}
您可以使用许多扩展DNS功能,如代理请求、重写请求、对端点执行运行状况检查以及将度量发布到中