更新时间:2024-01-27 GMT+08:00

HPA策略

HPA策略即Horizontal Pod Autoscaling,是Kubernetes中实现POD水平自动伸缩的功能。该策略在Kubernetes社区HPA功能的基础上,增加了应用级别的冷却时间窗和扩缩容阈值等功能。

前提条件

使用HPA需要安装能够提供Metrics API的插件,您可根据集群版本和实际需求选择其中之一:

约束与限制

  • HPA策略:仅支持1.13及以上版本的集群创建。
  • 1.19.10以下版本的集群中,如果使用HPA策略对挂载了EVS卷的负载进行扩容,当新Pod被调度到另一个节点时,会导致之前Pod不能正常读写。

    1.19.10及以上版本集群中,如果使用HPA策略对挂载了EVS卷的负载进行扩容,新Pod会因为无法挂载云硬盘导致无法成功启动。

创建HPA策略

  1. 在CCE控制台,单击集群名称进入集群。
  2. 单击左侧导航栏的“工作负载”,在目标工作负载的操作列中单击“更多 > 弹性伸缩”

    图1 工作负载弹性伸缩

  3. 策略类型选择“HPA+CronHPA策略”,并启用HPA策略,填写HPA策略配置参数。

    本文中仅介绍HPA策略,如需启用CronHPA策略,请参见CronHPA定时策略

    图2 启用HPA策略
    表1 HPA策略配置

    参数

    参数说明

    实例范围

    请输入最小实例数和最大实例数。

    策略触发时,工作负载实例将在此范围内伸缩。

    冷却时间

    请输入缩容和扩容的冷却时间,单位为分钟,缩容扩容冷却时间不能小于1分钟

    该设置仅在1.15到1.23版本的集群中显示。

    策略成功触发后,在此缩容/扩容冷却时间内,不会再次触发缩容/扩容,目的是等待伸缩动作完成后在系统稳定且集群正常的情况下进行下一次策略匹配。

    伸缩配置

    该设置仅在1.25及以上版本的集群中显示。

    • 系统默认:采用社区推荐的默认行为进行负载伸缩,详情请参见社区默认行为说明
    • 自定义:自定义扩/缩容配置的稳定窗口、步长、优先级等策略,实现更灵活的配置。未配置的参数将采用社区推荐的默认值。
      • 禁止扩/缩容:选择是否禁止扩容或缩容。
      • 稳定窗口:需要伸缩时,会在一段时间(设定的稳定窗口值)内持续检测,如在该时间段内始终需要进行伸缩(不满足设定的指标期望值)才进行伸缩,避免短时间的指标抖动造成异常。
      • 步长策略:扩/缩容的步长,可设置一定时间内扩/缩容Pod数量或百分比。在存在多条策略时,可以选择使Pod数量最多或最少的策略。

    系统策略

    • 指标:可选择“CPU利用率”“内存利用率”
      说明:

      利用率 = 工作负载容器组(Pod)的实际使用量 / 申请量

    • 期望值:请输入期望资源平均利用率。

      期望值表示所选指标的期望值,通过向上取整(当前指标值 / 期望值 × 当前实例数)来计算需要伸缩的实例数。

      说明:

      HPA在计算扩容、缩容实例数时,会选择最近5分钟内实例数的最大值。

    • 容忍范围:指标处于范围内时不会触发伸缩,期望值必须在容忍范围之间。

      当指标值大于缩容阈值且小于扩容阈值时,不会触发扩容或缩容。阈值仅在1.15及以上版本的集群中支持

    自定义策略(仅在1.15及以上版本的集群中支持)

    说明:

    使用自定义策略时,集群中需要安装支持采集自定义指标的插件(例如Prometheus),且工作负载需正常上报并采集自定义指标。

    采集自定义指标的方法及示例请参见使用云原生监控插件监控自定义指标

    • 自定义指标名称:自定义指标的名称,输入时可根据联想值进行选择。
    • 指标来源:在下拉框中选择对象类型,可选择“Pod”。
    • 期望值:Pod支持指标为平均值。通过向上取整(当前指标值 / 期望值 × 当前实例数)来计算需要伸缩的实例数。
      说明:

      HPA在计算扩容、缩容实例数时,会选择最近5分钟内实例数的最大值。

    • 容忍范围:指标处于范围内时不会触发伸缩,期望值必须在容忍范围之间。

  4. 设置完成后,单击“创建”