配置 NodeLocal DNSCache
Overview
NodeLocal DNSCache 是一个集群插件,通过在集群节点上运行 DNS 缓存代理来提升集群 DNS 性能。该插件通过在每个节点本地缓存 DNS 响应,减少对中央 DNS 服务的负载,从而降低 DNS 查询延迟并提升集群稳定性。
Key Features
- 本地 DNS 缓存:在每个节点本地缓存 DNS 响应,减少查询延迟
- 性能提升:显著缩短应用的 DNS 查询时间
Important Notes
部署注意事项:
-
Kube-OVN Underlay 模式:该插件不支持在 Kube-OVN Underlay 模式下部署,若部署可能导致 DNS 查询失败。
-
Kubelet 重启:部署该插件会导致 kubelet 重启。
-
Pod 需重启生效:插件部署成功后不会影响正在运行的 Pod,仅对新创建的 Pod 生效。当 CNI 为 Kube-OVN 时,需要手动在 kube-ovn-controller 中添加参数 "--node-local-dns-ip=(本地 DNS 缓存服务器的 IP 地址)"。
-
NetworkPolicy 配置:如果集群配置了 NetworkPolicy,需要在 networkPolicy 中额外允许 node CIDR 和 nodeLocalDNSIP 的双向通信,确保正常通信。
-
MicroOS 集群升级:MicroOS 集群通过重建集群方式升级,会导致 kubelet 配置丢失。为使 NodeLocal DNS 配置在升级后保持持久,需要在集群模板的以下三个位置的
kubeletExtraArgs中添加--cluster-dns参数:KubeadmControlPlane→initConfiguration→nodeRegistration→kubeletExtraArgsKubeadmControlPlane→joinConfiguration→nodeRegistration→kubeletExtraArgsKubeadmConfigTemplate→template→spec→joinConfiguration→nodeRegistration→kubeletExtraArgs
在上述每个
kubeletExtraArgs中添加如下参数:
4.2.x 升级注意事项
当从低于 4.2.0(不含 4.2.0)版本升级到 4.2.x 版本时,由于 ResourcePatch 兼容性问题,需要执行以下步骤:
升级前:
- 记录 kube-ovn-controller ResourcePatch 配置中的
--node-local-dns-ip参数值 - 删除
deploy/kube-ovn-controller资源的 ResourcePatch
升级后:
- 手动将记录的
--node-local-dns-ip参数添加回 kube-ovn-controller 配置
注意:该兼容性问题在 4.3 及以上版本已修复,升级到 4.3+ 无需手动干预。
Installation
通过 Marketplace 安装
-
进入 管理员 > Marketplace > 集群插件。
-
在插件列表中搜索 "Alauda Build of NodeLocal DNSCache"。
-
点击 安装,打开安装配置页面。
-
配置所需参数:
-
查看部署注意事项,确保环境满足要求。
-
点击 安装 完成安装。
-
等待插件状态变为 "Ready"。
How It Works
架构
Configuration
网络策略配置
重要:如果集群启用了 NetworkPolicy,必须配置相应规则允许 DNS 流量访问 NodeLocal DNSCache。否则 Pod 可能无法解析 DNS 查询。
使用 NetworkPolicy 时,确保允许以下 DNS 流量: