1. 课程导论:为什么需要存储拓扑 SLO 面板?

1.1 K8s 存储故障对业务的影响

在 Kubernetes 生产环境中,存储组件(CSI 驱动、PV/PVC、存储后端)的故障往往比计算或网络故障更具破坏性。计算 Pod 可以快速重新调度,网络链路有多路径冗余,但存储故障一旦发生,数据不可用或数据损坏会直接导致有状态服务(数据库、消息队列、AI 训练任务)长时间中断,甚至造成永久性数据丢失。

故障类型 典型表现 业务影响 恢复难度
CSI 驱动崩溃 Attach/Detach 超时,Pod 无法启动 有状态服务无法扩缩容,滚动更新卡死 中
PV 挂载失败 Pod 处于 ContainerCreating 状态 数据库只读副本无法上线,写入链路中断 中
存储后端慢盘/亚健康 I/O 延迟飙升,kubelet 心跳超时 应用响应变慢,Node 被标记为 NotReady 高
存储后端完全不可用 Volume 无法 Attach,PVC 一直 Pending 核心业务完全停服,数据不可读写 极高
⚠️ 常见误区:很多团队只监控 Pod 的 CPU/内存,却忽略了存储链路的 SLO。当存储后端出现亚健康时,Pod 可能仍在运行,但 I/O 延迟已从 1ms 飙升到 500ms,业务侧表现为接口超时。没有存储拓扑 SLO 面板,这类“隐形故障”很难被快速定位。

1.2 为什么需要存储拓扑 SLO 面板?

传统的存储监控方式存在三个核心痛点:

  1. 指标分散:CSI 驱动指标、kubelet 卷状态、存储后端指标分布在不同的 Prometheus target 中,故障时难以关联。
  2. 缺乏拓扑关联:一个 PV 挂载到哪个 Node?对应的 CSI 驱动 Pod 是否健康?存储后端是哪个池?这些拓扑关系在告警时往往是黑盒。
  3. SLO 不可见:存储组件的可用性、延迟、吞吐量是否达标?错误预算还剩多少?没有面板化呈现,就无法做容量规划和故障预防。

存储拓扑 SLO 面板的核心价值在于:

  • 端到端可视化:从 PVC → PV → CSI 驱动 → 存储后端,一条链路完整呈现。
  • SLO 量化:为每个存储组件定义可用性、延迟、吞吐量 SLO,并用错误预算衡量健康度。
  • 快速故障域隔离:当业务 Pod 报 I/O 错误时,通过拓扑面板一眼看出是 CSI 驱动问题、存储后端问题还是网络问题。
💡 一句话总结:存储拓扑 SLO 面板 = 存储链路拓扑图 + 组件健康状态 + SLO/错误预算仪表盘,三者缺一不可。

1.3 存储拓扑与 SLO 关系图

下图展示了 K8s 存储组件之间的拓扑关系,以及每个环节对应的 SLO 指标:

K8s 存储拓扑与 SLO 关系图 K8s 存储拓扑与 SLO 关系 业务 Pod PVC PV CSI 驱动 存储后端 各层 SLO 指标 • Pod 可用性 SLO • PVC 绑定延迟 SLO • PV 挂载成功率 SLO • CSI 驱动可用性 SLO • CSI 驱动延迟 SLO • 存储后端可用性 SLO • 存储后端延迟 SLO • 存储后端吞吐量 SLO • 错误预算消耗速率 • 错误预算剩余百分比 每个组件 SLO 独立计算 错误预算共享同一时间窗口

1.4 课程目标

完成本课程后,你将能够:

模块 目标 产出物
指标采集 配置 Prometheus 采集 CSI 驱动、kubelet 卷指标、存储后端指标 Prometheus 采集规则 YAML
拓扑构建 通过 PromQL 关联 PVC、PV、CSI 驱动、Node 的拓扑关系 拓扑关联 Recording Rules
SLO 定义 为每个存储组件定义可用性、延迟、吞吐量 SLO SLO 指标 Recording Rules
错误预算 计算每个组件的错误预算消耗速率和剩余百分比 错误预算面板
面板化呈现 在 Grafana 中构建存储拓扑 SLO 仪表盘 Grafana Dashboard JSON

1.5 前置知识

学习本课程需要具备以下基础:

  • Kubernetes 基础:理解 Pod、PVC、PV、StorageClass、CSI 驱动的基本概念和工作原理。
  • Prometheus 基础:了解 PromQL 基本语法(rate、histogram_quantile、sum、avg 等),知道如何配置 ServiceMonitor 和 Recording Rules。
  • Grafana 基础:会创建 Dashboard、添加 Panel、使用变量和模板。
  • 存储基础知识:了解块存储、文件存储、对象存储的区别,知道 I/O 延迟、吞吐量、IOPS 等基本指标。
📌 学习建议:如果你对 PromQL 或 Grafana 变量还不熟悉,建议先花 30 分钟复习一下相关基础。本课程会提供完整的 PromQL 表达式和 Grafana 面板配置,但理解其原理能帮助你更好地定制自己的面板。

1.6 课程结构概览

本课程共分为 6 个模块,30 个章节,从指标采集到面板交付,逐步构建完整的存储拓扑 SLO 面板:

  1. 基础篇(第 1-5 章):存储拓扑 SLO 概念、Prometheus 指标采集配置。
  2. 拓扑篇(第 6-12 章):通过 PromQL 构建存储拓扑关联,生成拓扑 Recording Rules。
  3. SLO 篇(第 13-19 章):定义可用性、延迟、吞吐量 SLO,计算错误预算。
  4. 面板篇(第 20-25 章):在 Grafana 中构建拓扑图、SLO 仪表盘、错误预算面板。
  5. 告警篇(第 26-28 章):基于错误预算配置告警规则,实现告警降噪。
  6. 实战篇(第 29-30 章):真实案例演练,面板调优与运维最佳实践。
🎯 最终交付物:一个可直接导入 Grafana 的 Dashboard JSON 文件,包含存储拓扑图、组件健康状态、SLO 指标、错误预算面板,以及配套的 Prometheus Recording Rules 和告警规则。