Prometheus Operator 0.94.1 介绍与选型指南
Prometheus Operator 是在 Kubernetes 上以 CRD 声明式管理 Prometheus/Alertmanager 全生命周期的控制器:本文溯源自其身份、架构、10 类 CRD、0.94.x 新特性,并给出与 kube-prometheus-stack 裸 Helm、ConsulManager(原 Prometheus Manager)、VictoriaMetrics Operator 的量化选型对比。
Prometheus Operator 0.94.1 介绍与选型指南
目标:说清 Prometheus Operator 是什么、解决什么问题、与 Kubernetes 上其他 Prometheus 部署管理方案的差异,并给出量化的选型对比。项目身份、版本、社区数据均于 2026-10-23 联网溯源自官方仓库与官网(来源随文标注);CRD 清单与集群信息在 Kubernetes v1.36(k3s v1.36.5+k3s1)单节点集群实查核对通过。
一、环境信息
本文认知篇以联网溯源为主,同时列出文中引用的实查环境,便于读者对照:
- 文档基准版本:Prometheus Operator v0.94.1(2026-09-23 发布)
- 最新稳定版实查:v0.94.2(2026-10-22 发布,仅安全重建,无功能变更;查询日期 2026-10-23,来源 GitHub Releases)
- 实查集群:Kubernetes v1.36.5+k3s1(单节点,节点名 k8s-node1)
- 实查部署形态:helm release
kps,chartkube-prometheus-stack-92.11.0,App Version v0.94.1 - 实查 CRD:10 个
*.monitoring.coreos.com自定义资源(kubectl get crd 实查) - 信息来源:GitHub 仓库 prometheus-operator/prometheus-operator、官网 prometheus-operator.dev、官方文档 Compatibility 页(查询日期均为 2026-10-23)
- 星数取证:shields.io 徽章
Stars | 10k(2026-10-23 抓取自 https://img.shields.io/github/stars/prometheus-operator/prometheus-operator.svg )
二、软件概述
2.1 项目定位:Prometheus 的「K8s 管理控制器」
Prometheus Operator 是 prometheus-operator/prometheus-operator 仓库维护的开源 Kubernetes 控制器,官方一句话定位是「Prometheus Operator creates/configures/manages Prometheus clusters atop Kubernetes」(在 Kubernetes 之上创建、配置、管理 Prometheus 集群,来源:GitHub 仓库页,查询日期 2026-10-23)。
它不是 Prometheus 本体,也不替代 Prometheus:Prometheus 负责抓取与存储指标,Operator 则负责在 K8s 集群中以声明式方式生成和管理 Prometheus 实例。三者的关系可以这样理解:
| 层次 | 组件 | 职责 |
|---|---|---|
| 管理层 | Prometheus Operator | 监听 CRD 资源,生成/更新 Prometheus、Alertmanager 的 StatefulSet、ConfigMap、Service 等对象 |
| 数据层 | Prometheus Server(由 Operator 创建) | 抓取指标、存储时序、执行告警规则 |
| 路由层 | Alertmanager(由 Operator 创建) | 告警去重、分组、静默、通知路由 |
💡 说明:quzuo 平台另设有「Prometheus」专栏,聚焦 Prometheus 本体(安装、配置、PromQL、CLI),如需了解 Prometheus 服务器本身请参见 《Prometheus 3.15.0 介绍与选型指南》;本专栏只写「如何用 Operator 在 K8s 上管理它」。本文实查集群中 Prometheus 的版本即 v3.15.0(kube-prometheus-stack 默认拉起
v3.15.0-distroless,实查于 2026-10-23)。
2.2 项目身份
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | prometheus-operator/prometheus-operator |
| 开源协议 | Apache-2.0(来源:官网首页「Open-source Apache-2.0 Licensed」,查询日期 2026-10-23) |
| 开发语言 | Go |
| 所属组织 | prometheus-operator GitHub org;CNCF Prometheus 项目生态的一部分(Prometheus 于 2018 年成为 CNCF 第二个毕业项目) |
| 官网/文档 | prometheus-operator.dev |
| 官方生态子项目 | kube-prometheus(prometheus-operator/kube-prometheus,jsonnet 编写的端到端集群监控清单库)与 helm chart prometheus-community/kube-prometheus-stack |
| GitHub Stars | 约 10k(shields.io 徽章,2026-10-23) |
2.3 版本沿革与发布节奏
以下版本时间线取自 GitHub Releases 页面(查询日期 2026-10-23):
| 版本 | 发布日期 | 要点 |
|---|---|---|
| 0.91.0 | 2026-05-05 | ScrapeConfig 认证互斥校验、分片保留策略等 |
| 0.92.0 | 2026-06-18 | PrometheusTopologySharding/PrometheusShardRetentionPolicy 提升至 Beta 并默认开启 |
| 0.92.1 | 2026-06-30 | 修复跨命名空间资源监听的 "namespace not found" 错误 |
| 0.93.0 | 2026-07-28 | CRD 数值字段改 int 并拒绝负值;Thanos 上传时保留本地 compaction |
| 0.93.1 | 2026-08-10 | 修复 kubelet 双栈地址重复目标 |
| 0.94.0 | 2026-09-09 | 默认 Alertmanager 升至 v0.34.0;新增 retentionPercentage(基于卷的保留百分比,需 Prometheus >= v3.11.0);status conditions 暴露为指标 |
| 0.94.1 | 2026-09-23 | 修复 Operator ClusterRole 对 finalizer 子资源的 update 权限(OwnerReferencesPermissionEnforcement 场景必需) |
| 0.94.2 | 2026-10-22 | [SECURITY] 以 Go 1.27.3 重建并更新 busybox 基础镜像,移除有问题的根 CA |
版本节奏量化:从 0.91.0 到 0.94.2 共 8 个版本发布于 2026-05-05 至 2026-10-22 约 5.5 个月内,平均每 3 周左右一个版本(月度 minor + 按需 patch),迭代密集且 patch 响应快(0.94.0 发布两周内即出 0.94.1 修复 RBAC 问题)。0.94.2 相对 0.94.1 仅为基础镜像安全重建,API 与行为无差异,0.94.1 上验证的功能在 0.94.2 上同样成立。
2.4 社区活跃度
- Stars ≈ 10k(shields.io,2026-10-23),属于 CNCF 监控生态的核心基础设施项目量级;
- 变更吞吐:仅 0.94.0 一个 minor 版本就包含 17 项 CHANGE/FEATURE/BUGFIX 条目(来源:GitHub Releases,查询日期 2026-10-23),由 Prometheus 官方组织与 CNCF 社区共同维护;
- 生态位:是 Prometheus 官方文档认可的 K8s 部署路径之一,
kube-prometheusjsonnet 库与 prometheus-community 的kube-prometheus-stackHelm chart 都构建在它之上;下游还有大量衍生 Operator(如 VictoriaMetrics Operator 明确声明 API 与其兼容)。
三、核心架构
3.1 Operator 模式:把「运维知识」写进控制器
💡 技术拓展:在 K8s 上运行 Prometheus 有多种部署/管理形态,选型差异在于「谁来生成配置、谁来响应变更」——
形态 原理/特点 适用场景 手工 YAML/裸 Helm 直接部署 StatefulSet + prometheus.yml ConfigMap,改配置要改 ConfigMap 并 reload 一次性实验、极小规模 Helm 全家桶(kube-prometheus-stack) chart 渲染出一整套 Deployment/StatefulSet + 内置规则与面板,升级靠 helm upgrade 快速获得完整监控栈 Operator(本文主角) 控制器持续监听 CRD 声明,按需生成/重建底层资源,配置变更即时调和 K8s 上长期运行、多团队共享的监控平台 配置文件外置(如 file_sd/Consul 类管理台) 在非 K8s 环境用 Web 界面或服务发现管理抓取目标 非 K8s 数据中心 本文实查采用「Operator + kube-prometheus-stack chart」组合:chart 负责首次安装全家桶,此后日常运维全部通过 CRD 声明完成。
Operator 的核心循环:用户提交 CRD 资源(如 Prometheus、ServiceMonitor)→ Operator 监听到资源事件 → 生成对应的 StatefulSet、ConfigMap(内嵌 prometheus.yml)、Secret、Service 对象 → K8s 调度拉起 Prometheus 进程 → Prometheus 定期从 Operator 生成的 /-/config(配置 Secret 挂载)加载抓取与规则配置。全程无需手工编辑 prometheus.yml。
3.2 核心组件
| 组件 | 形态 | 职责 |
|---|---|---|
| prometheus-operator | Deployment | 主控制器,监听 10 类 CRD 并调和底层资源 |
| admission-webhook | Deployment + ValidatingWebhookConfiguration | 对 PrometheusRule、AlertmanagerConfig、Alertmanager 等资源做准入校验(如 PromQL 语法、告警接收端字段合法性),坏配置在写入前就被拒绝 |
| kube-state-metrics / node-exporter | 配套组件(由 kube-prometheus-stack 附带) | 暴露 K8s 对象状态与主机指标 |
3.3 CRD 家族(实查 10 个)
在实查集群 kubectl get crd 可以看到 Operator 注册的全部 CRD(实查于 2026-10-23,K8s v1.36.5):
alertmanagerconfigs.monitoring.coreos.com
alertmanagers.monitoring.coreos.com
podmonitors.monitoring.coreos.com
probes.monitoring.coreos.com
prometheusagents.monitoring.coreos.com
prometheuses.monitoring.coreos.com
prometheusrules.monitoring.coreos.com
scrapeconfigs.monitoring.coreos.com
servicemonitors.monitoring.coreos.com
thanosrulers.monitoring.coreos.com
各 CRD 的分工:
| CRD | 用途 |
|---|---|
| Prometheus | 声明一台 Prometheus 服务(版本、副本、保留、资源、远程写、要盯哪些 Monitor/Rule 资源) |
| PrometheusAgent | 只做远程写不落盘的轻量采集代理(Prometheus Agent 模式) |
| Alertmanager | 声明 Alertmanager 集群(副本数、配置、路由) |
| AlertmanagerConfig | 按命名空间声明告警接收端与路由(email/slack/webhook 等) |
| ServiceMonitor | 通过 Service 标签选择器发现抓取目标(最常用) |
| PodMonitor | 直接按 Pod 标签选择器抓取 |
| Probe | 声明 blackbox 探测(HTTP/TCP/ICMP 拨测) |
| ScrapeConfig | 用 Prometheus 原生服务发现(kubernetes_sd/consul_sd/云厂商 SD 等)声明抓取任务 |
| PrometheusRule | 声明告警与预聚合记录规则 |
| ThanosRuler | 声明 Thanos Ruler 实例(跨集群规则评估) |
3.4 调和机制带来的运维体验
- 改版本 = 改一个字段:
spec.version改成新版本号,Operator 重建 StatefulSet 完成升级; - 扩缩容 = 改 replicas:声明副本数即可获得多副本 Prometheus;
- 加抓取目标不用改全局配置:新应用打上标签并建一个 ServiceMonitor,Operator 自动把它合并进 prometheus.yml;
- 配置可回溯:所有配置都是 K8s 资源,天然受 GitOps 工具管理(Argo CD/Flux 可直接应用这些 CRD)。
四、功能特性
4.1 声明式抓取配置
ServiceMonitor/PodMonitor/Probe/ScrapeConfig 四类 CRD 覆盖了 Prometheus 全部抓取入口。0.94.0 起的 ScrapeConfig CRD 已覆盖 Prometheus 原生全部主流服务发现(K8s、Consul、Hetzner、Docker Swarm、OpenStack 等,来源:GitHub Releases 0.94.0 CHANGE,查询日期 2026-10-23)。
4.2 规则管理 + 准入校验
PrometheusRule 声明告警/记录规则,admission webhook 会在写入时校验 PromQL 语法与字段合法性——0.91.0 起还能基于集群启用的 PromQL 特性校验规则(FEATURE: "Validate PrometheusRule resources selected by Prometheus resources based on the PromQL enabled features",来源 GitHub Releases 0.91.0)。
4.3 分片与高可用(0.92+ Beta 特性)
PrometheusTopologySharding(0.92.0 升 Beta 默认开启):按可用区拓扑分片抓取目标,K8s >= 1.35 时直接用 Pod 拓扑标签(来源:GitHub Releases 0.92.0 Note);PrometheusShardRetentionPolicy:分片缩容时决定是否保留数据;spec.shards默认值 1(0.93.0 CHANGE),多副本 + 多分片 + Thanos Sidecar 远端存储可组合出大型监控平台。
4.4 0.94.x 值得关注的新特性
(来源:GitHub Releases 0.94.0/0.94.1,查询日期 2026-10-23)
retentionPercentage字段:按卷占用百分比保留数据(需 Prometheus >= v3.11.0),替代只按天数的 retention;- Operator status conditions 暴露为 Prometheus 指标(
prometheus_operator_<resource>_status_condition),Operator 自身健康可直接被监控; - Alertmanager CRD 新增
clusterPeerName(需 Alertmanager >= v0.30.0); - Operator ClusterRole 从通配符收紧为显式权限列表(0.94.0 ENHANCEMENT),0.94.1 进一步修复 finalizer 子资源的
update权限——这是OwnerReferencesPermissionEnforcement启用集群上 0.94.0 用户的必修 patch; - 默认 Alertmanager 版本升至 v0.34.0,零值时长字段不再作为 CLI flag 传递(避免启动失败)。
五、快速开始(最小可用示例)
两种主流起步方式的完整部署流程与真实回显见同专栏部署篇 《Prometheus Operator 0.94.1 部署指南》。
方式 A:Helm 一键全家桶(推荐起步)——kube-prometheus-stack chart 打包了 Operator + Prometheus + Alertmanager + Grafana + 常用规则面板,一条命令得到完整监控栈:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install kps prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
方式 B:只装 Operator 本体——官方 bundle 清单,适合只要 Operator 再自行声明 Prometheus 的场景:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.94.1/bundle.yaml
装好后第一个最小验证(实查集群回显):
kubectl get prometheus -A
NAMESPACE NAME VERSION DESIRED READY RECONCILED AVAILABLE AGE
monitoring kps-prometheus v3.15.0-distroless 1 1 True True 8h
六、适用场景与限制
6.1 适用场景
- K8s 集群自监控:节点、控制面、工作负载开箱即监(配合 kube-prometheus-stack 内置规则与 Grafana 面板);
- 多团队共享监控平台:每个团队在自己的命名空间提交 ServiceMonitor/PrometheusRule,无需平台组改全局配置;
- GitOps 化监控:CRD 清单进 Git 仓库,配合 Argo CD 等实现配置即代码;
- 大规模分片:目标数上万时用 shards + topology sharding 水平扩展抓取能力;
- Agent 模式采集:边缘/子集群用 PrometheusAgent 只采集远程写,不承担存储。
6.2 限制与前置
- K8s 版本要求:Operator >= v0.84.0 要求 Kubernetes >= v1.25.0(或在 v1.23.0 上开启
CustomResourceValidationExpressions特性门控);更早版本要求 >= v1.16.0(来源:官方文档 Compatibility 页 prometheus-operator.dev/docs/getting-started/compatibility/,查询日期 2026-10-23)。原因:CRD 用了 CEL 校验表达式; - 非 K8s 环境不适用:Operator 全部能力建立在 K8s API 之上,虚拟机/裸金属监控请看 Prometheus 原生部署或配置文件外置方案;
- 版本联动成本:Operator 版本升级往往伴随 CRD 升级,CRD 只增不减,回滚 Operator 需连同 CRD 一起评估;
- Grafana 面板不归 Operator 管:Operator 只管 Prometheus/Alertmanager 族组件,仪表盘生态(GrafanaDashboard CRD)由 Grafana Operator 等项目负责。
七、同类选型对比
7.1 四种主流方案总览
| 维度 | Prometheus Operator + kube-prometheus-stack | 裸 Helm prometheus chart(无 Operator) | ConsulManager(原 Prometheus Manager,StarsL) | VictoriaMetrics Operator |
|---|---|---|---|---|
| 管理对象 | K8s 上的 Prometheus/Alertmanager 全生命周期 | chart 渲染的静态 StatefulSet | 非 K8s 主机/站点监控(Consul 注册 + Web 管理台) | K8s 上的 VictoriaMetrics 全家桶 |
| 配置入口 | CRD(ServiceMonitor 等 10 类) | values.yaml + prometheus.yml 模板 | Web 界面(ECS 主机/Blackbox 站点同步) | 与 prometheus-operator 兼容的 CRD(可直接复用)或 VM* CRD |
| 变更响应 | 控制循环实时调和 | 需 helm upgrade 重新渲染 | 界面操作即时生效 | 控制循环实时调和 |
| 存储 | Prometheus TSDB(可接 Thanos) | Prometheus TSDB | Prometheus TSDB | VictoriaMetrics(存储压缩比/查询性能为其主打卖点) |
| 生态 | CNCF Prometheus 官方生态,最广泛 | prometheus-community chart | 国内社区为主 | VictoriaMetrics 官方 |
| 典型场景 | K8s 集群监控的事实标准 | 只跑一个 Prometheus 且变更极少 | 云主机数量大、K8s 之外的 IDC 监控 | 想在 K8s 上用 VM 替换 TSDB 且保留 prometheus-operator 习惯 |
关键差异:是否在 K8s 上与是否声明式是两个首要分叉点。ConsulManager 面向非 K8s 主机监控(其 GitHub 自述定位「使用 ConsulManager 来管理主机监控与站点监控」,来源:Gitee starsl/Prometheus 仓库页,查询日期 2026-10-23);其余三者都活在 K8s 里,此时再按「存储选 Prometheus TSDB 还是 VictoriaMetrics」分流。
7.2 社区活跃度与版本节奏量化
| 指标 | Prometheus Operator | VictoriaMetrics Operator | ConsulManager |
|---|---|---|---|
| Stars | ≈10k(shields.io,2026-10-23) | 量级数千(VM 生态主项目,官方维护) | 国内项目,量级千级以下 |
| 版本节奏 | 月度 minor,patch 双周内跟进(2026-05~10 共 8 版) | 与 VM 主线同步跟进 | 不定期 |
| 变更吞吐 | 0.94.0 单版 17 项条目 | 快速迭代 | 中等 |
| 维护方 | prometheus-operator org(CNCF 生态) | VictoriaMetrics 官方 | 个人维护者 StarsL |
| 下游依赖 | kube-prometheus-stack chart、大量企业监控平台 | 自成体系 + API 兼容 prometheus-operator | 无明显下游 |
解读:论社区规模与行业渗透,Prometheus Operator 是 K8s 监控的默认答案;VictoriaMetrics Operator 的差异化在存储引擎,且官方明确「API capability with prometheus-operator」——已在用 ServiceMonitor/PodMonitor 的团队迁移 VM 时学习成本最低。
7.3 兼容矩阵(K8s 版本支持)
| 组件 | K8s 兼容要求 | 来源 |
|---|---|---|
| Prometheus Operator >= v0.84.0 | Kubernetes >= v1.25.0(或 v1.23.0 + CustomResourceValidationExpressions) | 官方 Compatibility 文档(2026-10-23 查询) |
| Prometheus Operator < v0.84.0 | Kubernetes >= v1.16.0 | 同上 |
| 本文实查 | Operator v0.94.1 运行于 K8s v1.36.5(k3s),CRD/调和/准入校验全部正常 | 本集群实查 2026-10-23 |
| kube-prometheus-stack chart 92.x | App version v0.94.1,随 chart 附带 Prometheus v3.15.0、Alertmanager v0.34.1 | helm list 与 CR 状态实查 2026-10-23 |
注意 kube-prometheus-stack chart 的版本号(92.x)与 Operator 版本号(0.94.x)不一致:chart 有独立版本序列,选型时以 chart 的 App Version 字段确认实际 Operator 版本。
7.4 选型建议
- 刚建 K8s 集群、要一套完整监控:直接上 kube-prometheus-stack(内含 Operator),一条命令得到 Prometheus + Alertmanager + Grafana + 规则面板;
- 集群里已有 Prometheus、只想规范化配置管理:先装 prometheus-operator-crds chart(只装 CRD),再逐 workload 迁移到 CRD;
- 目标数上万 / 多可用区:Prometheus Operator + shards + Thanos(或远端写 VictoriaMetrics);
- 非 K8s 机房监控为主:Prometheus Operator 不是你的菜,评估 Prometheus 原生部署 + ConsulManager/Consul 类服务发现管理;
- TSDB 想换 VictoriaMetrics:保留 CRD 使用习惯,评估 VictoriaMetrics Operator;
- K8s < 1.25 且无法开 feature gate:只能停在 Operator v0.83.x,建议优先升级集群而非降级 Operator。
八、参考链接
- GitHub 仓库:https://github.com/prometheus-operator/prometheus-operator (版本与 Release Notes 查询日期 2026-10-23)
- 官网与文档:https://prometheus-operator.dev/
- 兼容性说明:https://prometheus-operator.dev/docs/getting-started/compatibility/
- 安装文档:https://prometheus-operator.dev/docs/getting-started/installation/
- kube-prometheus jsonnet 库:https://github.com/prometheus-operator/kube-prometheus
- kube-prometheus-stack Helm chart:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
- VictoriaMetrics Operator:https://github.com/VictoriaMetrics/operator (API 兼容性说明,查询日期 2026-10-23)
- ConsulManager(原 Prometheus Manager):https://gitee.com/starsl/Prometheus (查询日期 2026-10-23)
- 站内关联:《Prometheus 3.15.0 介绍与选型指南》、《Prometheus 3.x 配置参数详解》、《Kubeshark 介绍与选型指南》(K8s 流量观测,可与监控栈互补)