DNS 解析失败的定位与修复
报 Could not resolve host、Name or service not known、Temporary failure in name resolution。用 IP 能连通,用域名不行。
cat /etc/resolv.conf
resolvectl status
dig +short example.com
dig @8.8.8.8 example.com
nslookup example.com
getent hosts example.com
cat /etc/nsswitch.conf
ping -c 1 <ip>
容器内:
cat /etc/resolv.conf
getent hosts kubernetes.default.svc.cluster.local
/etc/resolv.conf 里的 DNS 服务器不可达或配置错误。dig @<dns-server> 区分是解析器还是上游问题。/etc/resolv.conf 是否被 DHCP/NetworkManager 覆盖,改配置源而不是只改文件。search 和 ndots,必要时使用 FQDN(末尾加点)。dig — DNS 查询resolvectl — systemd-resolved 状态getent — 按 NSS 顺序解析kubectl — 查看 CoreDNS合上页面,先回答,再展开对照。
dig example.com,再用 dig @8.8.8.8 example.com 对比。换服务器能解析,说明问题在本地解析器配置。/etc/resolv.conf 的 search 域和 ndots 有关。必要时使用末尾加点的 FQDN。