K8s新增Worker节点后Prometheus运行报Context Deadline错误问题
Prometheus调度到K8S Worker节点后访问超时排查方案
排查步骤
1. 检测Worker节点外部网络连通性
- 首先从访问端ping Worker节点IP,确认基础网络可达:
ping <worker-node-ip> - 使用nc工具检测Prometheus暴露端口是否开放,若为NodePort暴露请替换为你配置的NodePort端口:
nc -zv <worker-node-ip> <prometheus-expose-port> - 检查Worker节点本地防火墙规则,确认对应端口允许入站:
- firewalld环境执行:
firewall-cmd --list-all - 若端口未放开,执行添加规则后重载:
firewall-cmd --add-port=<端口号>/tcp --permanent && firewall-cmd --reload
- firewalld环境执行:
- 若为云服务器部署的集群,额外检查云平台安全组规则,确认Worker节点对应端口的入站权限已放开。
2. 确认Prometheus Pod本身运行状态
- 查看Pod状态确认无异常重启,调度位置正确:
kubectl get pods -n <prometheus所在命名空间> -o wide,确认STATUS为Running - 查看Pod运行日志,排查是否有配置加载失败、权限报错等问题:
kubectl logs -n <prometheus所在命名空间> <prometheus-pod名称> - 进入Pod内部检测服务自身可用性:
kubectl exec -it -n <prometheus所在命名空间> <prometheus-pod名称> -- curl 127.0.0.1:9090/targets
如果内部访问正常,说明Prometheus服务本身无问题,问题出在外部到Pod的网络链路上
3. 排查K8S集群网络与访问规则问题
- 确认集群网络插件(Flannel/Calico等)在Worker节点上的运行状态:
kubectl get pods -n kube-system | grep <网络插件名称>,所有相关Pod需为Running状态 - 排查Worker节点CNI配置异常:登录Worker节点查看
/etc/cni/net.d/下配置是否正确,查看kubelet日志排查CNI相关报错:journalctl -u kubelet -f | grep cni - 检测集群内部连通性:在Master节点直接curl Prometheus的PodIP:9090/targets,若无法访问说明集群内部网络链路故障
- 检查对应命名空间下是否有限制访问的NetworkPolicy:
kubectl get networkpolicy -n <prometheus所在命名空间>,如有相关规则需确认放开了Prometheus端口的访问权限。
4. 确认Service/Ingress配置正确性
- 查看Prometheus关联的Service配置,确认selector匹配Prometheus Pod的标签,Endpoints正确关联Pod的IP和端口:
kubectl describe svc -n <prometheus所在命名空间> <prometheus-svc名称> - 若使用Ingress暴露服务,检查Ingress资源的后端Service配置是否正确,Ingress Controller是否能正常路由到Worker节点上的Prometheus Pod。
如果你使用HostNetwork模式运行Prometheus Pod,还需要检查Worker节点的9090端口是否被其他进程占用:
netstat -tulpn | grep 9090
内容的提问来源于stack exchange,提问作者TjS
相关产品推荐
相关产品推荐

