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

Prometheus抓取external-dns时提示Context deadline exceeded问题排查求助

问题描述

通过Rancher提供的Helm Chart部署Prometheus后,Alertmanager、Prometheus、Grafana、Node-exporter、Kubelet等目标均自动配置正常,自定义的Jira、Confluence等目标也已成功配置并可正常抓取。但仅运行在kube-system命名空间的external-dns服务出现Context deadline exceeded抓取超时错误:

  • 在集群内随机Pod中执行curl -s http://<external-dns-pod-ip>:7979/metrics,或通过Service IP执行curl -s http://<external-dns-svc-ip>:7979/metrics,均能在1秒内获取到指标,排除服务本身或全局网络可达性问题
  • 进入Prometheus容器执行promtool debug metrics命令,或直接在容器内访问external-dns的Pod/Service IP,均出现超时;但访问其他监控目标则正常获取指标
  • 已排除SSL问题:Jira、Confluence等需SSL的自定义目标已注入正确CA证书包且正常工作,external-dns使用HTTP协议
排查思路
  • 检查Prometheus所在命名空间的网络策略
    确认是否存在网络策略限制Prometheus Pod访问kube-system命名空间的资源。可以临时创建允许Prometheus访问kube-system所有Pod端口的网络策略进行测试,同时检查集群层面的CNI插件(如Calico、Cilium)是否有拦截Prometheus到external-dns的流量规则。

  • 验证Prometheus容器的基础网络连通性
    进入Prometheus容器,执行以下命令测试:

    • ping <external-dns-pod-ip>:检查是否能连通Pod所在节点的网络
    • telnet <external-dns-pod-ip> 7979:确认端口是否可访问
      如果ping不通,说明存在节点间路由或防火墙问题;如果telnet不通但其他Pod能访问,可能是Prometheus容器内部的网络配置(如iptables规则、SELinux策略)限制了流量。
  • 检查Prometheus的网络模式配置
    查看Helm Chart中Prometheus的网络模式(如是否启用hostNetwork):

    • 若为hostNetwork模式,需确认Prometheus所在节点本身能访问external-dns的Pod/Service IP,节点的iptables/ipvs规则是否正常转发流量
    • 若为默认容器网络,检查容器网络插件是否正常工作,Pod的网络命名空间是否有异常
  • 查看Prometheus抓取的详细日志
    修改Prometheus的启动参数,添加--log.level=debug,重启Pod后查看日志,重点关注抓取external-dns时的详细错误信息,确认是连接阶段超时还是数据读取阶段超时,是否有隐藏的错误提示(如连接被拒绝、路由不可达等)。

  • 检查kube-proxy与Service Endpoint状态

    • 执行kubectl describe service external-dns -n kube-system,确认Service的Endpoint是否正确关联到运行中的external-dns Pod
    • 在Prometheus所在节点上,执行ipvsadm -L | grep external-dns(若用ipvs模式)或iptables-save | grep external-dns(若用iptables模式),检查Service的转发规则是否正确生成
    • 确认kube-proxy在Prometheus节点和external-dns节点上均正常运行,无异常日志
  • 对比Prometheus与external-dns的节点调度位置
    查看Prometheus Pod和external-dns Pod所在的节点:

    • kubectl get pods -n <prometheus-namespace> -o wide
    • kubectl get pods -n kube-system -l app=external-dns -o wide
      若两者不在同一节点/子网,检查节点间的网络连通性,确认节点防火墙是否允许跨节点的7979端口流量

内容的提问来源于stack exchange,提问作者Lucas Scheepers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:05:24