1. 课程导论:KEDA 是什么、为什么需要自定义指标驱动流水线扩缩、课程目标与前置知识
1.1 KEDA 是什么
KEDA(Kubernetes Event-Driven Autoscaling)是一个轻量级的开源组件,它扩展了 Kubernetes 原生的 Horizontal Pod Autoscaler(HPA),使得工作负载能够基于外部事件源(如消息队列长度、数据库连接数、自定义 Prometheus 指标、HTTP 请求速率等)进行自动扩缩。
KEDA 的核心价值在于:它让 Kubernetes 不再仅仅依赖 CPU/内存等资源指标,而是能够感知业务层面的真实负载,实现更精准、更实时的弹性伸缩。
关键概念: KEDA 本身不直接管理 Pod 的扩缩,它通过 ScaledObject 自定义资源定义(CRD)来驱动 HPA,由 HPA 执行实际的扩缩操作。KEDA 负责从外部指标源拉取数据并暴露给 HPA。
1.2 为什么需要自定义指标驱动流水线扩缩
在 CI/CD 流水线中,构建任务(如 Jenkins Pipeline、GitLab CI Runner、Tekton TaskRun)通常具有以下特征:
- 突发性强: 代码提交、PR 合并、定时触发等事件会导致构建任务在短时间内大量涌入。
- 资源消耗波动大: 编译、测试、打包、镜像构建等阶段对 CPU/内存的需求差异巨大。
- 任务排队敏感: 构建任务积压会直接影响开发效率,需要快速扩容处理积压。
- 空闲成本高: 持续运行大量构建节点会造成资源浪费,需要及时缩容。
传统的基于 CPU/内存的 HPA 无法感知构建队列的深度,导致以下问题:
| 场景 | 传统 HPA(CPU/内存) | KEDA(自定义指标) |
|---|---|---|
| 构建任务积压 | Pod 负载不高,不扩容,任务持续排队 | 根据队列长度立即扩容,快速消化任务 |
| 构建任务空闲 | Pod 负载低,但缩容缓慢或无法缩到 0 | 队列为空时,可缩容到 0,节省资源 |
| 突发大量提交 | 响应滞后,扩容速度跟不上任务涌入 | 事件驱动,秒级响应,提前扩容 |
| 资源碎片 | Pod 长期运行但利用率低 | 按需创建,用完即销毁,资源利用率最大化 |
通过 KEDA 引入自定义指标(如 Jenkins 队列长度、GitLab CI 待处理 Job 数、Tekton Pending TaskRun 数),可以实现流水线构建任务的按需、精准、零闲置的弹性伸缩。
1.3 课程目标
完成本课程后,你将能够:
- 理解 KEDA 架构:掌握 ScaledObject、Trigger、Scaler 等核心概念及其工作原理。
- 部署与配置 KEDA:在 Kubernetes 集群中安装 KEDA,并配置多种外部指标源。
- 自定义指标开发:编写自定义 Scaler 或利用 Prometheus Query 暴露流水线构建队列指标。
- 流水线集成:将 KEDA 与 Jenkins、GitLab CI、Tekton 等主流 CI/CD 工具集成,实现动态扩缩。
- 调优与排障:分析扩缩策略、冷启动、指标延迟等问题,优化流水线构建效率。
- 生产级实践:掌握多租户隔离、安全配置、监控告警等生产环境最佳实践。
1.4 前置知识
为了获得最佳学习体验,建议你具备以下基础:
- Kubernetes 基础:熟悉 Pod、Deployment、Service、HPA 等核心资源,能够使用 kubectl 操作集群。
- CI/CD 概念:了解持续集成/持续部署的基本流程,至少使用过一种 CI/CD 工具(Jenkins、GitLab CI、Tekton 等)。
- 容器化基础:理解 Docker 镜像构建、容器运行时等概念。
- 指标与监控:了解 Prometheus 指标采集、查询(PromQL)的基本用法。
提示: 如果你对 Kubernetes HPA 的工作原理还不熟悉,建议先复习 Kubernetes 官方文档 - Horizontal Pod Autoscaler,这将帮助你更好地理解 KEDA 的扩缩机制。
1.5 KEDA 核心架构图
下图展示了 KEDA 在 Kubernetes 集群中的核心组件及其与外部指标源、HPA 的关系:
1.6 课程内容概览
本课程共分为 6 个模块,循序渐进地帮助你掌握 KEDA 自定义指标驱动流水线构建任务动态扩缩调优:
| 模块 | 章节范围 | 核心内容 |
|---|---|---|
| 基础篇 | 第 1-5 章 | KEDA 概念、安装部署、ScaledObject 配置、指标源集成 |
| 实战篇 | 第 6-15 章 | Jenkins/GitLab CI/Tekton 流水线集成、自定义 Scaler 开发 |
| 调优篇 | 第 16-22 章 | 扩缩策略优化、冷启动优化、指标延迟处理、资源配额管理 |
| 生产篇 | 第 23-27 章 | 多租户隔离、安全配置、监控告警、成本分析 |
| 案例篇 | 第 28-29 章 | 大型 CI/CD 平台实战、故障排查案例 |
| 总结篇 | 第 30 章 | 课程回顾、最佳实践总结、扩展学习资源 |
注意: 本课程所有实验环境均基于 Kubernetes 1.24+ 版本,KEDA 版本为 2.10+。请确保你的实验环境满足最低版本要求,否则部分功能可能无法正常使用。