0

0

CoreDNS pod CrashLoopBackOff 显示 "plugin/forward: no healthy upstream"

冰川箭仙

冰川箭仙

发布时间:2026-01-18 18:27:09

|

917人浏览过

|

来源于php中文网

原创

CoreDNS因无法连接上游DNS服务器导致“no healthy upstream”错误,常见原因包括节点/etc/resolv.conf配置不可达、ConfigMap配置错误、网络策略拦截、本地DNS服务干扰或资源不足。

coredns pod crashloopbackoff 显示 \

这是 CoreDNS 无法连接到上游 DNS 服务器(比如 kube-dns 的默认上游,通常是宿主机的 /etc/resolv.conf 中配置的 nameserver)导致的典型错误。Pod 启动后 forward 插件找不到可用的上游,健康检查失败,反复重启。

检查 CoreDNS 配置中的 upstream 是否可达

CoreDNS 默认使用 forward . /etc/resolv.conf(或类似),实际会读取该文件内容作为上游。但容器内挂载的 /etc/resolv.conf 往往继承自节点——如果节点本身 DNS 不通(比如防火墙拦截、上游 nameserver 不响应、或配置了不可达 IP 如 169.254.20.10),CoreDNS 就会报 “no healthy upstream”。

  • 进一个正常运行的 Pod(如 busybox),执行 nslookup kubernetes.defaultdig @10.96.0.10 google.com(假设 CoreDNS ClusterIP 是 10.96.0.10),确认集群 DNS 是否能解析外部域名
  • 在节点上运行 cat /etc/resolv.conf,看 nameserver 是否合理(避免出现 127.0.0.53 或已下线的内部 DNS 地址)
  • 在节点上用 dig @ google.com 测试该 upstream 是否真实可达

确认 CoreDNS ConfigMap 是否被意外修改

CoreDNS 的行为由 coredns ConfigMap 控制(通常在 kube-system 命名空间)。常见问题包括:

  • 手动编辑时误删或写错 forward 行,例如写成 forward . 8.8.8.8 但没加端口,或用了不支持的语法
  • forward . /etc/resolv.conf 改成了指向一个未监听 UDP 53 的服务(如只开了 TCP,或端口不对)
  • 启用了 health 插件但未正确配置健康检查路径,导致 readiness probe 失败连带影响 forward 判定

建议恢复为标准配置(Kubernetes 官方推荐):

Noiz AI
Noiz AI

AI语音合成、声音克隆

下载
forward . /etc/resolv.conf

排查网络插件或节点级 DNS 策略干扰

某些 CNI 插件(如 Calico、Cilium)或安全策略(NetworkPolicy、ebpf 规则、iptables DNAT)可能拦截或重定向 DNS 请求,尤其是目标端口 53 的 UDP 流量。

  • 检查节点是否运行了本地 DNS 缓存(如 systemd-resolved、dnsmasq),并确认其监听地址是否被 CoreDNS 容器正确继承
  • 临时关闭节点防火墙(systemctl stop firewalldufw disable)测试是否缓解
  • 在 CoreDNS 容器中执行 nc -zv 53(UDP 不支持 nc 检测,改用 timeout 2 dig @ google.com +short)验证连通性

验证 CoreDNS 是否因资源不足或启动顺序异常失败

虽不直接触发该报错,但低内存限制(memory: 170Mi 是底线)、或 initContainer 抢占 DNS 解析时机,也可能导致 forward 初始化失败。

  • 查看 Pod 事件:kubectl -n kube-system describe pod ,关注 Warning 级事件(如 FailedCreatePodSandBox、OOMKilled)
  • 检查资源请求是否过低:kubectl -n kube-system get deploy coredns -o yaml | grep -A 5 resources
  • 确认 coredns Deployment 的 dnsPolicyDefault(非 ClusterFirst),否则它会试图用自己解析自己,形成死锁

相关专题

更多
default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

220

2023.12.07

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

24

2025.12.22

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

119

2023.07.25

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

284

2023.08.08

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

377

2024.11.14

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

119

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

32

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 3.9万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号