NodeLocal DNSCache

NOTE

从 ACP 4.5 开始,Alauda Build of NodeLocal DNSCache 更名为 Alauda Container Platform Node DNS Cache。从 Customer Portal 下载插件时,请搜索 Alauda Container Platform Node DNS Cache。重命名前发布的插件包上传后,在平台中仍会显示为 Alauda Build of NodeLocal DNSCache。

概述

NodeLocal DNSCache 是一种集群插件,通过在集群节点上运行 DNS 缓存代理来提升集群 DNS 性能。该插件会在每个节点上本地缓存 DNS 响应,从而减少 DNS 查询延迟、提升集群稳定性,并降低中央 DNS 服务的负载。

主要功能

  • 本地 DNS 缓存:在每个节点上本地缓存 DNS 响应,以减少查询延迟
  • 提升性能:显著缩短应用程序的 DNS 查询时间

重要说明

WARNING

部署注意事项:

  1. Kube-OVN Underlay 模式:该插件不支持在 Kube-OVN Underlay 模式下部署。若在此模式下部署,可能导致 DNS 查询失败。

  2. 重启 Kubelet:部署该插件会导致 kubelet 重启。

  3. 需要重启 Pod:插件成功部署后,不会影响正在运行的 Pod,只会对新创建的 Pod 生效。当 CNI 为 Kube-OVN 时,需要手动将参数 "--node-local-dns-ip=(本地 DNS 缓存服务器的 IP 地址)" 添加到 kube-ovn-controller。

  4. NetworkPolicy 配置:如果集群中配置了 NetworkPolicy,需要在 networkPolicy 中额外允许节点 CIDR 和 nodeLocalDNSIP 的入站和出站流量,以确保正常通信。

安装

通过 Marketplace 安装

  1. 前往 Administrator > Marketplace > Cluster Plugins。

  2. 在插件列表中搜索 "Alauda Container Platform Node DNS Cache"(重命名前发布的插件包显示为 "Alauda Build of NodeLocal DNSCache")。

  3. 点击 Install,打开安装配置页面。

  4. 配置所需参数:

    参数描述示例值
    IP节点本地 DNS 缓存服务器的 IP 地址。对于 IPv4,建议使用 169.254.0.0/16 范围内的地址,优先使用 169.254.20.10。对于 IPv6,建议使用 fd00::/8 范围内的地址,优先使用 fd00::10。169.254.20.10
  5. 查看部署说明,并确保环境满足要求。

  6. 点击 Install 完成安装。

  7. 等待插件状态变为 "Ready"。

工作原理

架构

Pod → NodeLocal DNSCache → [Cache Hit] → Pod
           ↓
    [Cache Miss] → CoreDNS → Response → Cache & Pod

配置

网络策略配置

重要:如果集群启用了 NetworkPolicy,则必须配置适当的规则,以允许 DNS 流量访问节点本地 DNS 缓存。没有这些规则,Pod 可能无法解析 DNS 查询。

使用 NetworkPolicy 时,请确保允许以下 DNS 流量:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-dns-cache
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 169.254.20.10/32 # NodeLocal DNS IP address
    ports:
    - protocol: UDP
      port: 53
    - protocol: TCP
      port: 53
  egress:
  - to:
    - ipBlock:
        cidr: 169.254.20.10/32 # NodeLocal DNS IP address
    ports:
    - protocol: UDP
      port: 53
    - protocol: TCP
      port: 53