如何统计跳过API Server缓存的GET/LIST请求及缓存命中请求数?
Kubernetes API Server 缓存服务请求统计指标
核心内置指标说明
Kubernetes API Server 确实提供了专门的内置指标,用于统计由 watch cache 提供服务的读请求,关键指标包括:
apiserver_request_served_from_cache:直接按资源类型、请求类型等维度统计从缓存响应的请求数量,是判断缓存命中的核心指标。apiserver_request_total:统计所有 API 请求的总数,结合上述缓存命中指标,可计算缓存命中率,进而定位未使用缓存的请求。
维度筛选与客户端定位
这些指标带有多维度标签,可精准定位未使用缓存的客户端:
resource:指定目标资源类型(如pods、deployments)verb:筛选 LIST/GET 类型的读请求client:客户端标识,直接对应发起请求的客户端实例code:HTTP 响应状态码,可限定统计成功的请求
实用查询示例(PromQL)
如果使用 Prometheus 监控,可通过以下查询快速分析:
- 按资源和客户端统计缓存命中的 LIST/GET 请求数:
sum(apiserver_request_served_from_cache{verb=~"LIST|GET"}) by (resource, client) - 计算各客户端的缓存命中率:
sum(apiserver_request_served_from_cache{verb=~"LIST|GET"}) by (resource, client) / sum(apiserver_request_total{verb=~"LIST|GET"}) by (resource, client)
命中率趋近于0的客户端,即为未指定 revision=0、未使用缓存的目标。
注意事项
只有当请求明确携带 resourceVersion=0(对应你提到的 revision 编号为0)参数时,API Server 才会从 watch cache 取数并计入缓存命中指标;未携带该参数的读请求会直接访问 etcd,不会被缓存指标统计。
内容的提问来源于stack exchange,提问作者beer_coder
相关产品推荐
相关产品推荐

