使用 KEDA 扩展 Kubernetes 负载

发布: (2025年12月14日 GMT+8 14:12)
3 min read
原文: Dev.to

Source: Dev.to

为什么 HPA 可能无法扩展你的 Pod

水平 Pod 自动伸缩器(HPA)仅基于 CPU 或内存使用率进行扩缩容,而这并不总能反映真实的工作负载。当你需要基于每秒请求数、队列深度或数据库查询结果等指标进行扩容时,仅靠 HPA 是不够的。

介绍 KEDA

KEDA(Kubernetes Event‑Driven Autoscaling)通过监控外部事件——如消息队列、Prometheus/Grafana 指标、SQL 查询和 HTTP 流量——并将其暴露为 HPA 可消费的指标,来补充 Kubernetes 生态系统。这使得 HPA 能够基于更准确反映实际应用负载的信号做出扩缩容决策。

关键能力

  • 事件驱动的扩缩容:当没有流量时将工作负载缩容至零,事件到来时自动恢复。
  • 无需修改应用:工作负载保持不变,KEDA 作为 Kubernetes 自动伸缩的干净扩展。
  • 原生集成:KEDA 使用 ScaledObject 自定义资源,通过 Kubernetes API Server 注册,定义哪个工作负载需要扩容以及由哪个外部触发器驱动扩容。

KEDA 工作原理

  1. ScaledObject 定义 – 指定目标工作负载和外部事件源的自定义资源。
  2. Scaler – KEDA 使用专用的 scaler 持续观察外部触发器(如消息队列、HTTP 流量或监控系统)。
  3. Metrics Adapter – 检测到事件后,KEDA 控制器评估需求并通过其指标适配器暴露相应指标。
  4. HPA 消费 – HPA 消费这些指标,仍然是唯一负责扩容 Pod 的组件。
  5. Scale‑to‑zero – 若没有事件,KEDA 允许工作负载缩容至零;事件再次出现时,Pod 会被重新扩容。

KCD Guatemala 2025 的概念验证

在 KCD Guatemala 2025 期间,演示了基于真实 HTTP 流量使用 KEDA 自动扩容 Kubernetes 工作负载的概念验证。演示内容包括:

  • 一个轻量级示例应用。
  • KEDA HTTP 插件配置。
  • ScaledObject 定义。
  • 展示从零到多个副本再回到零的事件驱动自动伸缩的 Kubernetes 清单。
  • 用于生成负载并实时观察扩缩容行为的脚本和说明。

其目标是提供一个清晰、动手的事件驱动自动伸缩示例,而非面向生产的完整系统。

资源

Back to Blog

相关文章

阅读更多 »