更新时间:2025-08-26 GMT+08:00

管理弹性伸缩-HPA策略

弹性伸缩-HPA(Horizontal Pod Autoscaling)是Kubernetes内置组件,实现Pod水平自动伸缩的功能。在Kubernetes社区HPA功能的基础上,增加了应用级别的冷却时间窗和扩缩容阈值等功能。

使用限制

创建弹性伸缩-HPA策略

  1. 登录ServiceStage控制台
  2. 选择以下任意方式进入组件“伸缩”页面:

    • “应用管理”页面,单击组件所属应用名称,在“组件列表”单击待操作组件名称,在左侧导航栏单击“伸缩”
    • “组件管理”页面,单击待操作组件名称,在左侧导航栏单击“伸缩”

  3. 使用使用导入CCE工作负载创建组件方法创建的组件,如果未启用组件:

    1. 在弹出的对话框单击“确定”
    2. “启用组件”页面,单击“启用”,等待组件完成重启。

  4. 单击“弹性伸缩”右侧的,开启伸缩策略配置,进入“创建伸缩策略配置”页面。

    • CCE集群未安装metrics-server插件,请执行5
    • CCE集群已安装metrics-server插件,请执行8

  5. 单击“去安装”,参考安装Metrics Server插件,完成metrics-server插件安装。

    等待插件安装完成,“状态”“运行中”,表示插件安装成功。

  6. 返回“创建伸缩策略配置”页面。
  7. 单击“刷新”,刷新页面。
  8. 设置HPA伸缩策略参数。

    1. 策略名称

      输入策略名称。伸缩策略创建完成后,策略名称不支持修改。

      长度为4到63个字符,可以包含英文小写字母、数字或中划线(-),必须以英文小写字母开头、以英文小写字母或数字结尾。

    2. 冷却时间

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

      根据实际业务需要,输入扩容/缩容冷却时间。单位为分钟,缩容扩容冷却时间不能小于1分钟。

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

    3. 实例数范围

      根据实际业务需要,输入最小实例数和最大实例数。其中,最小实例数取值范围为1到299之间的整数;最大实例数取值范围为1到1500之间的整数,且必须大于最小实例数取值。

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

    4. 伸缩配置

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

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

      支持通过“界面配置”“YAML配置”两种方式设置触发条件参数。

      “CPU利用率”“内存利用率”为指标设置触发条件,需要已设置组件的“CPU配额”或者“内存配额”

      如果没有设置,请单击“去修改申请配额”,设置组件“资源”参数后升级组件:您可以根据需要自定义“CPU配额”“内存配额”,设置组件运行可以使用的最大/最小CPU核数(Core)和内存数量(GiB),从而选择性地为每个组件的实例设定所需要的资源数量。升级组件,请参考使用单批发布方式升级组件版本配置

      • “界面配置”方式
        • 指标:可选择“CPU使用率”或“内存使用率”。

          使用率 = 工作负载所有Pod实际资源使用量的平均值 / 资源申请量(Request)

        • 期望值:表示所选指标的期望值,即期望资源平均利用率。通过向上取整(当前指标值 / 期望值 × 当前实例数)来计算需要伸缩的实例数。

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

        • 阈值:指标处于范围内时不会触发伸缩,期望值必须在阈值范围之间。当指标值大于缩容阈值且小于扩容阈值时,不会触发扩容或缩容。

          阈值仅在1.15及以上版本的集群中支持。

      • “YAML配置”方式

        使用“YAML配置”方式配置自定义指标参数,CCE集群需要已安装prometheus插件。

        为CCE集群安装prometheus插件,请参考prometheus
         metrics:
           - type: Resource
             resource:
               name: cpu
               target:
                 type: Utilization
                 averageUtilization: 50
           - type: Resource
             resource:
               name: memory
               target:
                 type: Utilization
                 averageUtilization: 50
           - type: Pods
             pods:
               metric:
                 name: packets-per-second
               target:
                 type: AverageValue
                 averageValue: 1k
           - type: Object
             object:
               metric:
                 name: requests-per-second
               describedObject:
                 apiVersion: networking.k8s.io/v1beta1
                 kind: Ingress
                 name: main-route
               target:
                 type: Value
                 value: 10k

        如以上示例所示,使用YAML格式除了使用CPU(cpu)、内存(memory)的利用率(Utilization)作为指标外,还可以自定义指标参数配置,并支持更多指标,如Pods、Object、External等。

  9. 单击“立即创建”,完成伸缩策略创建。

修改弹性伸缩-HPA策略

  1. 登录ServiceStage控制台
  2. 选择以下任意方式进入组件“伸缩”页面:

    • “应用管理”页面,单击组件所属应用名称,在“组件列表”单击待操作组件名称,在左侧导航栏单击“伸缩”
    • “组件管理”页面,单击待操作组件名称,在左侧导航栏单击“伸缩”

  3. “伸缩”页面,选择“伸缩策略配置”页签,单击“编辑”,重新设置参数。

    1. 冷却时间

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

      根据实际业务需要,输入扩容/缩容冷却时间。单位为分钟,缩容扩容冷却时间不能小于1分钟。

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

    2. 实例数范围

      根据实际业务需要,输入最小实例数和最大实例数。其中,最小实例数取值范围为1到299之间的整数;最大实例数取值范围为1到1500之间的整数,且必须大于最小实例数取值。

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

    3. 伸缩配置

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

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

      支持通过“界面配置”“YAML配置”两种方式设置触发条件参数。

      “CPU利用率”“内存利用率”为指标设置触发条件,需要已设置组件的“CPU配额”或者“内存配额”

      如果没有设置,请单击“去修改申请配额”,设置组件“资源”参数后升级组件:您可以根据需要自定义“CPU配额”“内存配额”,设置组件运行可以使用的最大/最小CPU核数(Core)和内存数量(GiB),从而选择性地为每个组件的实例设定所需要的资源数量。升级组件,请参考使用单批发布方式升级组件版本配置

      • “界面配置”方式
        • 指标:可选择“CPU使用率”或“内存使用率”。

          使用率 = 工作负载所有Pod实际资源使用量的平均值 / 资源申请量(Request)

        • 期望值:表示所选指标的期望值,即期望资源平均利用率。通过向上取整(当前指标值 / 期望值 × 当前实例数)来计算需要伸缩的实例数。

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

        • 阈值:指标处于范围内时不会触发伸缩,期望值必须在阈值范围之间。当指标值大于缩容阈值且小于扩容阈值时,不会触发扩容或缩容。

          阈值仅在1.15及以上版本的集群中支持。

      • “YAML配置”方式

        使用“YAML配置”方式配置自定义指标参数,CCE集群需要已安装prometheus插件。

        为CCE集群安装prometheus插件,请参考prometheus
         metrics:
           - type: Resource
             resource:
               name: cpu
               target:
                 type: Utilization
                 averageUtilization: 50
           - type: Resource
             resource:
               name: memory
               target:
                 type: Utilization
                 averageUtilization: 50
           - type: Pods
             pods:
               metric:
                 name: packets-per-second
               target:
                 type: AverageValue
                 averageValue: 1k
           - type: Object
             object:
               metric:
                 name: requests-per-second
               describedObject:
                 apiVersion: networking.k8s.io/v1beta1
                 kind: Ingress
                 name: main-route
               target:
                 type: Value
                 value: 10k

        如以上示例所示,使用YAML格式除了使用CPU(cpu)、内存(memory)的利用率(Utilization)作为指标外,还可以自定义指标参数配置,并支持更多指标,如Pods、Object、External等。

  4. 单击“确定”,完成修改。

查看弹性伸缩-HPA策略运行情况

  1. 登录ServiceStage控制台
  2. 选择以下任意方式进入组件“伸缩”页面:

    • “应用管理”页面,单击组件所属应用名称,在“组件列表”单击待操作组件名称,在左侧导航栏单击“伸缩”
    • “组件管理”页面,单击待操作组件名称,在左侧导航栏单击“伸缩”

  3. “伸缩”页面:

    • 选择“状态”页签,查看策略运行状态。
    • 选择“事件”页签,查看策略运行中发生的事件。

关闭弹性伸缩-HPA策略

关闭弹性伸缩-HPA策略后,所有数据将清空,请谨慎操作。

  1. 登录ServiceStage控制台
  2. 选择以下任意方式进入组件“伸缩”页面:

    • “应用管理”页面,单击组件所属应用名称,在“组件列表”单击待操作组件名称,在左侧导航栏单击“伸缩”
    • “组件管理”页面,单击待操作组件名称,在左侧导航栏单击“伸缩”

  3. “伸缩”页面,单击“弹性伸缩”右侧的
  1. 单击“确定”,完成弹性伸缩-HPA策略关闭。