cat case/PM-2021-0009.md

PagerDuty 2021-12-15 部署带缺陷的 DNS 配置变更,容器编排集群内服务全部无法解析 DNS

P1 · PagerDuty 容器编排集群内全部服务无法解析 DNS,事件通知/API 等大面积失败

summary

2021-12-15 00:17 UTC,PagerDuty 在其基础设施中部署了一项 DNS 配置变更,该变更包含一个在测试环境未被发现的缺陷,立即导致容器编排集群内运行的所有服务都无法解析 DNS,进而引发事件通知、API 等大面积失败。

timeline

00:17 UTC 部署带缺陷的 DNS 配置变更;容器编排集群内服务随即全部 DNS 解析失败;工程团队定位并回滚/修正该 DNS 配置,逐步恢复集群内解析与上层服务;数小时内恢复。

root_cause

DNS 配置变更存在缺陷(测试环境未覆盖该代码路径/配置组合),部署后使集群的 DNS 解析失效。本质是配置变更缺少对生产等价环境的充分验证与灰度。

amplifiers

① 单条 DNS 配置缺陷即让整个容器集群失聪:所有服务依赖 DNS。② 测试环境未复现:变更在预发未被拦截。③ 无灰度/快速回滚,恢复依赖人工定位。④ 事件通知系统自身依赖 DNS,形成排障与通知的双重受损。

mitigation

修正并回滚该 DNS 配置,恢复集群内解析;后续加强 DNS 类配置变更的等价环境验证与灰度发布。

lessons

DNS 是微服务架构的命脉,任何 DNS 配置变更都必须在等价生产环境中充分验证并灰度;核心配置变更需可一键回滚;排障/通知通道不应强依赖其监控的对象。

checklist

① DNS 配置变更在等价环境做端到端验证。② 关键网络配置走灰度与自动回滚。③ 监控对「集群内 DNS 解析失败」设即时告警。④ 通知/排障链路去依赖化。