kube-state-metrics是否支持采集Pod注解及版本要求?
kube-state-metrics(KSM)采集Pod注解相关说明
KSM支持采集指定的Pod注解信息,你在现有部署中查不到对应指标,是因为该能力默认处于关闭状态,并非不可用。
版本适配说明
- 该特性从KSM v2.0.0正式版本开始就已提供,不属于近期新增的特性,只要你部署的KSM版本在v2.0.0以上,不需要升级即可使用。
- 默认关闭注解采集是出于性能考量:Pod注解中通常存储大量非监控类的配置元数据,全量采集会导致指标基数爆炸,直接影响KSM、Prometheus的查询和存储性能,因此官方默认不会暴露
kube_pod_annotations指标。
配置开启方法
你只需要在启动KSM时,通过启动参数指定要采集的注解白名单即可,不需要将邮箱地址挪到Pod label中:
- 给KSM容器添加启动参数:
--metric-annotations-allowlist=pods=[你存储邮箱的注解Key]
举个例子,如果你用来存告警收件人邮箱的注解Key是monitor/alert-email,参数配置如下:--metric-annotations-allowlist=pods=monitor/alert-email - 如果需要同时采集多个Pod注解,多个注解Key之间用英文逗号分隔即可,例如:
--metric-annotations-allowlist=pods=monitor/alert-email,app/owner - 配置生效后,即可查询到
kube_pod_annotations指标,你指定的注解内容会作为指标的标签存在,示例如下:
你在配置告警规则时直接关联对应标签的内容,就能实现动态匹配收件人发送告警邮件的需求。kube_pod_annotations{namespace="prod",pod="order-service-0",annotation_monitor_alert_email="ops@example.com"} 1
注意事项
- 禁止配置全量注解采集:不要为了省事把所有Pod注解都加入白名单,只添加业务确实需要、枚举值可控的注解Key,避免出现指标基数过高的问题。
- 如果你是通过Helm方式部署KSM,不需要手动修改启动参数,直接在values.yaml中找到
metricAnnotationsAllowList字段,按格式填入需要采集的注解Key即可完成配置。 - 如果你当前运行的KSM版本低于v2.0.0,先升级到v2.x以上的稳定版本即可使用该能力。
内容的提问来源于stack exchange,提问作者Eithenhard
相关产品推荐
相关产品推荐

