1. 课程导论与背景

1.1 K8s 存储变更的痛点

在 Kubernetes 生产环境中,存储资源(PVC、StorageClass、PV)的变更操作是风险最高的运维动作之一。由于存储层直接承载数据库、消息队列、日志系统等有状态工作负载,一次错误的变更可能导致数据丢失、IO 中断或集群级故障。以下是生产环境中常见的存储变更痛点:

痛点类别 典型场景 风险等级
PVC 扩缩容 在线调整 PVC 容量,底层存储卷未同步或触发重新挂载 高
StorageClass 切换 变更默认存储类,存量 PVC 重建后绑定到错误的后端 严重
PV 回收策略变更 从 Retain 改为 Delete,导致数据卷被意外清理 灾难性
CSI 驱动升级 升级存储插件版本,存量挂载点协议不兼容 高
访问模式修改 ReadWriteOnce 改为 ReadWriteMany,底层文件锁冲突 中
⚠ 生产教训: 某金融科技公司在变更 PVC 存储类时,未验证 CSI 驱动的兼容性,导致 200+ 个有状态 Pod 在重建后无法挂载卷,核心交易链路中断 47 分钟。事后复盘发现,如果有一套自动化的门禁压测沙盘,该事故完全可以避免。

1.2 门禁压测沙盘的价值

门禁压测沙盘是一套在变更正式推送到生产环境之前,自动执行存储变更验证与压力测试的隔离环境。它通过模拟真实负载和异常场景,提前暴露变更引入的稳定性问题。其核心价值体现在以下四个维度:

  • 变更前验证: 在沙盘中执行与生产环境一致的存储变更操作,验证 PVC 绑定、挂载、IO 路径是否正常。
  • 压力注入: 使用 fio、vdbench 等工具对变更后的存储卷施加读写压力,检测性能衰减或 IO 抖动。
  • 异常场景覆盖: 模拟节点故障、网络分区、CSI 驱动重启等故障,验证存储变更后的自愈能力。
  • 门禁阻断: 将压测结果与预设的 SLO(如 IOPS ≥ 5000、延迟 ≤ 10ms)对比,不达标则自动阻断变更流水线。
门禁压测沙盘流程 门禁压测沙盘流程 变更请求 沙盘环境准备 存储变更执行 压力测试 门禁判定 通过 → 生产发布 阻断 → 回滚并告警

1.3 容量预测的重要性

K8s 存储容量管理是运维中另一个被严重低估的风险点。传统做法是人工监控 PVC 使用率,在达到阈值时手动扩容。这种方式存在三个致命缺陷:

  1. 被动响应: 只能在容量告警触发后介入,此时业务可能已经受到 IO 性能影响。
  2. 缺乏趋势分析: 无法预测未来 7 天、30 天的容量增长曲线,扩容操作往往滞后。
  3. 资源浪费: 为避免风险而过度预分配,导致存储成本居高不下。

容量预测通过采集历史 PVC 使用数据(容量、IOPS、吞吐量),结合时间序列模型(Prophet、LSTM 或 ARIMA),输出未来一段时间的容量趋势和风险窗口。其核心收益包括:

  • 主动扩容: 在容量耗尽前 72 小时自动触发扩容流程,避免业务中断。
  • 成本优化: 基于预测结果精确规划存储资源采购,减少闲置浪费。
  • 变更关联分析: 将容量预测结果与存储变更门禁联动,评估变更对容量趋势的影响。
容量预测架构 容量预测架构 数据采集层 Prometheus / K8s Metrics API 数据处理层 数据清洗 / 特征工程 模型预测层 Prophet / LSTM 输出层:容量趋势 / 风险窗口 动作层:自动扩容 / 门禁联动
💡 课程核心主张: 存储变更门禁压测沙盘与容量预测不是两个独立的技术方案,而是一套完整的“变更前验证 + 变更中压测 + 变更后容量跟踪”的闭环体系。本课程将手把手带你从零搭建这套体系,覆盖 PVC 变更、StorageClass 切换、CSI 驱动升级等核心场景。