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

寻求Prometheus查询:获取Pod内容器镜像标签变更的旧值

解决Pod容器镜像标签变更查询问题

原查询的问题分析

你之前用的kube_pod_container_info{} != kube_pod_container_info{} offset 5m存在明显局限:

  • 固定5分钟偏移仅能对比当前与5分钟前的状态,若变更发生在这个窗口之外,就会返回NaN;
  • kube_pod_container_info是gauge指标,Pod重建或镜像变更时旧时间序列会被标记为失效,新序列生成,直接对比无法精准关联同一Pod的变更记录。

可行的查询方案

1. 先识别发生过镜像变更的容器

用changes()函数筛选指定时间范围内(比如1天)镜像标签有变化的容器:

changes(kube_pod_container_info{image!=""}[1d]) > 0

image!=""用于过滤无镜像的异常实例。

2. 获取变更前的镜像标签值

结合last_over_time()获取过去一段时间内的最后镜像值,再与当前值对比:

# 当前镜像标签
kube_pod_container_info{image!=""}
  unless
# 过去1天内的最后镜像标签(变更前的值)
last_over_time(kube_pod_container_info{image!=""}[1d] offset 1d)

这个查询会返回所有当前镜像与过去1天内最后记录的镜像标签不一致的容器,配合Prometheus图表可直观看到变更时刻。

3. 更高效的长期查询(借助录制规则)

如果需要长期追踪,可配置Prometheus录制规则预先缓存历史镜像值:

groups:
- name: pod_image_tracking
  rules:
  - record: pod_container_image:last_24h
    expr: last_over_time(kube_pod_container_info{image!=""}[24h])

之后直接用以下查询即可快速对比:

kube_pod_container_info{image!=""} != pod_container_image:last_24h

4. 查看变更时刻的前后值

找到目标容器后,直接在Prometheus图表中查看kube_pod_container_info的时间序列曲线,就能清晰看到镜像标签变更的具体时间点,以及变更前后的标签值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:02:36