NodeLocal DNSCache 通过在集群节点上作为 DaemonSet 运行 DNS 缓存代理来提高集群 DNS 性能。在当今的体系结构中,处于 ClusterFirst DNS 模式的 Pod 可以连接到 kube-dns serviceIP 进行 DNS 查询。通过 kube-proxy 添加的 iptables 规则将其转换为 kube-dns/CoreDNS 端点。借助此新架构,Pods 将可以访问在同一节点上运行的 DNS 缓存代理,从而避免了 iptables DNAT 规则和连接跟踪。本地缓存代理将查询 kube-dns 服务以获取集群主机名的缓存缺失(默认为 cluster.local 后缀)。
kubernets 对象名称 | 类型 | 请求资源 | 所属 Namespace |
---|---|---|---|
node-local-dns | DaemonSet | 每节点50mCPU,5Mi内存 | kube-system |
kube-dns-upstream | Service | - | kube-system |
node-local-dns | ServiceAccount | - | kube-system |
node-local-dns | Configmap | - | kube-system |
仅支持 1.14 版本以上的 kubernetes 版本。
VPC-CNI 同时支持 kube-proxy 的 iptables 和 ipvs 模式,GlobalRouter 仅支持 kube-proxy 的 iptables 模式,ipvs 模式下需要更改 kubelet 参数,详情请参见 官方文档。
集群创建后没有调整过 dns 服务对应工作负载的相关 name 和 label,检查集群 kube-system 命名空间中存在以下 dns 服务的相关工作负载:
IPVS 的独立集群,需要确保 add-pod-eni-ip-limit-webhook ClusterRole 具备以下权限:
- apiGroups:
- ""
resources:
configmaps
- secrets
- namespaces
- services
verbs:
list
- watch
- get
- create
- update
- delete
- patch
IPVS 的独立集群和托管集群,都需要确保 tke-eni-ip-webhook Namespace 下的 add-pod-eni-ip-limit-webhook Deployment 镜像版本大于等于 v0.0.6。
当安装 NodeLocal DNSCache 后,推荐为 CoreDNS 增加如下配置:
template ANY HINFO . {
rcode NXDOMAIN
}
forward . /etc/resolv.conf {
prefer_udp
}
本页内容是否解决了您的问题?