KEDA(Kubernetes Event-driven Autoscaling)是一个基于事件驱动的自动伸缩器,它允许根据事件数量来驱动Kubernetes中任何容器的扩展。KEDA是一个单一用途的轻量级组件,可以部署到任何Kubernetes集群中,与标准Kubernetes组件(例如Horizontal Pod Autoscaler)一起工作,扩展K8S功能。以下是KEDA的工作原理:
KEDA的主要组件
- Scaler:连接到外部服务(例如,MySQL)并获取指标(例如,表的数据量)。
- Operator(代理):负责“激活”一个Deployment/StatefulSet并创建一个Horizontal Pod Autoscaler对象。
- Metrics Adapter:将来自外部源的指标呈现给Horizontal Pod Autoscaler。
KEDA的工作流程
- 监控事件源:KEDA监控定义的事件源,并定期检查是否有任何事件。
- 触发伸缩:当事件数量达到设置的阈值时,KEDA会根据部署的副本数进行扩展或缩减。
- 调整Pod副本数:KEDA负责将Deployment的副本数从0扩展到多个实例,或者缩减到0。
KEDA与HPA的关系
KEDA并不是要取代HPA,而是对HPA的补充。KEDA专注于基于事件驱动的伸缩,而HPA则专注于基于资源利用率的伸缩。KEDA的出现主要是为了解决HPA无法基于灵活的事件源进行伸缩的问题。
KEDA的安装和配置
KEDA支持通过Helm方式进行安装,也可以直接使用kubectl进行安装。安装完成后,KEDA会启动两个pod,如果这两个pod状态为Running,则表示安装成功。
通过KEDA,用户可以根据实际需求设置自动伸缩的触发条件,例如消息队列中的消息数量,从而实现更灵活和智能的资源管理。