2. SLO 基础概念:SLO/SLI/SLA 定义、服务等级目标的重要性、Cilium 场景下的 SLO 设计原则
在构建 Cilium 拉取加速体系之前,必须统一团队对服务等级的语言。SLO(Service Level Objective)不是简单的“可用性 99.9%”,而是连接用户感知与系统内部可观测性的桥梁。本节从定义出发,逐步推导 Cilium 场景下的设计原则。
2.1 核心定义:SLA / SLO / SLI
三个概念常被混用,但职责完全不同。下表从对象、度量、后果三个维度进行区分:
| 术语 | 全称 | 对象 | 度量方式 | 未达标后果 |
|---|---|---|---|---|
| SLA | Service Level Agreement | 客户 / 合同 | 法律条款定义 | 赔偿 / 罚金 |
| SLO | Service Level Objective | 内部团队 / 产品 | 百分比阈值 | 改进计划 / On-Call |
| SLI | Service Level Indicator | 具体指标 | 原始测量值 | 触发告警 |
实战口诀:SLI 是“测什么”,SLO 是“多少算好”,SLA 是“不好赔多少”。Cilium 场景下,我们只承诺 SLO,不直接对外暴露 SLA 条款。
2.2 服务等级目标的重要性
没有 SLO 的运维是“盲人摸象”。SLO 在 Cilium 拉取加速场景中承担三个关键角色:
- 决策锚点:当镜像拉取延迟从 5s 上升到 8s,是否要立即回滚?SLO 阈值(如 P99 < 6s)提供明确判断标准。
- 资源预算:SLO 定义了“错误预算”(Error Budget),允许团队在预算内进行灰度发布、内核升级或 eBPF 程序热更新。
- 跨团队对齐:平台团队(Cilium 网络)与业务团队(镜像仓库、节点代理)通过 SLO 形成统一的“好”与“坏”定义。
关键认知:SLO 不是越高越好。99.99% 的 SLO 意味着全年不可用时间 < 52.6 分钟,对应的监控、冗余、故障转移成本呈指数级增长。Cilium 场景下,建议从 99.9%(拉取延迟 P99 < 10s)起步。
2.3 Cilium 场景下的 SLO 设计原则
Cilium 作为数据面组件,其 SLO 设计必须遵循以下四条原则:
- 用户感知优先:SLI 必须从“kubelet 发起拉取请求”到“容器运行时完成解压”的全路径采集,而非仅测量 Cilium 内部转发延迟。
- 分层定义:将 SLO 拆解为网络层(eBPF 转发延迟、连接建立成功率)和应用层(镜像层下载完成时间、解压吞吐量)。
- 错误预算可消耗:允许 Cilium 升级、eBPF Map 扩容、路由策略变更等操作消耗一定比例的预算,避免“零风险”导致的发布停滞。
- 可归因性:每个 SLO 违约事件必须能关联到具体的 Cilium Agent、Node、Endpoint 或 Hubble 流日志,否则无法驱动改进。
避坑提示:不要将“Cilium 控制面 API 响应时间”作为拉取加速的 SLI。控制面延迟与数据面拉取延迟之间没有线性关系。必须直接测量容器运行时拉取镜像的 wall-clock 时间。
2.4 Cilium 拉取加速 SLO 分层架构
下图展示 Cilium 场景下 SLO 的分层设计:从底层网络指标到顶层用户体验指标,每一层都有对应的 SLI 和 SLO 阈值。
2.5 设计原则与 Cilium 特性的映射
将上述原则落地到 Cilium 技术栈时,需要明确每个原则对应的具体实现手段:
| 设计原则 | Cilium 对应能力 | 实现方式 |
|---|---|---|
| 用户感知优先 | Hubble 流日志 + 七层协议解析 | 通过 Hubble 采集 kubelet → containerd → Cilium 的全链路 TCP 流,计算实际拉取耗时 |
| 分层定义 | Cilium Agent Metrics + eBPF 指标 | Agent 暴露 cilium_forward_count、cilium_drop_count;eBPF 提供 tc_delay_ms |
| 错误预算可消耗 | Cilium 热升级 + 无中断 eBPF 重载 | 利用 Cilium 的 cilium-agent --restore 和 endpoint regeneration 机制,在预算内完成变更 |
| 可归因性 | Endpoint 标签 + 身份策略 | 每个拉取请求关联到源 Pod 的 k8s:io.kubernetes.pod.namespace 标签,快速定位故障域 |
2.6 初始 SLO 推荐值
基于生产环境经验,以下为 Cilium 拉取加速场景的初始 SLO 推荐值。建议运行 2 周后根据实际数据调整:
- 镜像拉取完成时间(P99):≤ 10s(宽松起步)→ 优化后 ≤ 5s(严格目标)
- 拉取成功率:≥ 99.9%(排除镜像仓库故障)
- eBPF 转发延迟(P99):≤ 5ms(含隧道封装开销)
- 连接建立成功率:≥ 99.99%(Cilium 到镜像仓库节点)
- 错误预算:每月 0.1% 的拉取请求可失败(约 43 分钟/月)
下一步行动:在 Prometheus 中定义 SLI 采集规则,使用
histogram_quantile 计算 P99 拉取延迟,并设置 SLO 告警规则。具体配置将在第 3 章详细展开。