他的回复:
前面几楼把分段对照、search 放大、conntrack、NodeLocal DNSCache 讲得很全了,我补一个落地时容易被忽略的角度:定位要留证据、按时间对齐,而不是凭感觉扩容。 一、故障发生时先留三样东西再动手。记下故障发生的准确时间、是哪些节点的哪些 Pod、在查哪个域名。没有这三样,后面看日志和监控就对不上号,扩容了也不知道有没有用。 二、看 CoreDNS 是不是被自己的日志打满。有的集群开了日志记录,高峰期每条查询都记一条日志,写盘会反过来拖慢解析。先看日志量是不是和查询量一起涨,再决定要不要把日志级别调低、只留错误日志。 三、检查业务侧的重试有没有放大故障。应用里如果对解析超时做了立刻重试,一次超时会变成多次查询,高峰期直接把 CoreDNS 打满。先看客户端的重试次数和间隔,必要时加退避,而不是只扩服务端。 四、改动要一次只改一个。扩副本、调缓存、收紧解析配置、装节点本地缓存,不要同时上。改完一个,用连续查询看超时率和延迟分位数有没有回落,确认有效再动下一个,不然不知道是哪一步起的作用。 一句话:先留时间、节点、域名三样证据,再查日志量和客户端重试,最后一次只改一个、改完用连续查询验证。