无法对Kubernetes Service执行nslookup,报错NXDOMAIN求解决
Kubernetes Service nslookup 报 NXDOMAIN 问题排查方案
针对你遇到的nslookup kubernetes返回server can't find kubernetes: NXDOMAIN的问题,给你几个具体的排查方向:
先尝试使用完整域名查询:执行
nslookup kubernetes.default.svc.cluster.local,默认Kubernetes Service的FQDN是这个,直接用短域名可能因为Pod的DNS搜索域配置不全导致解析失败。检查CoreDNS组件状态:
- 执行
kubectl get pods -n kube-system,确认coredns的Pod处于Running状态,没有频繁重启的情况。 - 查看CoreDNS日志:
kubectl logs -n kube-system <你的coredns-pod名称>,排查是否有配置错误、权限问题或域名解析的异常日志。
- 执行
验证Pod的DNS配置:
- 进入出问题的Pod,查看
/etc/resolv.conf文件内容,正常情况下应该包含:
如果缺少搜索域或nameserver地址错误,需要检查Node节点上kubelet的nameserver 10.96.0.10 search default.svc.cluster.local svc.cluster.local cluster.local options ndots:5--cluster-dns和--cluster-domain参数是否配置正确。
- 进入出问题的Pod,查看
确认默认Kubernetes Service存在:
- 执行
kubectl get svc kubernetes -n default,确保这个默认的ClusterIP Service存在,且ClusterIP正常分配。
- 执行
更换测试镜像:
- 有些busybox镜像的nslookup工具存在兼容性问题,试试用
nicolaka/netshoot镜像测试:
进入容器后再执行kubectl run -it --rm --image=nicolaka/netshoot test-dnsnslookup kubernetes和完整域名查询。
- 有些busybox镜像的nslookup工具存在兼容性问题,试试用
排查网络策略限制:
- 执行
kubectl get networkpolicies --all-namespaces,检查是否有NetworkPolicy规则阻止了Pod访问kube-system命名空间下CoreDNS的53端口(UDP和TCP协议)。
- 执行
内容的提问来源于stack exchange,提问作者user5592626
相关产品推荐
相关产品推荐

