You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s Pod内添加Helm仓库失败,DNS解析异常求助

Pod内DNS解析失败排查方案(RKE Rancher集群)

针对你遇到的Pod内无法解析域名(报错dial tcp: lookup kfsoftware.github.io on 10.43.0.10:53 server misbehaving),但节点VM正常的问题,按以下步骤排查:

1. 检查CoreDNS运行状态

CoreDNS是K8s默认DNS组件,先确认它的Pod是否正常:

kubectl get pods -n kube-system -l k8s-app=kube-dns

如果有Pod处于CrashLoopBackOff或Pending状态,直接查看日志定位问题:

kubectl logs -n kube-system -l k8s-app=kube-dns

重点关注上游DNS连接失败、配置语法错误类日志。

2. 验证CoreDNS上游DNS配置

Pod的DNS请求会转发给CoreDNS,需确保CoreDNS配置了私有网络可用的上游DNS(和节点VM使用的一致):
查看CoreDNS的ConfigMap:

kubectl get configmap coredns -n kube-system -o yaml

找到Corefile段的forward配置,默认可能为:

forward . /etc/resolv.conf

若私有网络环境下节点DNS无法被CorePod访问,直接替换为节点VM使用的DNS IP,比如:

forward . 192.168.1.53  # 替换为你的私有DNS服务器IP

修改后重启CoreDNS生效:

kubectl rollout restart deployment coredns -n kube-system

3. 测试Pod内DNS解析能力

用busybox Pod直接测试解析:

kubectl run -it --rm --image=busybox:1.28 dns-test -- nslookup kfsoftware.github.io

若失败,尝试直接用节点的DNS解析验证网络连通性:

kubectl run -it --rm --image=busybox:1.28 dns-test -- nslookup kfsoftware.github.io 192.168.1.53  # 替换为节点VM的DNS IP

如果此命令成功,说明CoreDNS上游配置存在问题;若仍失败,需排查Pod到节点DNS的网络连通性。

4. 检查集群网络插件状态

RKE默认使用Canal或Flannel,确认网络插件Pod正常运行且未阻断DNS流量:

kubectl get pods -n kube-system -l app=canal  # 若用Flannel则替换为app=flannel

若有异常Pod,查看日志确认是否存在网络策略或路由问题。同时检查是否有自定义NetworkPolicy阻断了Pod到kube-dns(10.43.0.10)53端口的UDP/TCP流量。

5. 检查目标Pod的DNS配置

查看出问题的Pod的DNS相关配置,确认是否继承集群默认设置:

kubectl describe pod <your-pod-name> | grep -A 5 -B 5 DNS

重点确认Nameservers是否为10.43.0.10(kube-dns的ClusterIP),Search和Options配置无异常。


内容的提问来源于stack exchange,提问作者AYUSH SINGHANIA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:52:21