1. 课程导论:为什么需要 KEDA?

1.1 传统弹性伸缩的困境

在云原生架构中,应用负载的波动性日益显著。传统的弹性伸缩方案(如 Kubernetes HPA)主要依赖 CPU 和内存等资源指标,这在许多场景下存在明显的局限性:

  • 响应滞后:CPU 利用率是“结果指标”,当 CPU 飙升时,流量洪峰往往已经到达,导致扩容滞后。
  • 业务感知缺失:消息队列积压、数据库连接数、HTTP 请求延迟等业务指标无法直接驱动扩缩容。
  • 伸缩粒度粗糙:HPA 默认的 15 秒轮询周期和 3 分钟冷却窗口,难以应对秒级突发的流量。
  • 闲置资源浪费:为应对峰值而预留的资源,在低谷期造成大量浪费。
核心痛点:传统弹性伸缩是“面向资源”的,而现代应用需要“面向事件”的弹性伸缩。

1.2 KEDA 的定位与价值

KEDA(Kubernetes Event-Driven Autoscaling)是云原生计算基金会(CNCF)的孵化项目,它填补了 Kubernetes 原生 HPA 在事件驱动伸缩方面的空白。KEDA 的核心理念是:让 Kubernetes 应用能够根据任何可观测的指标(Metrics)自动伸缩。

维度 传统 HPA KEDA
指标来源 CPU / 内存(Resource Metrics) Prometheus、Kafka、RabbitMQ、MySQL、HTTP 等 50+ 触发器
伸缩粒度 最小 15 秒轮询,3 分钟冷却 可配置轮询间隔(如 1 秒),支持立即伸缩
伸缩到零 不支持(最小副本数通常为 1) 原生支持,无流量时缩到 0,节省资源
架构耦合 与 kube-controller-manager 紧耦合 作为独立 Operator 运行,松耦合
扩展性 需自定义 Metrics API,开发成本高 插件式 Scaler 架构,开箱即用
一句话总结:KEDA 是 Kubernetes 的“弹性伸缩适配器”,它将外部事件源(如 Prometheus 指标)转换为 HPA 可以理解的 Metrics API,从而驱动 Pod 的自动扩缩容。

1.3 KEDA 在云原生弹性伸缩中的架构位置

KEDA 作为独立的 Operator 部署在 Kubernetes 集群中,它不替代 HPA,而是作为 HPA 的“指标提供者”和“策略增强器”。下图展示了 KEDA 在云原生弹性伸缩体系中的核心位置:

KEDA 在云原生弹性伸缩中的架构位置 事件源层(Event Sources) Prometheus | Kafka | RabbitMQ | AWS SQS | MySQL | HTTP | Cron | ... 50+ 内置 Scaler,支持自定义 Scaler KEDA Operator(核心层) ScaledObject / ScaledJob CRD 指标采集 → 聚合 → 暴露为 Metrics API 支持 ScaledObject 到 HPA 的自动映射 Kubernetes 控制面 HPA(Horizontal Pod Autoscaler) 轮询 KEDA 暴露的 Metrics API → 计算期望副本数 工作负载层(Deployment / StatefulSet / Job) Pod 副本数动态调整,支持缩容到 0 KEDA 不直接管理 Pod 通过 HPA 间接驱动
架构要点:KEDA 位于事件源和 Kubernetes 控制面之间,它负责将外部指标“翻译”成 HPA 可以消费的格式。KEDA 本身不直接操作 Pod,而是通过创建和更新 HPA 对象来实现弹性伸缩。

1.4 课程目标

本课程旨在帮助学员掌握使用 Prometheus 指标驱动 KEDA 触发器进行精细化调优的完整技能。完成本课程后,您将能够:

  1. 理解 KEDA 核心架构:掌握 ScaledObject、ScaledJob、Trigger、Scaler 等核心概念。
  2. 精通 Prometheus Scaler:能够编写 PromQL 查询语句,并将其配置为 KEDA 触发器。
  3. 掌握调优方法论:学会根据业务场景调整轮询间隔、冷却窗口、目标值、边界等参数。
  4. 避免常见陷阱:识别并解决指标抖动、伸缩震荡、冷启动延迟等生产问题。
  5. 构建生产级方案:设计高可用、低成本、响应迅速的弹性伸缩体系。

1.5 前置知识

为了获得最佳学习体验,建议学员具备以下基础:

领域 具体要求
Kubernetes 熟悉 Pod、Deployment、Service、HPA 等核心资源;能使用 kubectl 进行基本操作
Prometheus 了解 PromQL 基础语法(如 rate、sum、avg、histogram_quantile);知道如何查询指标
容器基础 理解容器化部署的基本概念;了解 Docker 镜像和容器生命周期
Linux 命令行 能够使用终端执行命令、查看日志、编辑 YAML 文件
注意:如果您对 PromQL 尚不熟悉,建议先花 30 分钟学习 Prometheus 官方文档中的 Basics of PromQL 部分。本课程第 3 章会提供 PromQL 速查表,但不会从头教授 PromQL 语法。

1.6 课程内容概览

本课程共分为 6 个模块,30 个章节,从基础概念到高级调优,层层递进:

  • 模块一(第 1-5 章):KEDA 基础与 Prometheus Scaler 入门
  • 模块二(第 6-12 章):触发器参数深度解析与调优
  • 模块三(第 13-18 章):高级伸缩策略与模式
  • 模块四(第 19-23 章):生产环境部署与运维
  • 模块五(第 24-27 章):故障排查与性能优化
  • 模块六(第 28-30 章):实战案例与最佳实践