Kubernetes 集群内 DNS 解析失败的定位与修复
Pod 内解析 Service 名称失败,报 no such host、Temporary failure in name resolution 或超时。用 IP 能访问,用 service.namespace.svc.cluster.local 不行。
kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide
kubectl get svc -n kube-system kube-dns
kubectl get endpoints -n kube-system kube-dns
kubectl logs -n kube-system -l k8s-app=kube-dns --tail=50
kubectl run -it --rm debug --image=busybox:1.36 --restart=Never -- nslookup kubernetes.default
容器内:
cat /etc/resolv.conf
nslookup <service>.<namespace>.svc.cluster.local
kube-dns Service 没有 Endpoints,或 selector 错误。ndots/search 配置导致短域名解析到错误位置。dnsConfig 的 ndots。kubectl — CoreDNS、Service、Endpointsnslookup / dig — 容器内解析验证k8s 分支的 coredns 页面 — 配置细节合上页面,先回答,再展开对照。
kube-dns Service 及其 Endpoints 是否正常。dnsConfig 的 ndots/search,修 Corefile 或节点 resolv.conf 的上游配置。