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 课程目标

完成本课程后,你将能够:

  1. 理解 KEDA 架构:掌握 ScaledObject、Trigger、Scaler 等核心概念及其工作原理。
  2. 部署与配置 KEDA:在 Kubernetes 集群中安装 KEDA,并配置多种外部指标源。
  3. 自定义指标开发:编写自定义 Scaler 或利用 Prometheus Query 暴露流水线构建队列指标。
  4. 流水线集成:将 KEDA 与 Jenkins、GitLab CI、Tekton 等主流 CI/CD 工具集成,实现动态扩缩。
  5. 调优与排障:分析扩缩策略、冷启动、指标延迟等问题,优化流水线构建效率。
  6. 生产级实践:掌握多租户隔离、安全配置、监控告警等生产环境最佳实践。

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 的关系:

KEDA 核心架构图 外部指标源 Prometheus Kafka / RabbitMQ Jenkins / GitLab CI KEDA 核心组件 Operator ScaledObject CRD Metrics Server Kubernetes 集群 HPA Deployment Pod(构建节点) KEDA 通过 ScaledObject 定义指标源,Operator 负责协调,Metrics Server 暴露指标给 HPA HPA 根据指标调整 Deployment 的副本数,实现构建节点的动态扩缩 数据流方向 外部指标源 → KEDA Metrics Server → HPA → Deployment → Pod 事件驱动 → 指标采集 → 扩缩决策 → 执行扩缩

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+。请确保你的实验环境满足最低版本要求,否则部分功能可能无法正常使用。