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

Kubernetes中Helm部署Prometheus Node-Exporter端口调度失败排查

Node-Exporter Pod Pending(端口占用报错)排查与解决

排查步骤

1. 检查Node-Exporter DaemonSet的端口配置

执行命令查看DaemonSet的端口定义,确认是否存在多端口请求或配置错误:

kubectl get daemonset prometheus-node-exporter -o yaml | grep -A 10 "ports:"

重点关注hostPort字段,确认是否仅请求9100端口,无重复或多余端口配置。

2. 排查节点上的hostPort占用情况

列出集群中所有使用hostPort的Pod,确认是否有其他Pod在目标节点占用9100端口:

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.nodeName}{"\t"}{range .spec.containers[*].ports[*]}{.hostPort}{","}{end}{"\n"}' | grep -v "0," | grep "<你的节点名称>"

若发现有其他Pod占用9100,记录该Pod名称。

3. 检查kubelet端口预留配置

查看kubelet启动参数,确认9100是否被标记为预留端口(预留端口不允许Pod使用):

ps aux | grep kubelet | grep "reserved-ports"

若输出包含9100,说明该端口被kubelet预留。

4. 验证DaemonSet的节点调度配置

确认Node-Exporter的DaemonSet是否正确配置了容忍度和节点选择器,确保能调度到目标节点:

kubectl get daemonset prometheus-node-exporter -o yaml | grep -A 15 "tolerations:"
kubectl get daemonset prometheus-node-exporter -o yaml | grep -A 5 "nodeSelector:"

对比目标节点的污点(通过kubectl describe node <节点名>查看Taints字段),确认容忍度规则匹配。

解决方案

1. 修正DaemonSet端口配置

如果DaemonSet存在多余或错误的端口请求,修改Helm values文件(如values.yaml):

nodeExporter:
  ports:
    metrics:
      port: 9100
      hostPort: 9100
  # 针对master节点的容忍度配置
  tolerations:
    - key: "node-role.kubernetes.io/master"
      operator: "Exists"
      effect: "NoSchedule"

重新部署:

helm upgrade prometheus prometheus-community/prometheus -f values.yaml

2. 释放被占用的hostPort

如果发现其他Pod占用9100端口,删除该Pod或修改其hostPort配置:

kubectl delete pod <占用端口的Pod名称> -n <对应命名空间>

3. 调整kubelet预留端口

若9100被kubelet预留,编辑kubelet配置文件(通常在/var/lib/kubelet/config.yaml或启动参数文件),移除reservedPorts中的9100,然后重启kubelet:

systemctl restart kubelet

4. 清理残留Pod

如果存在Terminating状态的Node-Exporter Pod,强制清理:

kubectl delete pod <Terminating状态的Pod名称> --force --grace-period=0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:29:10