欢迎访问我的博客,你的支持,是我最大的动力!

keda k8s负载hpa扩展组件

Linux 小马奔腾 614℃ 评论
目录:
[显示]

项目地址 https://github.com/kedacore/keda

文档地址 https://keda.sh/docs/2.5/

keda是一个基于事件驱动的弹性伸缩组件,其支持的弹性伸缩控制器非常多,如kafka、cpu、memory、cron、elasticsearch、external、influxdb、mongodb、mysql、prometheus、redis list等,几乎常见的数据源都可以做为容器弹性伸缩的数据来源。

keda 目前是CNCF孵化项目,当前github stars 4k 当前稳定版本为 2.5.0

使用方式为,使用yaml方式创建一个ScaledObject,该对象负责创建一个hpa资源,再由hpa资源对目标pod进行弹性扩容控制

keda由两个组件组成:

  • keda operator:负责创建维护hpa对象资源,同时激活和停止hpa伸缩 负责 0->1 和 1->0
  • metrics server: 实现了hpa中的external metrics (metrics server),根据事件源配置返回计算结果

HPA控制了副本1->N和N->1的变化。keda控制了副本0->1和1->0的变化(起到了激活和停止的作用,对于一些消费型的任务副本比较有用,比如在凌晨启动任务进行消费)

部署方式

部署完成后,会向集群添加4类crd资源

- ScaledObjects 负责事件源与deploy,statefulset等之间的映射关系,生成和控制对应的hpa对象

- ScaledJobs 负责事件源与job的映射关系,生成和控制对应的hpa对象

- TriggerAuthentication 事件源认证配置

- ClusterTriggerAuthentication 事件源认证配置

ScaledObject参数说明

常用scalers

cpu/memory

永远不会缩放到0。当有多个缩放器时,若存在cpu/memory缩放器,目标将不会缩放回0

mysql

另一个示例

prometheus

KEDA Metrics Server

对于在keda不支持的一些事件源,还可以使用keda提供的扩展机制来扩充自己的事件源。
实现方法主要是通过grpc实现接口,详情可以参考 https://keda.sh/docs/2.5/concepts/external-scalers/

支持多触发器 2.0版本开始

 

参考文章

1、源码剖析:KEDA是如何工作的? https://segmentfault.com/a/1190000038143825
2、KEDA宣布2.0版本|自动伸缩应用程序到下一个水平 https://segmentfault.com/a/1190000037732547

 

 

转载请注明:轻风博客 » keda k8s负载hpa扩展组件

喜欢 (10)or分享 (0)