ACK GOATScaler组件介绍与发布记录

更新时间:
复制为 MD 格式

ACK GOATScalerACK为节点即时弹性场景提供的下一代节点伸缩组件,重点提升扩容成功率与弹性策略可定制能力。本文介绍ACK GOATScaler的功能、使用说明和变更记录。

组件介绍

ACK GOATScaler用于在ACK集群中按需进行节点的自动扩缩容。组件持续监测集群中因资源不足而无法调度的Pod,结合节点池配置在多可用区、多实例规格之间择优扩容;同时识别长期空闲的节点进行缩容,帮助您在保障业务弹性的同时降低节点资源成本。

相较于上一代节点即时弹性能力,ACK GOATScaler在扩容成功率、可定制的扩容策略、大规模集群吞吐等方面提供了进一步增强,适用于多规格节点池、对扩容时延敏感、需要按业务优先级控制扩容顺序等场景。

使用说明

关于如何在集群中开启和配置节点即时弹性,请参见启用节点即时弹性

说明

本组件新增能力均通过参数、标签或注解显式开启,未显式开启时与历史版本行为保持一致,存量集群可平滑升级。

变更记录

202605

版本号

变更内容

变更时间

变更影响

v0.6.1

新特性

  • 新增批量扩容(Batch Scale)能力。组件将可合并的扩容需求聚合为批次并发下发,在大批量扩容场景下,整体扩容效率显著提升。该能力由scale-by-batch开关控制,默认开启,开启后单节点扩容作为该机制的特例同样适用。

优化与增强

  • 节点镜像匹配增强:扩容时依据节点标签中的镜像IDalibabacloud.com/os-image-id精确匹配节点池镜像,并新增对Alibaba Cloud Linux 4等系统镜像家族的识别,使库存与规格可用性判断更准确。该标签由系统维护,请勿手动修改或删除。

  • 节点池配置周期性自动同步:组件周期性同步节点池的可用区、实例规格、镜像、抢占策略等配置变更,自动生效且无需重启组件,减少配置漂移风险。

  • 并发扩容冲突处理:组件可自动识别弹性伸缩服务返回的并发冲突错误码(如Operation.Conflict),对受影响节点池执行短暂退避后重试,避免无效请求,提升高并发扩容场景下的稳定性。

安全与维护

  • 将组件依赖的Golang版本升级至1.25,提升组件稳定性。

新增参数

  • scale-by-batch:批量扩容开关。取值为truefalsetrue表示使用按批次聚合的批量扩容,false表示使用逐节点扩容。默认值为true

  • max-nodes-per-batch:单批次最大节点数,0表示不限制。取值范围为≥ 0的整数。默认值为500

20260529

批量扩容默认开启,单节点扩容作为其特例处理,常规扩缩容结果与v0.6.0保持一致。如需回退为逐节点扩容,可设置scale-by-batch=false。节点池配置自动同步、镜像匹配增强、并发扩容冲突处理均为内部优化,对既有扩缩容语义无影响。

v0.6.0

新特性

  • 单个伸缩活动支持多实例规格:v0.6.0版本之前每个伸缩活动只尝试一种实例规格,当该规格在目标可用区无库存时本次扩容会失败;v0.6.0及以上版本,每个伸缩活动可同时携带多个候选实例规格(受弹性伸缩服务限制,每次最多20个),并由弹性伸缩服务按照实时可用性择优创建实例。在多规格节点池、库存不足等场景下,扩容成功率显著提升、Pod等待时间缩短。该能力对存量节点池自动生效,无需额外配置。

  • 可定制的节点池扩容策略(Expander):新增expander参数,用于配置扩容时在多个候选节点池间挑选的策略。支持default(综合打分策略)和priority(按用户自定义节点池优先级扩容)两种取值。

    priority模式下,节点池优先级通过kube-system命名空间中名为cluster-autoscaler-priority-expanderConfigMap配置。数值越大优先级越高;匹配项必须是节点池ID(形如np开头的字符串)。配置示例:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-autoscaler-priority-expander
      namespace: kube-system
    data:
      priorities: |
        # 请替换为实际节点池 ID(形如 np 开头的字符串)
        10:
          - np42fa9597**********
        50:
          - npaf8e834f**********
    
  • 实例规格优先级:支持为节点池配置实例规格优先级,在多规格场景下优先使用指定规格扩容。通过为节点池添加标签goatscaler.io/instance-type-priority-enabled: "true"开启。

优化与增强

  • 扩容候选排序策略优化并开放配置:优化了扩容时对候选规格与可用区的默认排序逻辑,在多可用区均衡、库存、资源贴合度等方面更合理,整体扩容成功率与资源分布更优;同时通过score-policies参数开放为可配置项,可按业务需要调整。各维度按从低到高的优先级排列为:多可用区均衡(balance-between-zones)、库存(inventory)、资源贴合度(resource-capacity)、自定义优先级(custom-priority),位置越靠后的维度优先级越高,仅当靠后维度得分相同时,靠前维度才参与比较。

    此外,当Pod命中了自定义弹性资源优先级调度(即匹配了ResourcePolicy资源策略)时,系统会自动启用内部策略resource-policy,其优先级高于上述所有维度(成为最高优先级的排序依据),使扩容选型与该资源策略定义的资源顺序保持一致。该策略与调度器侧机制联动、自动生效,无需也无法通过score-policies配置。

  • 大规模集群资源与吞吐优化:本版本降低了控制器内存占用,提升了并发扩容吞吐能力,更好地支撑大规模集群。

  • 库存与交换机IP处理增强:按可用区独立判断各实例规格的库存,避免单一可用区库存不足时被误判为整体不可用;当交换机(vSwitch)可用IP耗尽时更快进入冷却状态,减少无效重试。

  • 扩容结果信息更完整:扩容接口的返回结果中包含更丰富的执行信息,便于排查与核对。

新增参数

  • expander:扩容时在多个候选节点池间挑选的策略。取值为defaultprioritydefault表示按综合打分策略挑选,priority表示按用户自定义节点池优先级挑选。默认值为default

  • score-policies:扩容候选排序策略,控制扩容候选的排序维度及优先级,位置越靠后权重越高。取值为以下维度的逗号分隔组合:balance-between-zones(多可用区均衡)、inventory(库存)、resource-capacity(资源贴合度)、custom-priority(自定义优先级)。未设置时使用默认组合。

20260527

多实例规格扩容为内部增强,仅提升扩容成功率,不改变节点池的规格范围与配置;扩容候选的默认排序已针对通用场景优化,存量集群升级后无需任何配置即可获得改进效果,如有特定排序诉求再通过score-policies按需调整。