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 面板?
传统的存储监控方式存在三个核心痛点:
- 指标分散:CSI 驱动指标、kubelet 卷状态、存储后端指标分布在不同的 Prometheus target 中,故障时难以关联。
- 缺乏拓扑关联:一个 PV 挂载到哪个 Node?对应的 CSI 驱动 Pod 是否健康?存储后端是哪个池?这些拓扑关系在告警时往往是黑盒。
- SLO 不可见:存储组件的可用性、延迟、吞吐量是否达标?错误预算还剩多少?没有面板化呈现,就无法做容量规划和故障预防。
存储拓扑 SLO 面板的核心价值在于:
- 端到端可视化:从 PVC → PV → CSI 驱动 → 存储后端,一条链路完整呈现。
- SLO 量化:为每个存储组件定义可用性、延迟、吞吐量 SLO,并用错误预算衡量健康度。
- 快速故障域隔离:当业务 Pod 报 I/O 错误时,通过拓扑面板一眼看出是 CSI 驱动问题、存储后端问题还是网络问题。
💡 一句话总结:存储拓扑 SLO 面板 = 存储链路拓扑图 + 组件健康状态 + SLO/错误预算仪表盘,三者缺一不可。
1.3 存储拓扑与 SLO 关系图
下图展示了 K8s 存储组件之间的拓扑关系,以及每个环节对应的 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-5 章):存储拓扑 SLO 概念、Prometheus 指标采集配置。
- 拓扑篇(第 6-12 章):通过 PromQL 构建存储拓扑关联,生成拓扑 Recording Rules。
- SLO 篇(第 13-19 章):定义可用性、延迟、吞吐量 SLO,计算错误预算。
- 面板篇(第 20-25 章):在 Grafana 中构建拓扑图、SLO 仪表盘、错误预算面板。
- 告警篇(第 26-28 章):基于错误预算配置告警规则,实现告警降噪。
- 实战篇(第 29-30 章):真实案例演练,面板调优与运维最佳实践。
🎯 最终交付物:一个可直接导入 Grafana 的 Dashboard JSON 文件,包含存储拓扑图、组件健康状态、SLO 指标、错误预算面板,以及配套的 Prometheus Recording Rules 和告警规则。