1. 课程导论与目标:K8s 容量压测与巡检的重要性

在 Kubernetes 生产环境中,容量性能压测与巡检脚本编排是保障服务稳定性、资源利用率和故障快速恢复的两大核心手段。本课程从 SRE 实战视角出发,系统讲解如何设计压测方案、构建巡检体系、编排自动化脚本,并最终形成可落地的故障排查能力。

1.1 为什么需要 K8s 容量压测与巡检?

场景 无压测/巡检的风险 有压测/巡检的价值
大促流量洪峰 Pod 突发 OOMKill、HPA 响应滞后、节点资源耗尽 提前发现容量瓶颈,精准配置 Request/Limit
集群节点故障 调度器无法快速重调度,POD 长时间 Pending 巡检脚本提前发现节点异常,触发自愈流程
版本升级/配置变更 回归性能劣化,QPS 下降 30% 未被感知 压测基线对比,快速定位劣化组件
资源碎片化 集群整体利用率低,但部分节点无法调度 巡检脚本定期分析碎片率,辅助碎片整理
核心观点:容量压测解决“能不能扛住”的问题,巡检脚本解决“是否健康”的问题,二者结合形成 K8s 集群的“体检+压力测试”闭环。

1.2 课程整体大纲

本课程共 30 章,分为四大模块:

  1. 基础与工具篇(第 1-6 章):K8s 资源模型、压测工具选型(k6 / Locust / wrk2)、巡检框架(Prometheus + Grafana + 自定义脚本)。
  2. 容量压测实战篇(第 7-15 章):单服务压测、全链路压测、HPA 压测、节点级压测、压测数据采集与基线建立。
  3. 巡检脚本编排篇(第 16-24 章):巡检项设计、脚本模板、定时编排、告警联动、巡检报告生成。
  4. 故障排查与综合案例篇(第 25-30 章):典型故障模式(OOM、CrashLoopBackOff、DNS 解析失败)、压测+巡检联合排障、混沌工程集成。

1.3 学习目标

目标维度 具体能力
容量评估 能独立设计 K8s 服务压测方案,输出 Request/Limit 推荐值、HPA 阈值、集群容量水位线
巡检体系 能编写可复用的巡检脚本(Shell / Python),集成 Prometheus 指标,实现定时巡检与自动告警
故障排查 能通过压测数据与巡检日志快速定位 OOM、网络延迟、调度失败等常见故障根因
自动化编排 能使用 CronJob + ConfigMap 编排巡检任务,结合 Argo Workflows 实现压测-巡检-报告全流程自动化

1.4 前置知识要求

建议前置基础:至少具备 3 个月以上的 K8s 日常操作经验,熟悉 kubectl 常用命令、Pod/Deployment/Service 基本概念,了解 Linux 基础命令和容器化原理。
  • Kubernetes 基础:Pod、Deployment、Service、Ingress、ConfigMap、Secret、HPA、PV/PVC 的基本使用。
  • Linux 运维基础:Shell 脚本编写、系统资源查看(top / free / iostat / netstat)、日志分析(journalctl / tail)。
  • 网络与协议基础:HTTP 协议、TCP/IP 基础、DNS 解析流程。
  • 监控基础:了解 Prometheus 指标采集、Grafana 图表查看,不要求精通。
  • 编程基础:至少熟悉一种脚本语言(Python / Shell / Go),能阅读和修改简单脚本。

1.5 课程知识体系与学习路径

下图展示了本课程四大模块之间的依赖关系与学习路径:

课程知识体系与学习路径 课程知识体系与学习路径 模块1:基础与工具 资源模型 · 压测工具 · 巡检框架 模块2:容量压测实战 单服务 · 全链路 · HPA · 基线 模块3:巡检脚本编排 巡检项 · 模板 · 定时 · 告警 模块4:故障排查与案例 典型故障 · 联合排障 · 混沌工程 学习路径说明: 实线箭头表示推荐顺序:模块1 → 模块2 → 模块4;虚线箭头表示模块1和模块3可直接支撑模块4。 建议先完成模块1和模块2,再并行学习模块3和模块4。

1.6 课程配套环境与工具链

为保障学习效果,建议提前准备以下环境:

工具/环境 版本要求 用途
Kubernetes 集群 v1.24+ 压测与巡检目标集群(推荐使用 Kind 或 Minikube 本地搭建)
k6 v0.45+ HTTP/gRPC 压测工具,支持 JavaScript 脚本
Prometheus + Grafana Prometheus v2.45+ / Grafana v9+ 指标采集与可视化,巡检数据源
kubectl + jq + yq 最新稳定版 命令行操作与 JSON/YAML 解析
Python 3.9+ 3.9+ 巡检脚本编写与数据处理
注意:压测时请使用独立 Namespace 或测试集群,避免对生产环境造成影响。巡检脚本在接入生产前需经过充分测试。

1.7 本章小结