更新时间:2026-06-25 GMT+08:00
分享

HPA弹性扩缩容

简介

本章节主要指导用户在CCI 2.0配置使用HorizontalPodAutoscaler(HPA,Pod水平自动扩缩容),自动更新无状态负载资源, 目的是自动扩缩无状态负载以满足需求。

HPA会定期调整无状态负载的所需规模,以匹配期望的指标, 例如,平均CPU利用率、平均内存利用率或您指定的任何其他自定义指标。

如何配置HPA

  1. 登录云容器实例 CCI2.0控制台。
  2. 单击左侧导航栏“负载管理”,单击“无状态负载”中的某个负载进入负载详情界面。

  3. 单击“弹性伸缩”。
  4. 创建HPA策略可以通过以下两种方式,控制台方式和YAML文件方式。

    • 方式一:通过控制台创建HPA策略。
      1. 单击“创建HPA策略”,根据界面提示补充相关信息。相关配置项如表1所示。
        表1 创建HPA策略

        配置项

        说明

        名称

        自定义HPA策略名称。

        命名空间

        选择指定命名空间。如需新建请单击“创建命名空间”

        关联工作负载

        系统会自动匹配关联工作负载。

        实例范围

        HPA可伸缩的Pod实例数量上下限。

        伸缩配置

        • 系统默认

          选择系统默认则采用K8S社区推荐的默认行为进行负载伸缩。

        • 自定义

          选择自定义则用户可以自定义稳定窗口、步长、优先级等策略实现更灵活的配置,未配置的参数将采用K8S社区推荐的默认值。

        系统策略

        • 指标: 触发弹性伸缩的监控数据类型,支持选择“CPU 利用率”或“内存利用率”。
        说明:

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

        • 期望值:您希望工作负载在运行时的“理想资源利用率”。期望值不仅代表目标利用率,系统还会以它为核心,通过公式 向上取整 (当前指标值 / 期望值 × 当前实例数) 来计算需要伸缩的目标实例数。

          计算示例: 假设当前实例数为2,期望值为50%。若当前实际指标值升高至85%,系统会按公式 向上取整 (85% / 50% × 2) = 向上取整(3.4),得出此时需要将实例数伸缩为4个。

        • 容忍范围:为了防止指标的短暂波动导致系统频繁扩缩容(即“震荡”),系统引入了容忍度机制(默认为0.1,即10%)。
          • 免扩缩容区间: 实际指标在 [期望值 × (1 - 容忍度), 期望值 × (1 + 容忍度)] 这个范围内浮动时,系统认为当前状态可以接受,不会触发计算和扩缩容动作。
          • 运行示例: 当期望值为50%,容忍度为0.1。则免扩缩容区间为45%到55%。只有当实际利用率持续大于55%(扩容)或持续小于45%(缩容)时,才会真正执行上述期望值的伸缩计算。

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

        须知:

        可以设置多条系统策略。

    • 方式二:通过YAML创建HPA策略。
      1. 单击“YAML创建”创建HPA策略。

        创建HPA的YAML示例如下:

        kind: HorizontalPodAutoscaler
        apiVersion: cci/v2
        metadata:
          name: alpha-test-hpa
          namespace: cci-test              # 命名空间
        spec:
          scaleTargetRef:
            kind: Deployment
            name: nginx
            apiVersion: cci/v2
          minReplicas: 1                   # 最小副本数
          maxReplicas: 5                   # 最大副本数
          metrics:
            - type: Resource
              resource:
                name: memory               # 支持CPU、Memory资源指标
                target:
                  type: Utilization        # 扩缩类型
                  averageUtilization: 50   # 触发扩缩的平均使用率
            - type: Resource
              resource:
                name: cpu
                target:
                  type: Utilization
                  averageUtilization: 50

  5. 进入负载详情,选择负载内的某个Pod单击“查看终端”按钮进入Pod终端,输入命令:

    while true; do curl 127.0.0.1:80; done

    等待HPA触发,负载扩容并上报事件。

相关文档