【KEDA】原生KEDA安装部署
一、Keda概念
KEDA (Kubernetes Event Driven Autoscaler)是一个基于 Kubernetes 的事件驱动的自动缩放器软件。KEDA可以根据需要处理的事件数量来驱动 Kubernetes 中任何容器进行扩展。使用 KEDA,可以明确映射到想要使用事件驱动的应用程序,而其他应用程序继续运行。从而使得 KEDA 能够与任意 Kubernetes 上的应用程序一起灵活安全运行。
KEDA 提供了将资源扩展到零的强大功能。KEDA 可以将资源从0扩展到 1或从 1 缩容到 0,从1 到 n 以及向后扩展由 HPA 负责。
二、Keda核心组件
KEDA Operator(controller)
- 扩缩容协调:监听用户定义的ScaledObject或ScalingJob资源,根据事件源指标动态创建或更新HPA对象,并直接管理 0→1 阶段的副本扩缩容。
- 生命周期管理:当事件源无流量时,将副本数缩减至零以节省资源;当事件触发时,直接激活副本并生成HPA对象。
- 多资源支持:不仅支持 Deployment 和 StatefulSet,还可扩展至任何实现 /scale 子资源的自定义资源(如 Argo Workflows)。
Scaler(Operator 通过插件化机制集成 Scaler 无需独立部署)
- 数据采集:对接外部事件源(如 MySQL、RabbitMQ、AWS SQS 等),周期性轮询获取指标(如消息积压量、HTTP 请求速率)。
- 插件化架构:KEDA 内置 60+ 种 Scaler,支持按需扩展;用户也可通过自定义代码实现私有事件源对接。
KEDA-operator-metrics-apiserver(metrics adapter)
- 指标转换:将 Scaler 获取的原始事件源数据(如 Kafka 队列长度、Prometheus 查询结果)转换为 Kubernetes 标准化的 External Metrics 格式,供 HPA 消费。
- 接口暴露:通过 Kubernetes Metrics API 提供 /external 端点,使 HPA 能够识别并处理事件驱动的指标。
KEDA-dmission-webhooks(Admission Webhooks)
- 配置校验:在用户提交 ScaledObject 时,验证其合法性(如字段完整性、触发器参数格式),避免错误配置导致扩缩容失效。
- 自动修正:部分场景下可补全缺失字段(如默认的指标采集间隔 pollingInterval)
三、keda工作原理
keda的工作原理示意图如下:

①:用户创建/更新ScaledObject时,Kubernetes API Server通过9443端口调用keda-admission-webhooks进行合法性校验
②:controller(keda-operator)list/watch Apiserver监测到有相关的scaledObject资源创建/更改
③:controller根据获取的scaledObject资源创建相关HPA资源
④:scaler连接外部事件源(如 Kafka、Prometheus)并实时获取指标数据
⑤:controller定期轮询 Scaler 获取事件源指标;当指标超过阈值时,若当前副本数为 0,直接扩容至 1 副本
⑥:controller通过 gRPC 将指标数据推送至 Metrics Adapter(keda-operator-metrics-apiserver)
⑦:Metrics Adapter将 Scaler 提供的原始指标转换为 Kubernetes 标准化的 External Metrics 格式,供 HPA 消费
四、方案部署
安装keda有很多方式,本次采用helm安装包方式安装。
1.在可执行机上添加keda Helm Repo
helm repo add kedacore https://kedacore.github.io/charts
2.执行以下命令更新 Helm Repo
helm repo update
3.选取合适版本
适合cce 1.21 k8s最新版本为chart:2.8.4,本次部署即采用chart:2.8.4,需要将chart包拉取到本地


4.安装 KEDA Helm chart
keda-operator、keda-operator-metrics-apiserver镜像需要外网拉取。注意在values.yaml文件中修改镜像地址
kubectl create namespace keda
helm install keda {dir}/keda --namespace keda
kubectl get pod -n keda
5.检查部署情况执行如下命名查看相关pod,如下图证明部署成功。
kubectl get pod -n keda

6.查询api-resources资源会发现安装keda组件会自动添加如下crd资源。

- 点赞
- 收藏
- 关注作者
评论(0)