1. 课程导论:etcd在K8s中的核心地位、IO性能对集群稳定性的影响、压测沙盘的价值与课程目标

1.1 etcd:Kubernetes 控制平面的“状态中枢”

在 Kubernetes 集群架构中,etcd 是唯一保存所有集群状态数据的分布式键值存储系统。无论是 Pod 调度、Service 发现、ConfigMap 更新,还是 RBAC 权限变更,最终都会转化为对 etcd 的读写请求。etcd 的健康状况直接决定了控制平面的可用性。

组件 与 etcd 的关系 典型操作
kube-apiserver 唯一直接读写 etcd 的组件 Watch、List、Create、Update、Delete
kube-scheduler 通过 apiserver 间接读写 绑定 Pod 到 Node
kube-controller-manager 通过 apiserver 间接读写 Deployment 副本数调节、Node 状态更新
kubelet 通过 apiserver 间接读写 Pod 状态上报、Volume 挂载信息
关键认知:etcd 不是缓存,而是权威数据源。一旦 etcd 响应变慢或不可用,整个集群的调度、扩缩容、服务发现都将停滞。

1.2 IO 性能:决定集群稳定性的“隐形瓶颈”

etcd 对磁盘 IO 的敏感度极高。Raft 日志持久化、WAL 写入、snapshot 落盘、boltdb 事务提交,每一步都依赖底层存储的 IO 延迟与吞吐。当 IO 性能劣化时,etcd 会出现以下连锁反应:

  • Leader 选举频繁:磁盘 fsync 延迟超过 Raft 心跳超时(通常 50ms),触发 Leader 重新选举,导致集群短暂不可用。
  • 请求超时与重试风暴:apiserver 的 etcd 请求超时(默认 30s)后重试,进一步加剧 IO 负载。
  • Watch 事件堆积:IO 瓶颈导致事件推送延迟,控制器和调度器基于过期状态做出错误决策。
  • Snapshot 阻塞:大集群下 snapshot 写入耗时过长,阻塞后续事务提交。
IO 指标 健康阈值 风险阈值 影响
WAL fsync 延迟 (p99) < 10ms > 50ms Leader 选举风险
DB 事务提交延迟 (p99) < 20ms > 100ms API 请求超时
磁盘 IOPS (4k 随机写) > 500 < 200 吞吐量下降
磁盘带宽 (顺序写) > 50 MB/s < 20 MB/s Snapshot 阻塞
生产教训:某在线业务集群因底层存储从 NVMe 降级为共享 SAN,WAL fsync 延迟从 2ms 飙升至 200ms,导致 3 节点 etcd 在 5 分钟内连续发生 4 次 Leader 切换,集群控制面瘫痪 12 分钟。

1.3 压测沙盘:从“被动救火”到“主动防御”

传统 IO 性能验证依赖生产环境“试错”,风险极高。压测沙盘提供了一种隔离、可复现、可量化的验证环境,其核心价值体现在:

  • 风险前置:在沙盘中模拟高 IO 压力、磁盘故障、网络延迟等场景,提前暴露 etcd 性能瓶颈。
  • 曲线复核:对比压测 IO 曲线与生产基线,识别异常抖动和趋势劣化。
  • 配置验证:测试不同磁盘类型(NVMe、SSD、云盘)、Raft 参数、内核 IO 调度策略对 etcd 稳定性的影响。
  • 容量规划:基于压测结果推算集群规模增长后的 IO 需求,避免资源超分。
压测沙盘闭环流程 生产基线采集 IOPS / 延迟 / 吞吐 沙盘压测执行 benchmark / 故障注入 IO 曲线复核 差异分析 / 异常标记 风险判定 是否触发阈值 优化与加固 参数 / 存储 / 架构 判定标准 p99 延迟 > 50ms IOPS 下降 > 30%

1.4 课程目标与学习路径

本课程旨在帮助 SRE 和 K8s 运维人员建立一套完整的 etcd IO 性能评估与风险控制体系。完成学习后,你将能够:

  1. 独立搭建压测沙盘:使用 fio、etcd-benchmark、自定义故障注入工具构建隔离测试环境。
  2. 解读 IO 曲线:从延迟分布、IOPS 趋势、吞吐量变化中识别性能拐点和异常模式。
  3. 制定风险控制策略:基于压测结果设定告警阈值、配置限流、规划存储资源。
  4. 输出复核报告:将压测数据与生产基线对比,形成可执行的优化建议。
模块 核心内容 产出物
基础篇 etcd 存储架构、Raft IO 模型、磁盘性能指标 IO 性能基线模板
工具篇 压测工具选型、沙盘环境搭建、自动化脚本 可复用的沙盘部署方案
分析篇 IO 曲线绘制、异常检测、根因定位 曲线复核检查清单
控制篇 限流配置、存储选型、Raft 参数调优 风险控制策略文档
学习建议:建议在非生产环境搭建一套最小沙盘(1 节点 etcd + 1 台压测机),边学边练。本课程所有压测脚本和配置模板均可在沙盘中直接运行。