1. SLOperator 概述:项目背景、核心功能与生态定位

SLOperator 是一个基于 Kubernetes Operator 模式构建的 服务等级目标(SLO)全生命周期管理组件。它允许平台团队以声明式 YAML 定义 SLO 规则,由 Operator 自动完成指标采集、合规计算、告警触发与状态报告,从而将 SRE 实践中的“错误预算”理念真正落地到 Kubernetes 原生环境。

1.1 项目背景:为什么需要 SLOperator?

在云原生架构中,微服务数量激增,传统手工配置 Prometheus 告警规则的方式暴露出三个核心痛点:

  • 告警规则与 SLO 脱节:多数告警基于静态阈值(如 CPU > 80%),而非基于错误预算消耗速率,导致告警风暴与真实可用性偏离。
  • SLO 定义分散:SLO 目标散落在文档、监控面板、告警配置中,缺乏统一的版本化管理和自动化校验。
  • 缺乏闭环反馈:SRE 团队难以快速回答“当前错误预算还剩多少”“多快会耗尽”等关键问题。
核心洞察:SLOperator 将 SLO 从“事后分析”转变为“运行时约束”,使错误预算成为 Kubernetes 集群中的一等资源对象。

1.2 核心功能矩阵

功能模块 说明 Kubernetes 资源类型
SLO 声明式定义 通过 CRD 定义服务等级目标,支持滑动窗口、多指标复合、自定义合规周期 SLO (CRD)
错误预算计算 基于 Prometheus 指标实时计算剩余错误预算,支持 SLI 指标缺失检测 ErrorBudget (CRD)
多窗口告警 支持“预算快速燃烧”与“预算缓慢燃烧”双窗口告警策略,减少告警抖动 AlertRule (CRD)
状态报告 将 SLO 合规状态、燃烧速率、剩余时间以 Status 字段暴露,供 HPA/调度器消费 内置 Status 子资源
多集群聚合 支持跨集群 SLO 视图,统一查看全局错误预算 SLOView (CRD)

1.3 与 Prometheus Operator 的关系

SLOperator 不是 Prometheus Operator 的替代品,而是其上层补充。两者在监控栈中的分工如下:

  • Prometheus Operator:负责 Prometheus 实例的部署、ServiceMonitor 配置、告警规则管理,属于指标采集与告警引擎层。
  • SLOperator:负责将原始指标转化为 SLO 语义,计算错误预算,驱动燃烧告警,属于SLO 编排与决策层。
集成方式:SLOperator 通过 Prometheus HTTP API 查询 SLI 指标,无需修改 Prometheus Operator 配置;同时 SLOperator 生成的燃烧告警规则可以写入 PrometheusRule CRD,由 Prometheus Operator 统一加载。
SLOperator 与 Prometheus Operator 协作架构 SRE / 平台团队 SLOperator Controller SLO CRD · ErrorBudget CRD · 燃烧告警引擎 Prometheus Operator ServiceMonitor · PrometheusRule · 告警管理 Prometheus 实例 指标存储 · 查询接口 · 告警评估 HTTP API 查询 SLI 指标 部署 / 配置 燃烧告警规则 → PrometheusRule CRD 由 Prometheus Operator 加载评估

1.4 核心工作流程

  1. 定义 SLO:SRE 创建 SLO CR,指定 SLI 指标查询语句、目标值(如 99.9%)、窗口大小(如 30 天)。
  2. 指标采集:Prometheus Operator 管理的 ServiceMonitor 采集应用指标,存入 Prometheus 实例。
  3. 预算计算:SLOperator 定期查询 Prometheus,计算合规事件数与总事件数,得出剩余错误预算。
  4. 燃烧检测:当错误预算消耗速率超过阈值(如 10%/小时),SLOperator 生成燃烧告警规则并写入 PrometheusRule。
  5. 状态暴露:SLOperator 将预算剩余百分比、预计耗尽时间写入 ErrorBudget CR 的 Status 字段。
常见误区:SLOperator 不直接发送告警通知(如 PagerDuty、Slack),它只负责生成燃烧告警规则。告警路由与通知由 Alertmanager 处理,这是职责分离的设计原则。
SLO 声明式定义到错误预算计算流程 SLO CR SLI 查询语句 目标值 · 窗口 Reconciler 循环 解析 CR · 校验 生成查询请求 Prometheus 查询 总事件数 合规事件数 错误预算计算引擎 合规率 = 合规事件数 / 总事件数 剩余预算 = (1 - 合规率) × 总事件数 × 目标偏差 ErrorBudget CR Status 更新 剩余百分比 · 燃烧速率 · 预计耗尽时间

1.5 关键设计原则

原则 说明 实现方式
声明式 API 用户只描述期望的 SLO 状态,Operator 负责调和 Kubernetes CRD + Controller 模式
无侵入采集 不修改应用代码,不注入 Sidecar 复用已有 Prometheus 指标
燃烧告警优先 基于错误预算消耗速率而非静态阈值 多窗口燃烧速率算法
可观测性自描述 Operator 自身暴露 Prometheus 指标和结构化日志 Controller Runtime 指标 + 结构化日志
调试切入点:在后续课程中,我们将重点调试 Reconciler 循环中的指标查询逻辑、错误预算计算精度以及燃烧告警规则的生成条件。掌握 SLOperator 的整体架构是高效调试的前提。