DNS解析异常问题排查(1) 解决方案 修改StatefulSets Pod YAML中ServiceName名称,确保和其暴露SVC的名字一致。 CoreDNS Pod负载高 问题现象 部分节点或全部节点接入CoreDNS的业务,Pod解析域名的延迟增加、概率性或持续性失败。 检查CoreDNS Pod运行状态发现各副本CPU、Memory使用量接近其资源限制。 问题原因 由于CoreDNS副本数不足、业务请求量高等情况导致的CoreDNS负载高。 解决方案 考虑采用NodeLocal DNSCache缓存方案,提升DNS解析性能,降低CoreDNS负载。 适当扩充CoreDNS副本数。 常见请求日志 CoreDNS Pod负载不均 问题现象 部分接入CoreDNS的业务Pod解析域名的延迟增加、概率性或持续性失败。 检查CoreDNS Pod运行状态发现各副本CPU使用量负载不均衡。CoreDNS副本数少于两个,或多个CoreDNS副本位于同节点上。 问题原因 由于CoreDNS副本调度不均、Service亲和性设置导致CoreDNS Pod负载不均衡。 解决方案 扩容并打散CoreDNS副本到不同的节点上。参考:合理分配CoreDNS副本运行的位置。 负载不均衡时,可禁用kubedns服务的亲和性属性。参考:关闭kubedns服务的session亲和性配置。 合理分配CoreDNS副本运行的位置 建议您在部署CoreDNS副本时,应将CoreDNS副本打散在不同可用区、不同集群节点上,避免单节点、单可用区故障。CoreDNS默认配置了按节点的弱反亲和性,可能会因为节点资源不足导致部分或全部副本部署在同一节点上,如果遇到这种情况,请删除Pod重新触发其调度来调整。 CoreDNS所运行的集群节点应避免CPU、内存用满的情况,否则会影响域名解析的QPS和响应延迟。当集群节点条件允许时,可以考虑将CoreDNS调度至独立的集群节点上,以提供稳定的域名解析服务。
来自: