弹性伸缩

弹性伸缩,即自动伸缩。可以根据业务的需求以及策略,动态的调整应用所需要的计算资源。从而达到业务高峰期提高计算量,保证业务计算能力;业务低峰期减少计算资源,降低成本的目的。

前提条件

tip 提示 如有组件部署问题,可咨询 Erda 技术团队。

功能说明及应用场景

Erda 支持如下弹性伸缩类型:

弹性伸缩类型 介绍 适用场景 配置参考
HPA 自动更新工作负载资源(例如 Deployment 或者 StatefulSet 等实现了 scale 接口的对象), 目的是自动扩缩工作负载以满足需求 在线业务 水平自动伸缩 (HPA)
Cluster-Autoscaler 自动调整 Kubernetes 集群规模的工具,通过扩大集群规模来满足工作负载的调度需求或缩小集群规模来节省资源成本 集群节点的动态扩缩容 基于阿里云的服务弹性伸缩

水平自动伸缩 (HPA)

如果应用已经部署,可以为应用服务配置水平自动扩缩容能力,实现根据预配置的触发器自动扩缩服务实例数量。

Erda 目前支持如下几种类型的触发器:

  • CPU: 根据服务实例的 CPU 平均使用率 自动扩缩服务实例数量
  • Memory:根据服务实例的 Memory 平均使用率 自动扩缩服务实例数量
  • Cron:根据 Linux 风格的定时表达式,定时 自动扩缩服务实例数量

创建并启用规则

  • 步骤 1:进入到应用 Runtime 详情页面,如下图所示,点击服务右侧 ...,点击 弹性伸缩

弹性伸缩 - 图1

  • 步骤 2:进入到 自动弹性伸缩 弹出页面,点击 添加触发器 配置触发器,对应不同的触发器类型

弹性伸缩 - 图2

  • 步骤 3: 通过弹出框 创建触发器 下拉框选择目标触发器类型,当前支持如下几种类型的触发器:

    • CPU 类型:需要配置目标值,实际情况低于目标值则自动缩容,实际情况高于目标值则自动扩容
    • 内存 类型:需要配置目标值,实际情况低于目标值则自动缩容,实际情况高于目标值则自动扩容
    • Cron 类型:需要配置 开始周期结束周期 及对应时间区间内的 期望实例数量(desiredReplicas)

tip 提示

  1. CPU、内存类型的目标值实际上指代的是对应指标的 平均使用率目标值
  2. Cron 类型的实例数遵循以下规则:
    a. 如果时间段位于 开始结束 限制的范围之内, 服务的实例数量扩容为 最大值期望实例数量(desiredReplicas) 这两个值中的较低的值
    b. 如果时间段位于 开始结束 限制的范围之外,服务的实例数量缩容为 最小值
    c. 极端情况下,在 最小值 为 0,且扩缩容规则只有 Cron 触发器无其他触发器的情况下,如果时间段位于 开始结束 限制的范围之外,则服务的实例数为 0,这种情况下可以节省集群资源使用,仅在定时范围内运行服务实例
  3. Cron 类型目前默认时区是 Asia/Shanghai,如果是其他时区,请相应调整时差,以与对应时区时间段匹配

弹性伸缩 - 图3

  • 步骤 4:设置扩缩容规则对应的服务实例数的最大最小值。点击 保存,则创建对应的自动弹性伸缩扩缩容规则并启用

warning 警告

  1. 最小值应当 不高于 Cron 触发器设置的期望实例数
  2. 最大值应当 不低于 Cron 触发器设置的期望实例数

弹性伸缩 - 图4

  • 步骤 5: 点击保存,则创建对应的自动弹性伸缩扩缩容规则并应用.然后再次点击步骤 1 中的 弹性伸缩,会显示规则已经启用中

弹性伸缩 - 图5

确认扩缩容效果

当触发扩缩容操作之后,服务的实例数量会自动扩容或缩容,在 Runtime 详情页的 部署日志 部分对应会显示扩缩容日志信息

弹性伸缩 - 图6

也可以从服务详情查看确认扩缩容生效

弹性伸缩 - 图7