1. 课程导论:DNS故障排查的重要性、证书轮换与CoreDNS的关系、本课程学习目标与前置知识

1.1 为什么DNS故障排查是SRE的核心能力

在云原生架构中,DNS(Domain Name System)是集群内外部通信的“第一跳”。Kubernetes 集群内的 Pod 通过 CoreDNS 解析 Service 名称、外部域名;一旦 DNS 出现故障,微服务之间的调用链会立即断裂,导致级联超时、服务雪崩。根据 CNCF 的调查报告,DNS 问题占 Kubernetes 集群故障的 30% 以上,且往往表现为间歇性超时、部分 Pod 解析失败等难以定位的“软故障”。

作为 SRE,掌握 DNS 故障排查能力意味着:

  • 缩短 MTTR(平均修复时间):从“怀疑网络”到“定位 DNS 缓存/证书/上游超时”的路径更短。
  • 避免误判:很多“网络抖动”或“应用慢”的根因其实是 DNS 解析超时,而非 TCP 连接或应用逻辑问题。
  • 保障集群自愈:证书轮换、CoreDNS 升级等日常运维操作,如果缺乏 DNS 层面的监控和排查手段,极易引发生产事故。
经验提示: 在大型 Kubernetes 集群中,DNS 解析超时往往不是 CoreDNS 进程本身崩溃,而是上游 DNS 服务器响应慢、证书链验证失败、或 conntrack 表满导致 UDP 丢包。本课程将逐一拆解这些场景。

1.2 证书轮换与CoreDNS的关系

Kubernetes 集群内部通信广泛使用 TLS 证书,包括:

  • kubelet 与 API Server 之间的双向 TLS
  • CoreDNS 与 API Server 之间的 etcd 或 kube-apiserver 通信
  • CoreDNS 转发上游 DNS 时的 TLS 连接(如使用 dns-over-tls)

当集群执行证书轮换(例如更新 kubelet 证书、CoreDNS 的 etcd 客户端证书、或上游 DNS 的 CA 证书)时,如果 CoreDNS 没有正确加载新证书、或证书链不完整,会导致:

故障场景 表现 根因
CoreDNS 与 API Server 通信失败 Pod 无法解析 ClusterIP Service CoreDNS 的 etcd 客户端证书过期,无法 watch Service 变化
上游 DNS 证书验证失败 外部域名解析超时或返回 SERVFAIL CoreDNS 转发配置中的 TLS 证书未更新,或 CA 证书不匹配
kubelet 证书轮换后 DNS 缓存未刷新 部分节点解析异常,其他节点正常 kubelet 使用旧证书与 CoreDNS 通信,被 CoreDNS 的 TLS 验证拒绝

下图展示了证书轮换影响 CoreDNS 解析的核心链路:

证书轮换影响 CoreDNS 解析链路 证书轮换触发 kubelet / etcd / CA CoreDNS 证书加载 Corefile / 挂载 Secret 上游 DNS 验证 TLS 握手 / 证书链 故障结果:DNS 解析超时 / SERVFAIL Pod 间通信中断 → 服务雪崩 → 告警风暴 ⚠ 关键观察: 证书轮换后,CoreDNS 不会自动重新加载证书,需要手动触发滚动重启或使用 reload 插件。

1.3 本课程学习目标

完成本课程后,你将能够:

  1. 诊断证书轮换导致的 CoreDNS 解析超时:通过 CoreDNS 日志、metrics、tcpdump 等工具,快速定位是证书过期、证书链不完整、还是证书未加载。
  2. 掌握 CoreDNS 证书管理最佳实践:包括证书自动轮换、Corefile 中 TLS 配置的正确写法、以及使用 cert-manager 管理集群证书。
  3. 构建 DNS 故障排查工具箱:熟练使用 dig、nslookup、kubectl exec、coredns -plugins、tcpdump 等工具进行分层排查。
  4. 设计高可用的 CoreDNS 架构:避免单点故障,配置合理的上游 DNS 冗余和超时策略。
  5. 制定证书轮换的 SOP(标准操作流程):确保轮换操作不影响集群 DNS 解析。

1.4 前置知识要求

为了获得最佳学习效果,建议你具备以下基础:

领域 具体要求 推荐学习资源
Kubernetes 基础 理解 Pod、Service、ConfigMap、Secret 等核心资源;能使用 kubectl 操作集群 Kubernetes 官方教程
DNS 协议基础 了解 DNS 解析流程、A/AAAA/CNAME/SRV 记录、递归与迭代查询 RFC 1035 / 相关博客
TLS/SSL 证书 理解证书链、CA、私钥/公钥、证书过期与轮换概念 OpenSSL 入门指南
Linux 网络调试 会使用 tcpdump、ss、iptables 等工具进行基本网络排查 《TCP/IP 详解》
注意: 如果你对 CoreDNS 的 Corefile 配置完全陌生,建议先阅读 CoreDNS 官方文档的“Plugins”章节。本课程会涉及 forward、kubernetes、tls、reload 等插件的配置与调试。

1.5 课程内容概览

本课程共 30 章,分为四个模块:

  • 模块一(第1-5章):DNS 故障排查基础与 CoreDNS 架构
  • 模块二(第6-15章):证书轮换场景深度剖析与实验
  • 模块三(第16-25章):实战排查工具与案例
  • 模块四(第26-30章):高可用设计与自动化运维

下图展示了课程的知识体系结构:

课程知识体系结构 模块一 DNS基础与CoreDNS架构 第1-5章 模块二 证书轮换深度剖析 第6-15章 模块三 实战排查与案例 第16-25章 模块四 高可用与自动化 第26-30章 📌 学习路径建议: 1. 先掌握模块一的 CoreDNS 架构和 Corefile 配置 2. 再通过模块二的实验理解证书轮换的故障模式 3. 最后用模块三、四的案例和自动化方案巩固实战能力

1.6 本章小结