首页/云/云与容器速查/集群 DNS 解析失败排查

集群 DNS 解析失败排查

Pod 里域名解析失败:先确认 CoreDNS 是否就绪,再验证 resolv.conf 与实际查询。常见根因:CoreDNS Pod 异常、网络策略拦 53 端口、ndots 引发的解析路径异常。

云与容器速查云更新于 2026-10-13

集群 DNS 解析失败是什么

Pod 内解析服务名或外网域名失败,报错常见 no such host、Temporary failure in name resolution、SERVFAIL。集群里 Pod 的 DNS 请求默认都发给 kube-dns 这个 Service,由 CoreDNS 处理,因此排查分两条线:CoreDNS 自身是否正常,以及调用方的解析配置与网络策略是否放行了 53 端口。

基本信息

解析入口Service kube-dns,后端是 kube-system 里的 CoreDNS Pod
调用方配置Pod 的 /etc/resolv.conf 写入 nameserver、search 域与 ndots
搜索域默认包含 svc.cluster.local 等,决定短名如何补全
ndots名字里点数少于此值时先拼搜索域,跨命名空间短名由此失败
日志kubectl logs -n kube-system deploy/coredns 看 SERVFAIL 与上游超时

现象与根因对照

现象根因处置
所有域名都解析不了CoreDNS 未就绪或 kube-dns 无端点先看 CoreDNS Pod 与 Endpoints 是否为空
只有跨命名空间短名失败短名未补全成完整域名改用 name.ns.svc.cluster.local
解析偶发超时上游 DNS 抖动或 CoreDNS 负载高看 CoreDNS 日志,扩副本并调缓存
某命名空间内全失败默认拒绝的策略拦了 53 端口放行 UDP/TCP 53 到 kube-dns
域外域名解析慢CoreDNS 转发上游配置不当检查 Corefile 的 forward 与 cache

排查命令

排查命令
kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide   # CoreDNS 是否就绪
kubectl exec -it web-1 -- cat /etc/resolv.conf                # 看 search 域与 ndots
kubectl exec -it web-1 -- nslookup kubernetes.default.svc.cluster.local
kubectl exec -it web-1 -- getent hosts db.dev.svc.cluster.local  # 换解析器交叉验证
kubectl logs -n kube-system deploy/coredns --tail=50          # 看错误与上游超时
kubectl get endpoints -n kube-system kube-dns                 # 端点是否为空

典型使用场景

  • 微服务用短名互访失败,需要用完整域名区分是搜索域问题还是服务压根不存在
  • 新上了默认拒绝的 NetworkPolicy,随后业务整体解析超时
  • CoreDNS 单副本所在节点故障,整个集群解析抖动
  • 外部依赖域名解析变慢,各类超时都指向连接建立阶段
  • 迁移命名空间后老配置里的短名不再解析,需要批量改完整域名
短名要拼 search 域才能解析:名字里的点数少于 ndots(默认 5)时,系统会先拼接搜索域尝试。跨命名空间访问写成 db.dev 在多数环境解析不到,用 db.dev.svc.cluster.local 最稳。
上游 DNS 抖动会表现为集群内解析普遍变慢,CoreDNS 日志里的 SERVFAIL 或 timeout 就是直接证据;此时改业务侧 dnsConfig 无效,应更换上游、增加副本与缓存。
先分清解析失败与网络不通:报 no such host 属 DNS 问题,报 connection refused 或超时才看链路,两条路径的排查手段完全不同,混着查会浪费大量时间。

易错点

  • 只测外网域名:集群内部名与上游解析是两条路径,结论不能互相替代
  • 忽略 search 域与 ndots:跨命名空间短名解析失败被误判成网络故障
  • NetworkPolicy 默认拒绝后忘了放行 53:业务整体解析超时,排查方向反而跑偏
  • CoreDNS 单副本部署:节点一故障就是集群级解析中断,应多副本并加反亲和
  • 改了 Corefile 不重载就断言没生效:需滚动重启或重载 CoreDNS 配置

数据来源与参考

  • Kubernetes Docs:DNS for Services and Pods
  • CoreDNS 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌