1. 课程导学与压测背景

1.1 容量压测的定义

容量压测(Capacity Load Testing)是指在特定硬件与软件环境下,通过模拟真实用户流量与业务请求,对系统施加持续递增的压力,以测量系统吞吐量、响应延迟、资源利用率与稳定性边界的过程。在 Kubernetes 集群环境中,容量压测不仅关注单个 Pod 或 Service 的性能,更关注整个集群在极限负载下的调度效率、资源争抢、网络吞吐与故障恢复能力。

核心指标: QPS(每秒查询数)、P99 延迟、CPU 与内存使用率、Pod 重启次数、集群节点资源水位。

1.2 为什么需要压测

压测是保障生产系统可靠性的关键手段,尤其在微服务与容器化架构下,其必要性体现在以下五个方面:

维度 压测解决的问题 未压测的风险
容量规划 确定集群所需节点数与规格 资源不足导致服务雪崩
弹性伸缩 验证 HPA / VPA 触发阈值与响应速度 流量突增时扩缩容滞后
资源隔离 检测 Namespace / cgroup 限制是否生效 租户间资源争抢引发连锁故障
网络瓶颈 评估 CNI 插件与 Service Mesh 吞吐上限 网络延迟飙升或丢包
故障恢复 测试节点宕机后 Pod 重新调度时间 恢复时间过长导致 SLA 不达标

1.3 压测在 K8s 环境中的挑战

相比传统物理机或虚拟机压测,Kubernetes 环境引入了额外的复杂性,主要挑战包括:

  • 动态调度不确定性: Pod 分布受调度器策略、节点亲和性、污点容忍度影响,压测流量分布不均。
  • 资源抽象层开销: 容器运行时、CNI 网络、CSI 存储、Sidecar 代理均引入额外性能损耗。
  • 多租户干扰: 共享集群中不同 Namespace 的压测任务可能相互影响资源配额。
  • 压测节点管理复杂: 传统压测工具(如 JMeter、Locust)需要手动部署、配置、清理,缺乏自动化。
  • 指标采集与关联困难: 需要同时采集 cAdvisor、kube-state-metrics、Prometheus、APM 等多源数据。
常见误区: 很多团队直接在生产集群中运行压测,未隔离压测节点,导致核心业务 Pod 被抢占或 OOM。本课程将全程使用专用压测节点池,避免对生产负载的影响。
K8s 压测核心挑战全景 K8s 压测挑战 动态调度不确定性 Pod 分布不可控 资源抽象层开销 CNI / CSI / Sidecar 多租户干扰 Namespace 资源争抢 压测节点管理复杂 手动部署 / 清理 指标采集关联困难 多源数据融合 本课程目标:通过自动化部署压测节点池,逐一攻克上述挑战 实现压测环境一键部署、流量隔离、指标自动采集

1.4 课程目标

通过本课程的学习,你将掌握以下核心能力:

  • 自动化部署压测节点: 使用 Terraform / Ansible 在 K8s 集群中快速创建专用压测节点池,并配置资源标签与污点。
  • 压测工具容器化: 将 JMeter、Locust、wrk2 等工具打包为 Docker 镜像,通过 Kubernetes Job / Deployment 弹性运行。
  • 指标采集与可视化: 集成 Prometheus + Grafana,实时监控压测过程中的集群与 Pod 级指标。
  • 压测报告自动化: 压测结束后自动生成包含 QPS、延迟分布、资源使用率的 HTML 报告。
  • CI/CD 集成: 将压测流程嵌入 Jenkins / GitLab CI,实现每次代码变更后的自动回归压测。
课程特色: 所有操作均提供完整的 YAML 清单、Shell 脚本与 Helm Chart,可直接用于生产级压测环境搭建。

1.5 前置知识要求

为获得最佳学习效果,建议你具备以下基础:

领域 具体要求 推荐学习资源
Kubernetes 基础 熟悉 Pod、Deployment、Service、Namespace、Node 概念;能使用 kubectl 操作集群 K8s 官方入门教程
Linux 运维 掌握 SSH、systemd、网络配置、磁盘挂载等基本操作 《鸟哥的 Linux 私房菜》
容器与 Docker 能编写 Dockerfile、构建镜像、使用 docker-compose Docker 官方文档
压测工具基础 了解 JMeter 或 Locust 的基本用法(非必须,课程会提供模板) JMeter 用户手册
自动化工具 了解 Ansible 或 Terraform 的基本概念(课程会提供完整代码) Ansible 官方示例
课程知识体系与前置依赖 K8s 基础 Pod / Deployment / Service Linux 运维 SSH / systemd / 网络 Docker 容器 Dockerfile / 镜像构建 压测工具 JMeter / Locust 课程核心:K8s 压测节点自动化部署 Terraform + Ansible + Helm + Prometheus + Grafana 自动化压测节点池 标签 / 污点 / 资源预留 容器化压测工具 Job / CronJob 弹性运行 压测报告与 CI/CD 自动回归 / 可视化

1.6 课程章节概览

本课程共 30 章,按以下阶段组织:

  • 阶段一(第 1-5 章): 压测基础与环境准备,包括集群搭建、压测节点规划、自动化工具安装。
  • 阶段二(第 6-15 章): 压测节点自动化部署实战,涵盖 Terraform 编排、Ansible 配置、节点标签与污点管理。
  • 阶段三(第 16-22 章): 压测工具容器化与调度,包括 JMeter/Locust 镜像构建、分布式压测 Job 编写、资源限制配置。
  • 阶段四(第 23-27 章): 指标采集与报告生成,集成 Prometheus Operator、Grafana 仪表盘、自动报告脚本。
  • 阶段五(第 28-30 章): CI/CD 集成与最佳实践,对接 Jenkins/GitLab CI,实现压测即代码。
学习建议: 每章均提供可复用的代码仓库与操作视频,建议在测试集群中跟随操作,不要在生产环境直接执行。