本节介绍如何创建事件驱动伸缩(KEDA),即 ScaledObject 资源。

前提条件

  • 您需要加入一个集群或项目,并在集群或项目中具有事件驱动伸缩管理权限。有关更多信息,请参阅集群角色项目角色

  • KubeSphere 平台需要安装并启用 KEDA for KubeSphere 扩展组件。

操作步骤

  1. 以具有事件驱动伸缩管理权限的用户登录 KubeSphere Web 控制台并进入您的集群或企业空间。

  2. 在左侧导航栏选择弹性伸缩 > 事件驱动伸缩

  3. 在页面点击创建

  4. 基本信息页签,设置事件驱动伸缩的基本信息和伸缩对象,然后点击下一步

  5. 伸缩设置页签,设置允许的最小和最大 Pod 副本数量、回退机制、触发器等伸缩规则,然后点击下一步

  6. 高级设置页签,设置伸缩行为等,然后点击创建

参数描述

以下介绍如何设置 KEDA 的参数。

  • 基本信息

    参数 描述

    名称

    事件驱动伸缩的名称。名称只能包含小写字母、数字和连字符(-),必须以小写字母或数字开头和结尾,最长 253 个字符。

    别名

    事件驱动伸缩的别名。不同 KEDA 的别名可以相同。

    描述

    事件驱动伸缩的描述信息。描述可包含任意字符,最长 256 个字符。

    伸缩对象

    选择部署和有状态副本集作为伸缩对象。

  • 伸缩设置 > 基础设置

    参数 描述

    最小副本数

    允许的容器组副本的最小数量,默认为 0。

    最大副本数

    允许的容器组副本的最大数量,默认为 100。

    轮询间隔

    KEDA 检查​​每个触发器​​指标值的时间间隔。

    等待时间

    从​​最后一个触发器报告有活动​​到 KEDA 将资源​​缩容到 0​​ 之间的等待时间。

  • 伸缩设置 > 回退设置

    当无法从外部事件源获取指标时,KEDA 应采取的回退机制。

    参数 描述

    失败阈值

    允许每个伸缩器连续获取指标失败的​​最大次数​​。

    回退副本数​

    当伸缩器失败次数超过阈值后,工作负载应该被缩放至的副本数量。

  • 伸缩设置 > 触发器设置

    触发器设置定义了​如何伸缩​​的核心规则。

    点击添加触发器,可选择 CronPrometheus 类型的触发器,还可以自定义触发器。更多信息,可参阅触发器类型与最佳实践

    若添加多个触发器,KEDA 会计算每个触发器所期望的副本数,并选择其中​​最大值​​来执行。

    • Cron 触发器

      通过配置 Cron 触发器,您可以将特定时间段内的 Pod 副本数量扩缩至指定值。

      参数 描述

      时区

      Cron 表达式所依据的时区。

      期望副本数

      在 Cron 计划定义的“开始”和“结束”时间点​​之间​​,工作负载应该被扩缩至的 Pod 副本数量,其需在最小和最大副本数的限制范围内。

      开始

      指示 Cron 计划开始时间的 Cron 表达式。

      结束

      指示 Cron 计划结束时间的 Cron 表达式。

    • Prometheus 触发器

      Prometheus 触发器允许您根据自定义的 PromQL 查询结果进行弹性伸缩,适用于需要基于特定指标进行伸缩的场景。

      参数 描述

      地址

      集群内部可以访问到的 Prometheus 服务的地址。

      阈值

      阈值是您为每个 Pod 设定的目标平均负载值。当根据 ​​PromQL​​ 查询结果与当前副本数计算出的平均负载超过此值时,便会触发扩缩容操作。​

      激活阈值 ​​

      ​从 0 个副本扩容到 1 个副本​​的阈值。当 ​​PromQL​​ 查询结果超过此值时才开始监控和伸缩,避免在低负载时频繁检查。

      如果留空,则会默认使用刚才设置的​​阈值​​。

      注意:若设置的最小副本数 ≥ 1,则始终激活且忽略激活阈值。

      表达式

      用于查询 Prometheus 的 ​​PromQL​​ 语句。

      触发器认证

      如果外部事件源需要身份验证(如 API 密钥、证书等),可以在这里配置认证信息。

      支持多种认证方式:

      • Secret 引用:从 Kubernetes Secret 中获取连接信息

      • 环境变量:从 Pod 环境变量中获取凭据

      • Pod 身份:使用 Pod 的 ServiceAccount 进行认证

      元数据

      提供给 Prometheus 触发器的额外参数,用于特殊配置。

    • 自定义触发器

      自定义指标进行弹性伸缩。

      参数 描述

      类型

      触发器的类型。

      触发器参数

      触发器类型不同,需要配置的参数就不同。

      更多触发器类型及其配置信息,请参阅 KEDA 触发器官方文档

      触发器认证

      如果外部事件源需要身份验证(如 API 密钥、证书等),可以在这里配置认证信息。

      支持多种认证方式:

      • Secret 引用:从 Kubernetes Secret 中获取连接信息

      • 环境变量:从 Pod 环境变量中获取凭据

      • Pod 身份:使用 Pod 的 ServiceAccount 进行认证

  • 高级设置 > 恢复到原始副本数

    删除伸缩规则后​​,是否将被管理的工作负载的副本数恢复到原始副本数,还是保持当前副本数不变。

  • 高级设置 > 伸缩行为

    配置工作负载在扩容和缩容两个方向的伸缩行为。更多配置信息,可参阅 KEDA 最佳实践

    参数 描述

    策略偏好

    当扩容策略/缩容策略下存在多条策略时,伸缩器将根据策略偏好从这些策略的计算结果中选择最终值​​。

    • 倾向于大幅度伸缩:按照副本数变化最大的策略执行伸缩。

    • 倾向于小幅度伸缩:按照副本数变化最小的策略执行伸缩。

    • 禁止伸缩:禁用该方向的扩缩。

    稳定窗口时间

    伸缩器会在设定的时间窗口内收集所有建议副本数,并基于规则选择一个最终值,以防止指标短暂波动造成的副本数量频繁变化。

    策略类型

    扩缩容计算所依据的基准。

    • 百分比​​:以当前副本数量的百分比进行扩缩容。

    • ​容器组​​:以固定的 Pod 数量进行扩缩容。

    扩容值/缩容值

    当前策略中,单次扩缩操作所允许的最大变化量。​​

    激活时间

    策略生效前,其关联的指标规则必须持续满足的最短时间窗口。单位为秒。

    • 点击添加可设置多条扩缩策略。

    • 在已创建的策略右侧点击trash-light可删除策略。