更新时间:2026-05-21 GMT+08:00
分享

AdvancedClusterAutoscaler

插件简介

AdvancedClusterAutoscaler是一个基于社区cluster-autoscaler智能增强的集群预测弹性引擎插件,深度对接AASP服务(柔性资源容量预测服务),提前感知集群级别负载压力变化,实现更主动,更精准的容量调整。

使用此插件前需要联系客服开启AASP的预测数据获取。

插件说明

AdvancedClusterAutoscaler可分成扩容和缩容两个方面:

  • 自动扩容

    集群的自动扩容有以下两种方式实现:

    • 当集群中的Pod由于工作节点资源不足而无法调度时,会触发集群扩容,扩容节点与所在节点池资源配额一致。
    • 当AASP(柔性资源容量预测服务)预测的需要的节点数量大于当前节点数量,节点池会扩容到预测的节点数量。
  • 自动缩容

    当AASP(柔性资源容量预测服务)预测的需要的节点数量小于当前节点数量,节点池会缩容到预测的节点数量。

约束与限制

  • 该插件不能和CCE集群弹性引擎插件同时使用。
  • 使用该插件要求已存在时长大于等于2周的AOM数据。
  • 节点池只支持一种CPU/Memory规格(例如:4U8G),且只支持创建一个节点池。
  • 创建出来的节点需要确保POD可以调度。
  • 该插件功能仅支持虚拟机节点,不支持物理机节点和裸金属服务器。
  • 默认节点池不支持弹性扩缩容,详情请参见默认节点池DefaultPool说明
  • 缩容节点会导致与节点关联的本地持久卷类型的PVC/PV数据丢失,无法恢复,且PVC/PV无法再正常使用。缩容节点时使用了本地持久存储卷的Pod会从缩容的节点上被驱逐,并重新创建Pod,Pod会一直处于pending状态,因为Pod使用的PVC带有节点标签,由于冲突无法调度成功。
  • AdvancedClusterAutoscaler插件仅支持1.33及以上版本。

安装插件

  1. 为插件创建委托。

    1. 登录统一身份认证服务控制台
    2. 在左侧导航栏中选择“委托”,单击“创建委托”
    3. 委托类型选择“云服务”,云服务选择“云容器引擎服务CCE”
    4. 单击“完成”。创建完成后选择“立即授权”
    5. 单击右上角“新建策略”,策略内容如下:
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Action": [
                      "cce:node:list",
                      "cce:node:delete",
                      "cce:nodepool:update",
                      "cce:nodepool:list",
                      "cce:nodepool:get",
                      "cce:cluster:get",
                      "cce:nodepool:scale",
                      "ecs:cloudServerFlavors:get",
                      "ecs:flavors:get",
                      "ecs:flavors:get",
                      "evs:types:get"
                  ],
                  "Effect": "Allow"
              }
          ]
      }
    6. 选择刚创建的策略进行授权。

  2. 登录CCE控制台,单击集群名称进入集群。
  3. 在左侧导航栏中选择“插件中心”,在右侧找到AdvancedClusterAutoscaler插件,单击“安装”
  4. 在安装插件页面,根据需求选择“实例数”和资源配额。

    内存申请值和限制值建议如下:

    • 内存申请值 = Pod数量 * PodYAML大小(Kb/ 1w * 0.28G+1G
    • 内存限制值 = 内存申请值+2G

    例如2w个Pod的场景下,每个Pod的YAML为10Kb,则内存申请值 = 2 * 10 * 0.28G + 1G = 6.6G;内存限制值 = 6.6G + 2G = 8.6G(该计算方法相比表1中的建议值会存在一定的误差,通过查表或计算均可)

    表1 大规模场景的插件内存建议值

    Pod数量(每个Pod的YAML配置以10Kb计算)

    建议内存申请值

    建议内存限制值

    10000

    4Gi

    6Gi

    30000

    8Gi

    10Gi

    50000

    16Gi

    18Gi

    80000

    24Gi

    26Gi

    100000

    28Gi

    30Gi

  5. 设置“参数配置”,以下为必填项。

    • agencyName:使用的委托名称,使用第1步中创建的委托
    • clusterId:集群ID
    • instanceId:AASP服务实例ID
    • nodepoolName:节点池名称
    • tenantId:项目ID
    • stabilizationWindowSeconds:稳定窗口期,推荐节点数更新周期,默认值为300秒
    • minPoolSize:节点池最小节点数量,默认为0
    • maxPoolSize:节点池最大节点数量,默认为50

  6. 设置插件实例的部署策略。

    • 调度策略对于DaemonSet类型的插件实例不会生效。
    • 设置多可用区部署或节点亲和策略时,需保证集群中存在满足调度策略的节点且拥有足够的资源,否则插件实例将无法运行。
    表2 插件调度配置

    参数

    参数说明

    多可用区部署

    • 优先模式:优先将插件的Deployment实例调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将调度到单可用区下的不同节点。
    • 均分模式:插件Deployment实例均匀调度到当前集群下各可用区,增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署;均分模式限制不同可用区间插件实例数相差不超过1,单个可用区资源不足会导致后续其他实例无法调度。
    • 强制模式:插件Deployment实例强制调度到不同可用区的节点上,每个可用区下最多运行一个实例。如集群下节点不满足多可用区,插件实例将无法全部运行。节点故障后,插件实例存在无法迁移风险。

    节点亲和

    • 不配置:插件实例不指定节点亲和调度。
    • 指定节点调度:指定插件实例部署的节点。若不指定,将根据集群默认调度策略进行随机调度。
    • 指定节点池调度:指定插件实例部署的节点池。若不指定,将根据集群默认调度策略进行随机调度。
    • 自定义亲和策略:填写期望插件部署的节点标签实现更灵活的调度策略,若不填写将根据集群默认调度策略进行随机调度。

      同时设置多条自定义亲和策略时,需要保证集群中存在同时满足所有亲和策略的节点,否则插件实例将无法运行。

    容忍策略

    容忍策略与节点的污点能力配合使用,允许(不强制)插件的 Deployment 实例调度到带有与之匹配的污点的节点上,也可用于控制插件的 Deployment 实例所在的节点被标记污点后插件的 Deployment 实例的驱逐策略。

    插件会对实例添加针对node.kubernetes.io/not-readynode.kubernetes.io/unreachable污点的默认容忍策略,容忍时间窗为60s。

    详情请参见设置容忍策略

  7. 配置完成后,单击“安装”。

相关文档