KEDA入门指南:为什么需要KEDA、适用场景与工作原理

来自AI助手的总结
KEDA是Kubernetes事件驱动的自动扩缩容组件,可按负载实现零副本缩放。
KEDA入门指南:为什么需要KEDA、适用场景与工作原理

一、什么是KEDA

KEDA(全称:Kubernetes Event-Driven Autoscaler)是Kubernetes基于事件驱动的自动缩放器。借助KEDA,您可以根据需要处理的事件数量来驱动Kubernetes中任何容器的扩展。

KEDA是一个单一用途的轻量级组件,可以添加到任何Kubernetes集群中。KEDA与标准Kubernetes组件(如Horizontal Pod Autoscaler)协同工作并且可以在不覆盖或重复的情况下扩展功能。使用 KEDA,您可以明确映射要使用事件驱动扩展的应用程序,而其他应用程序则继续运行。这使得 KEDA 成为一种灵活且安全的选项,可以与任意数量的其他 Kubernetes 应用程序或框架一起运行。

KEDA的核心思想是:只有有任务需要处理时,才扩展应用程序,并且在没有工作时缩减资源,甚至可以将副本缩容到零。这不仅提高了资源利用率,还降低了成本。

二、为什么要用KEDA

使用KEDA的原因主要分为下面几种场景:

  • 基于事件扩缩容:支持零副本缩容、毫秒级响应,节省资源成本。

  • 基于消息队列扩缩容:动态感知队列深度,覆盖主流消息中间件,平滑扩缩容。

  • 基于流量扩缩容:灵活集成 Prometheus、Service Mesh等高级流量指标,优化冷启动。

  • 基于自定义指标扩缩容:通过Scaler机制无缝接入任意指标源,无需代码侵入。

  • 基于各种策略扩缩容:多触发器组合、冷却时间、优先级控制,满足生产级稳定性需求。

三、KEDA使用场景

KEDA使用场景主要为如下几点:

  • 基于消息队列的任务处理:KEDA支持从各类消息的数量自动扩缩容相关服务

  • 基于HTTP请求的扩缩容:KEDA支持从HTTP请求的数量自动扩缩容相关服务

  • 定时任务和批处理:KEDA支持时间的触发器,定时进行扩缩容

  • 无服务架构:KEDA支持Scale to Zero,功能和Serverless类似

四、KEDA架构及工作流程

4.1 KEDA架构

下图展示了KEDA如何与Kubernetes Horizontal Pod Autoscaler、外部事件源和Kubernetes的etcd协同工作数据存储:

Day022-K8s弹性能力-基于KEDA的下一代弹性伸缩-图2

重要组件:

  • ScaledObject:KEDA核心资源,用于定义扩缩容规则

  • Controller:KEDA控制器,监听APIServer的KEDA对象,并根据规则通知Scaler调整副本数量

  • Scaler:Scaler与HPA协同工作,以实现自动扩展

  • External Trigger Source:外部事件或数据源,可以触发KEDA的扩展操作

  • Metrics Adapter:用于定义自定义指标

4.2 KEDA工作流程

KEDA完整工作流程如下:

  • 1)事件监听:KEDA持续监听外部事件源(如队列中有未处理消息)

  • 2)指标转换:将事件转换为HPA可识别的指标(例如:消息积压数量)

  • 3)HPA决策:HPA根据指标计算目标副本数(如从0扩展到5)

  • 4)Pod扩缩:Kubernetes调整Pod副本数,处理事件负载

  • 5)缩容到零:当事件处理完毕,KEDA将副本数缩至0以节省资源

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容