前提条件
在开始配置前,请确保满足以下条件:
用户 clustermonitor 组件版本大于等于 1.4.0。
已开通 Prometheus 监控服务并关联实例。操作详情请参见 腾讯云 Prometheus 一键关联监控容器服务。
如使用自建 Prometheus,请参见 用户自建 Prometheus 采集控制面监控。
采集方式
Karpenter 指标采集支持以下两种方式,您可根据所使用的 Prometheus 部署形态选择对应方案:
通过 ServiceMonitor 进行采集
适用场景:该方式适用于集群已经安装了 ServiceMonitor CRD 的场景。
apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata:name: karpenter-exporternamespace: kube-systemspec:endpoints:- interval: 15sparams:component:- karpenterpath: /master/metricsport: http-metricsrelabelings:- action: replacereplacement: karpentertargetLabel: jobnamespaceSelector: {}selector:matchLabels:label_qcloud_app: cluster-monitorlabel_qcloud_service: master-metrics-service
通过 scrape_configs 配置采集
scrape_configs:- job_name: karpenterhonor_labels: truehonor_timestamps: trueparams:component:- karpenterscrape_interval: 30sscrape_timeout: 10smetrics_path: /master/metricsscheme: httpfollow_redirects: trueenable_http2: truerelabel_configs:- source_labels: [job]separator: ;regex: (.*)target_label: __tmp_prometheus_job_namereplacement: $1action: replace- source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_managed_by,__meta_kubernetes_service_labelpresent_app_kubernetes_io_managed_by]separator: ;regex: (Helm);truereplacement: $1action: keep- source_labels: [__meta_kubernetes_service_label_label_qcloud_app, __meta_kubernetes_service_labelpresent_label_qcloud_app]separator: ;regex: (cluster-monitor);truereplacement: $1action: keep- source_labels: [__meta_kubernetes_service_label_label_qcloud_service, __meta_kubernetes_service_labelpresent_label_qcloud_service]separator: ;regex: (master-metrics-service);truereplacement: $1action: keep- source_labels: [__meta_kubernetes_endpoint_port_name]separator: ;regex: http-metricsreplacement: $1action: keep- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]separator: ;regex: Node;(.*)target_label: nodereplacement: ${1}action: replace- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]separator: ;regex: Pod;(.*)target_label: podreplacement: ${1}action: replace- source_labels: [__meta_kubernetes_namespace]separator: ;regex: (.*)target_label: namespacereplacement: $1action: replace- source_labels: [__meta_kubernetes_service_name]separator: ;regex: (.*)target_label: servicereplacement: $1action: replace- separator: ;regex: (.*)target_label: endpointreplacement: http-metricsaction: replacemetric_relabel_configs:- source_labels: [pod]separator: ;regex: (.*)target_label: instancereplacement: $1action: replacekubernetes_sd_configs:- role: endpointskubeconfig_file: ""follow_redirects: trueenable_http2: truenamespaces:own_namespace: falsenames:- 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 标签。