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

OpenShift中Prometheus配置:如何让导出器包含节点角色标签以实现Worker节点CPU请求告警

OpenShift中Prometheus配置:如何让导出器包含节点角色标签以实现Worker节点CPU请求告警

嘿,我来帮你搞定这个问题!看起来你现在的核心痛点是聚合后的CPU请求指标没带上节点角色标签,导致没法只针对worker节点做告警过滤。咱们一步步来解决:

1. 先确认节点角色的实际标签键

首先得搞清楚OpenShift集群里节点角色对应的标签到底叫什么——默认情况下它可不是kubernetes_node_role哦。你可以用这条PromQL查询所有节点的标签:

kube_node_labels

执行后你会看到类似node-role.kubernetes.io/worker="true"或者node_role="worker"这样的标签,把这个标签键记下来,后面要用到。

2. 调整Prometheus的记录规则,保留节点角色标签

你现在用的namespace_cpu:kube_pod_container_resource_requests:sum这个聚合指标,大概率是在聚合时丢掉了节点相关的标签。咱们需要修改Prometheus的Recording Rule,让它在求和时保留节点角色标签。

比如如果查到的节点角色标签是node-role.kubernetes.io/worker,可以这样定义规则:

groups:
- name: namespace_cpu_requests
  rules:
  - record: namespace_cpu:kube_pod_container_resource_requests:sum
    expr: sum by (namespace, kubernetes_node_role) (kube_pod_container_resource_requests_cpu_cores)

这里的kubernetes_node_role可以替换成你想统一使用的标签名,或者直接用查到的原始标签键。

3. 配置Relabel规则,把节点标签传递给Pod指标

有时候Pod相关的指标不会自动继承节点的标签,这时候需要在Prometheus的抓取配置里加Relabel规则,把节点的角色标签附加到Pod指标上。

比如在scrape_configs里针对kubelet的抓取配置添加:

relabel_configs:
- source_labels: [__meta_kubernetes_node_label_node-role.kubernetes.io/worker]
  action: replace
  target_label: kubernetes_node_role
  replacement: worker
- source_labels: [__meta_kubernetes_node_label_node-role.kubernetes.io/master]
  action: replace
  target_label: kubernetes_node_role
  replacement: master

这样就能把节点的角色标签转换成统一的kubernetes_node_role标签,方便后续聚合和过滤。

4. 验证配置是否生效

修改完配置后,重启OpenShift里的Prometheus Pod(通常是prometheus-k8s开头的Pod),然后重新查询namespace_cpu:kube_pod_container_resource_requests:sum,看看指标是不是已经带上kubernetes_node_role标签了。如果标签存在,再执行你的过滤查询:

namespace_cpu:kube_pod_container_resource_requests:sum{kubernetes_node_role=~"worker"}

这时候应该就能拿到worker节点的CPU请求数据了。

5. 配置告警规则(可选)

确认指标正常后,就可以设置告警规则了,比如:

groups:
- name: worker_cpu_requests_alerts
  rules:
  - alert: HighWorkerCPURequests
    expr: namespace_cpu:kube_pod_container_resource_requests:sum{kubernetes_node_role=~"worker"} > 5  # 这里的阈值根据你的集群情况调整
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "Worker节点CPU请求过高"
      description: "Namespace {{ $labels.namespace }} 在Worker节点的CPU请求总和为 {{ $value }} 核"

备注:内容来源于stack exchange,提问作者Adrián Blázquez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:13:07