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

Kubernetes集群control-plane-2/3节点CoreDNS DNS查询超时问题排查求助

Kubernetes集群control-plane-2/3节点CoreDNS DNS查询超时问题排查求助

您好,针对您遇到的这个DNS查询异常问题,我整理了一套逐步排查的方案,您可以按顺序逐一验证,定位根因:

一、先确认节点到CoreDNS ClusterIP的基础连通性

  • 在control-plane-2和control-plane-3节点上,先测试与CoreDNS ClusterIP 10.96.0.10的连通性:
    ping 10.96.0.10 -c 5
    
    如果ping不通,说明节点到CoreDNS服务的网络路径存在阻塞,接下来需要:
    • 检查节点的防火墙/iptables规则,确认是否放行53端口的UDP和TCP流量(DNS同时依赖这两种协议):
      iptables -L INPUT -n | grep 53
      iptables -L FORWARD -n | grep 53
      
    • 检查节点的路由表,确认集群Pod网段的路由是否正确配置:
      ip route
      

二、检查CoreDNS组件的运行状态

  • 在能正常操作集群的节点(比如control-plane-1)上,查看CoreDNS Pod的状态和分布:
    kubectl get pods -n kube-system -l k8s-app=kube-dns
    
    重点确认:
    • 所有CoreDNS Pod是否处于Running状态,没有CrashLoopBackOff或Pending的情况
    • Pod是否调度到了所有control-plane节点(如果您的集群配置允许)
  • 如果发现Pod状态异常,查看Pod日志获取报错信息:
    kubectl logs -n kube-system <coredns-pod-name>
    
    常见的报错包括配置文件语法错误、权限不足、上游DNS不可达等。

三、验证kube-proxy的转发功能

CoreDNS的ClusterIP依赖kube-proxy生成的转发规则,所以需要检查control-plane-2/3节点上的kube-proxy状态:

  • 查看kube-proxy服务是否正常运行:
    systemctl status kube-proxy
    
    如果服务未运行,先启动它:systemctl start kube-proxy;如果运行异常,查看日志排查:
    journalctl -u kube-proxy -f
    
  • 检查节点上是否存在针对CoreDNS ClusterIP的iptables转发规则:
    iptables-save | grep 10.96.0.10
    
    如果没有相关规则,说明kube-proxy未正确生成转发规则,可以尝试重启kube-proxy服务:systemctl restart kube-proxy

四、检查节点的网络插件状态

如果您的集群使用了第三方网络插件(如Calico、Flannel、Weave),节点间的Pod网络连通性依赖这些插件:

  • 查看网络插件Pod的运行状态:
    # 以Calico为例,其他插件替换对应的label
    kubectl get pods -n kube-system -l k8s-app=calico-node
    
  • 如果插件Pod异常,查看日志定位问题,比如节点网络配置冲突、CNI配置错误等:
    kubectl logs -n kube-system <calico-node-pod-name>
    

五、直接测试CoreDNS Pod的IP连通性

绕过ClusterIP,直接用CoreDNS Pod的实际IP进行查询,验证Pod本身是否可访问:

  • 获取CoreDNS Pod的IP地址:
    kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide
    
  • 在control-plane-2/3节点上用Pod IP执行nslookup:
    nslookup google.com <coredns-pod-ip>
    
    • 如果能正常返回结果:说明问题出在ClusterIP的转发环节,回到第三步排查kube-proxy
    • 如果仍然超时:说明节点到CoreDNS Pod的网络路径不通,回到第四步排查网络插件或节点间网络

六、检查节点的DNS基础配置

  • 查看节点的resolv.conf文件,确认是否存在异常配置:
    cat /etc/resolv.conf
    
  • 检查kubelet的DNS相关配置,确认--cluster-dns参数是否正确设置为10.96.0.10:
    ps aux | grep kubelet | grep cluster-dns
    
    或者查看kubelet的配置文件(通常是/var/lib/kubelet/config.yaml)中的clusterDNS字段。

备注:内容来源于stack exchange,提问作者Raphael10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 15:57:59