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

K8s集群CoreDNS处于Running状态但无法就绪问题求助

CoreDNS处于Running状态但无法就绪的问题排查

集群环境

  • K8s集群:3个master节点、2个worker节点
  • 依赖组件:外部HAProxy负载均衡器、Flannel作为CNI插件

问题现象

CoreDNS Pod状态显示为Running,但始终无法进入就绪状态,日志输出:

[INFO] plugin/ready: Still waiting on: "Kubernetes."

已执行的无效排查操作

  • 关闭UFW防火墙
  • 清空并检查IPtables规则
  • 查看Kube-proxy日志
  • 验证HAProxy集群内外访问均正常
  • 检查节点网络连通性
  • 重启所有服务器
  • 已获取CoreDNS Pod的describe信息

进一步排查建议

1. 验证CoreDNS与K8s API Server的连通性

进入CoreDNS Pod内部,测试对Kubernetes API的访问:

kubectl exec -it <coredns-pod名称> -n kube-system -- curl -k https://kubernetes.default.svc.cluster.local:443/version

若访问失败,需排查:

  • kubernetes.default.svc.cluster.local是否能解析到API Server的ClusterIP
  • CoreDNS对应的Service Account是否绑定了system:coredns ClusterRole,确保有足够权限访问API

2. 检查Flannel网络状态

验证跨节点Pod的网络连通性:

# 在任意Pod内ping其他节点的Pod IP
kubectl exec -it <测试用Pod名称> -- ping <目标Pod IP>

查看Flannel组件状态及日志:

kubectl get pods -n kube-system -l app=flannel
kubectl logs <flannel-pod名称> -n kube-system

确认Flannel配置的Pod CIDR与集群初始化时的设定一致,且节点间VXLAN隧道正常建立。

3. 检查CoreDNS的Kubernetes插件配置

查看CoreDNS的ConfigMap:

kubectl edit configmap coredns -n kube-system

确认kubernetes插件段配置正确,例如集群域是否为默认的cluster.local,是否启用了必要的参数(如endpoint_pod_names)。

4. 验证API Server健康状态

通过HAProxy访问API Server,确认服务正常响应:

curl -k https://<HAProxy地址>:6443/version

同时检查master节点上kube-apiserver Pod的运行状态,确保所有API Server实例均正常启动。

5. 检查CoreDNS Pod内部的DNS解析能力

在CoreDNS Pod内测试基础域名解析:

kubectl exec -it <coredns-pod名称> -n kube-system -- nslookup kubernetes.default

若解析失败,查看Pod内/etc/resolv.conf配置,确认是否指向正确的DNS服务器。

内容的提问来源于stack exchange,提问作者mona moghadampanah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:42:24