LocalDNS 绕过了 IPv6 Service 的 NAT 转发,直接与 CoreDNS Pod 建立连接,避免了 IPv6 NAT 支持差、性能低、连接不稳定的问题。
localdns 是触发式缓存,不会主动周期性去同步
图 1:未使用 LocalDNS(原方案)—— CoreDNS 经 IPv6 Service NAT 的问题
┌─────────────────────────────────────────────────────────────────┐
│ Kubernetes Node (IPv6) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ │ │ │ │ │ │
│ │ 业务 Pod │ │ kube-proxy │ │ CoreDNS Pod │ │
│ │ (IPv6: P1) │ │ (IPv6 NAT) │ │ (IPv6: C1) │ │
│ │ │ │ │ │ │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ │ 1. DNS 查询请求 │ │ │
│ │ → 解析 "kube-dns" │ │ │
│ │ │ │ │
│ │ 2. 经 DNS 缓存 │ │ │
│ │ → 命中 CoreDNS SVC │ │ │
│ │ (IPv6 ClusterIP: S1)│ │ │
│ │─────────────────────>│ │ │
│ │ │ │ │
│ │ │ 3. IPv6 Service NAT │ │
│ │ │ → 转发到 CoreDNS Pod│ │
│ │ │─────────────────────>│ │
│ │ │ │ │
│ │ │ 4. 响应:返回解析结果│ │
│ │ │<─────────────────────│ │
│ │ │ │ │
│ │ 5. 响应回传(经 NAT)│ │ │
│ │<─────────────────────│ │ │
│ │ │ │ │
│ └──────┴───────┘ └──────┴───────┘ └──────┴───────┘ │
│ │
│ 【核心问题】: │
│ 1. IPv6 场景下 kube-proxy NAT66 支持不完善(部分 CNI 不兼容) │
│ 2. NAT 转发增加延迟,高并发时易丢包 │
│ 3. 流量需经两层转发(Pod→SVC→Pod),稳定性依赖 NAT 规则有效性 │
└─────────────────────────────────────────────────────────────────┘
图 2:使用 LocalDNS(优化方案)—— 绕过 IPv6 Service NAT
┌─────────────────────────────────────────────────────────────────┐
│ Kubernetes Node (IPv6) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ │ │ │ │ │ │
│ │ 业务 Pod │ │ LocalDNS │ │ CoreDNS Pod │ │
│ │ (IPv6: P1) │ │ (节点本地) │ │ (IPv6: C1) │ │
│ │ │ │ │ │ │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ │ 1. DNS 查询请求 │ │ │
│ │ → 直接发往 LocalDNS │ │ │
│ │─────────────────────>│ │ │
│ │ │ │ │
│ │ │ 2. 本地缓存未命中? │ │
│ │ │ → 直接访问 CoreDNS Pod│ │
│ │ │ (跳过 Service NAT) │ │
│ │ │─────────────────────>│ │
│ │ │ │ │
│ │ │ 3. 响应:返回解析结果│ │
│ │ │<─────────────────────│ │
│ │ │ │ │
│ │ 4. 响应回传(无 NAT)│ │ │
│ │<─────────────────────│ │ │
│ │ │ │ │
│ └──────┴───────┘ └──────┴───────┘ └──────┴───────┘ │
│ │
│ 【核心优化】: │
│ 1. 流量直连 CoreDNS Pod,完全绕过 IPv6 Service NAT 环节 │
│ 2. 本地缓存减少重复查询,降低 CoreDNS 负载 │
│ 3. 仅一层转发(Pod→LocalDNS→CoreDNS Pod),延迟降低、稳定性提升 │
└─────────────────────────────────────────────────────────────────┘