【KEDA】原生KEDA安装部署

举报
可以交个朋友 发表于 2025/12/17 18:02:06 2025/12/17
【摘要】 一、Keda概念KEDA (Kubernetes Event Driven Autoscaler)是一个基于 Kubernetes 的事件驱动的自动缩放器软件。KEDA可以根据需要处理的事件数量来驱动 Kubernetes 中任何容器进行扩展。使用 KEDA,可以明确映射到想要使用事件驱动的应用程序,而其他应用程序继续运行。从而使得 KEDA 能够与任意 Kubernetes 上的应用程序...

一、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的工作原理示意图如下:
image.png

①:用户创建/更新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包拉取到本地
image.png

image.png

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

image.png

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。