DNS解析异常问题排查 集群外部域名解析异常 问题现象 业务Pod可以正常解析集群内部域名,但无法解析某些集群外部域名。 问题原因 上游服务器域名解析返回异常。 解决方案 修改CoreDNS配置文件corefile,开启log模块以打印查询请求日志,检查CoreDNS DNS查询请求日志。 常见请求日志 CoreDNS接收到请求并回复客户端后会打印一行日志,示例如下: plaintext 其中包含状态码RCODE NOERROR,代表解析结果正常返回。 [INFO] 172.20.2.25:44525 36259 "A IN nginx.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd 110 0.000116946s 常见返回码RCODE 返回码RCODE 含义 原因 NXDOMAIN 域名不存在 容器内请求域名时,会被拼接上search后缀,若拼接的结果域名不存在,则会出现该请求码。如果确认日志中请求的域名内容存在,则说明存在异常。 SERVFAIL 上游服务器异常 常见于无法连接上游DNS服务器等情况。 REFUSED 拒绝应答 常见于CoreDNS配置或集群节点/etc/resolv.conf文件指向的上游DNS服务器无法处理该域名的情况,请排查CoreDNS配置文件。 当CoreDNS DNS查询请求日志中显示集群外部域名返回为NXDOMAIN、SERVFAIL、REFUSED时,说明CoreDNS的上游DNS服务器返回异常。请提交工单排查。 StatefulSets Pod域名无法解析 问题现象 Headless服务无法通过Pod域名解析。 问题原因 StatefulSets Pod YAML中ServiceName必须和其暴露SVC的名字一致,否则无法访问Pod域名(例如pod.headlesssvc.ns.svc.cluster.local),只能访问到服务域名(例如headlesssvc.ns.svc.cluster.local)。