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

如何在Prometheus Operator中禁用部分容器的k8s采集池

解决kube-prometheus-stack中"k8s"采集池的冗余日志问题

你看到的"k8s"采集池是kube-prometheus-stack默认部署的Kubernetes Pod自动采集任务,它通过Prometheus Operator的Prometheus CRD(而非独立的ServiceMonitor/ConfigMap)管理,所以你找不到单独的配置资源。下面是两种处理方案:

一、完全禁用"k8s"采集池

方法1:通过Helm配置关闭

升级kube-prometheus-stack时,修改values.yaml,覆盖默认的采集任务配置:

  • 如果该采集池是针对集群组件(如kubelet)的默认采集,直接关闭对应组件的采集开关:
    kubelet:
      enabled: false
    
  • 如果是通用的Pod自动发现任务,直接覆盖prometheus.prometheusSpec.scrapeConfigs,只保留你需要的采集任务(删除名为"k8s"的job配置块)。

方法2:直接编辑Prometheus CR实例

执行命令编辑集群中的Prometheus实例:

kubectl edit prometheus <你的Prometheus实例名> # 通常是k8s-prometheus或类似名称

在打开的配置中找到spec.scrapeConfigs下的job_name: k8s配置块,直接删除该块,保存后Prometheus会自动重载配置,停止该采集池的运行。

二、针对部分容器/Pods禁用采集

如果不想完全关闭采集,只想排除特定Pod/容器,可以用以下方式:

1. 给目标Pod添加注解

在不需要采集的Pod的metadata.annotations中添加:

prometheus.io/scrape: "false"

Prometheus的自动发现规则会自动跳过带有该注解的Pod。

2. 通过标签筛选排除

编辑"k8s"采集任务的relabel_configs,添加基于Pod标签的排除规则:
比如,给不需要采集的Pod添加标签no-scrape: "true",然后在采集任务中添加:

relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_no_scrape]
  action: drop
  regex: true

这样带有no-scrape: true标签的Pod会被自动排除。

3. 仅采集指定Pod

如果只想采集明确标注的Pod,可以调整规则为仅保留带有特定注解的Pod:

relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
  action: keep
  regex: true

只有添加了prometheus.io/scrape: "true"注解的Pod才会被采集。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:34:51