karpenter 组件指标采集

最近更新时间:2026-07-02 15:40:37

我的收藏
本文介绍如何基于 Prometheus,采集 karpenter 组件指标配置。关于 Karpenter 的具体指标含义,请参见 karpenter 指标说明

前提条件

在开始配置前,请确保满足以下条件:
用户 clustermonitor 组件版本大于等于 1.4.0。
已开通 Prometheus 监控服务并关联实例。操作详情请参见 腾讯云 Prometheus 一键关联监控容器服务
如使用自建 Prometheus,请参见 用户自建 Prometheus 采集控制面监控

采集方式

Karpenter 指标采集支持以下两种方式,您可根据所使用的 Prometheus 部署形态选择对应方案:

通过 ServiceMonitor 进行采集

适用场景:该方式适用于集群已经安装了 ServiceMonitor CRD 的场景。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: karpenter-exporter
namespace: kube-system
spec:
endpoints:
- interval: 15s
params:
component:
- karpenter
path: /master/metrics
port: http-metrics
relabelings:
- action: replace
replacement: karpenter
targetLabel: job
namespaceSelector: {}
selector:
matchLabels:
label_qcloud_app: cluster-monitor
label_qcloud_service: master-metrics-service


通过 scrape_configs 配置采集


scrape_configs:
- job_name: karpenter
honor_labels: true
honor_timestamps: true
params:
component:
- karpenter
scrape_interval: 30s
scrape_timeout: 10s
metrics_path: /master/metrics
scheme: http
follow_redirects: true
enable_http2: true
relabel_configs:
- source_labels: [job]
separator: ;
regex: (.*)
target_label: __tmp_prometheus_job_name
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_managed_by,
__meta_kubernetes_service_labelpresent_app_kubernetes_io_managed_by]
separator: ;
regex: (Helm);true
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_service_label_label_qcloud_app, __meta_kubernetes_service_labelpresent_label_qcloud_app]
separator: ;
regex: (cluster-monitor);true
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_service_label_label_qcloud_service, __meta_kubernetes_service_labelpresent_label_qcloud_service]
separator: ;
regex: (master-metrics-service);true
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_endpoint_port_name]
separator: ;
regex: http-metrics
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Node;(.*)
target_label: node
replacement: ${1}
action: replace
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Pod;(.*)
target_label: pod
replacement: ${1}
action: replace
- source_labels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
target_label: namespace
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_service_name]
separator: ;
regex: (.*)
target_label: service
replacement: $1
action: replace
- separator: ;
regex: (.*)
target_label: endpoint
replacement: http-metrics
action: replace
metric_relabel_configs:
- source_labels: [pod]
separator: ;
regex: (.*)
target_label: instance
replacement: $1
action: replace
kubernetes_sd_configs:
- role: endpoints
kubeconfig_file: ""
follow_redirects: true
enable_http2: true
namespaces:
own_namespace: false
names:
- kube-system

指标验证

1. 登录自建的 Prometheus 控制台,切换到 Graph 页面。
2. 输入 up{job="karpenter"},查看是否全部控制面组件数据显示正常。
预期输出如下:

3. 输入以下指标,查看是否可以正常显示。
karpenter_nodes_allocatable{job="karpenter"}
预期接入如下:

4. 如未能采集到指标,请检查:
4.1 cluster-monitor 组件版本是否大于 1.4.0。
4.2 集群是否已经安装 karpenter 组件。
4.3 ServiceMonitor 或 scrape_configs 中的 selector/relabel 规则是否匹配实际 Service 标签。