文档首页/ 华为云UCS/ 用户指南/ 集群联邦/ 多集群负载伸缩/ FederatedHPA策略/ 配置FederatedHPA策略以控制扩缩速率
更新时间:2024-04-15 GMT+08:00

配置FederatedHPA策略以控制扩缩速率

为什么需要控制扩缩速率

HPA controller默认的扩缩容总原则是:快速扩容,低速缩容。然而,若仅依靠配置稳定窗口时长,在窗口时长过后即失去了对扩缩容速率的控制能力,无法真正实现对扩缩容速率的精准控制。您可以通过配置负载伸缩策略的YAML文件中spec的behavior结构,来更精准灵活地控制FederatedHPA的自动扩缩速度。该结构支持为每个FederatedHPA策略独立配置扩缩容速率,以及为扩容与缩容配置不同的速率。

操作步骤

针对不同的业务场景,本小节提供常见的behavior结构配置方法。在其他业务场景下,如您希望缓慢扩容、快速缩容等等,可以参考下述对behavior结构的解释,针对scaleUp与scaleDown进行配置。

  • 场景一:尽快扩容

    如果您希望在业务高峰期能尽快扩容,可以配置较大的Percent值。

    behavior: 
      scaleUp: 
        policies: 
        - type: Percent 
          value: 900 
          periodSeconds: 60

    本示例中Percent值为900,也就是说,每个扩缩周期都按照(1 + 900%)= 10倍的速率进行扩容。例如,若工作负载中Pod数从1开始,那么在上述配置下,每隔60秒的扩容Pod数的变化如下:1 > 10 > 100 > ... 。需要注意的是,扩缩后的Pod数量不能超过FedratedHPA策略配置的最大Pod数。

    Percent类型对资源消耗的波动较大,如果您希望资源消耗可控,可以按绝对数—Pods类型来配置。

    behavior: 
      scaleDown: 
        policies: 
        - type: Pods 
          value: 10 
          periodSeconds: 60

    本示例中Pods值为10,也就是说,每个扩缩周期都按照增加10个Pod的增量进行扩容。例如,若工作负载中Pod数从1开始,那么在上述配置下,每隔60秒的扩容Pod数的变化如下:1 > 11 > 21 > ... 。需要注意的是,扩缩后的Pod数量不能超过FedratedHPA策略配置的最大Pod数。

  • 场景二:逐步缩容

    如果您希望在渡过业务高峰期后,对工作负载的缩容速率能更加缓慢,以提高应用的可靠性,可以配置较小的Pod值与较大的periodSeconds值。

    behavior: 
      scaleDown: 
        policies: 
        - type: Pods 
          value: 1 
          periodSeconds: 600

    本示例中Pods值为1,periodSeconds值为600,也就是说:缩容的周期为600秒,每次缩容减少1个Pod。假如 pod 最开始数量为 100,每隔600秒的缩容Pod数的变化如下:100 > 99 > 98 > … 。极端情况下,若希望工作负载不进行自动缩容,可以将Percent值或Pods值配置为0。

  • 场景三:默认速率

    若不对behavior进行配置,则FederatedHPA策略默认的配置为:

    behavior: 
      scaleDown: 
        stabilizationWindowSeconds: 300 
        policies: 
        - type: Percent 
          value: 100 
          periodSeconds: 15 
      scaleUp: 
        stabilizationWindowSeconds: 0 
        policies: 
        - type: Percent 
          value: 100 
          periodSeconds: 15 
        - type: Pods 
          value: 4 
          periodSeconds: 15 

    默认配置中,扩缩容的周期为15秒,每个扩缩周期都按照(1 + 100%)= 2倍的速率进行扩容或缩容,每次缩容的Pod数为4。