文档首页/ 华为云UCS/ 用户指南/ 集群联邦/ 多集群负载伸缩/ FederatedHPA策略/ 创建FederatedHPA策略以按指标扩缩工作负载
更新时间:2024-10-25 GMT+08:00

创建FederatedHPA策略以按指标扩缩工作负载

本小节将指导您创建FederatedHPA策略,以基于不同指标自动扩缩工作负载。

在创建FederatedHPA策略前,您可以参考FederatedHPA工作原理了解相关原理与概念。若您需要了解不同负载伸缩策略的差异,请参考负载伸缩概述

约束与限制

FederatedHPA策略仅支持1.19及更高版本的集群创建。若您需要查询集群版本,请登录UCS控制台,单击需查询集群所在舰队名称,再单击“容器集群”即可。

创建FederatedHPA策略

控制台创建

  1. 登录UCS控制台,在左侧导航栏中选择“容器舰队”
  2. 单击已开通集群联邦的容器舰队名称,进入容器舰队详情页面。
  3. 在左侧导航栏选择“负载伸缩”,在“指标伸缩策略”页签下,单击右上角的“创建指标伸缩策略”
  4. 配置FederatedHPA策略参数。

    表1 FederatedHPA策略参数配置

    参数

    参数说明

    策略名称

    FederatedHPA策略的名称。输入长度范围为4-63个字符。

    命名空间

    请选择需要自动扩缩的工作负载所在命名空间的名称。也可新建命名空间,具体操作请参见命名空间

    生效工作负载

    请选择需要设置自动扩缩的工作负载的名称。也可新建工作负载,具体操作请参见工作负载

    实例范围

    触发策略时,工作负载内Pod数量所能达到的最大值与最小值。

    • 最小值:请输入1-299之间的正整数。
    • 最大值:请输入1-1500之间的正整数,且填写值需大于实例范围最小值。

    稳定窗口时长

    稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。默认扩容稳定窗口时长为0秒,缩容稳定窗口时长为300秒。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?

    • 扩容:请输入0-3600之间的正整数,单位为秒。
    • 缩容:请输入0-3600之间的正整数,单位为秒。

    系统规则

    若您需要基于系统指标对工作负载进行扩缩,则需配置该规则。

    • 指标:可选择“CPU利用率”或“内存利用率”。
    • 期待值:指标数据达到期待值时,触发扩缩。

    自定义规则

    若您需要基于自定义指标对工作负载进行扩缩,则需配置该规则。

    • 自定义指标名称:在下拉框中选择自定义指标的名称。
    • 指标来源:在下拉框中选择自定义指标所描述的对象类型,目前仅支持“Pod”。
    • 期待值:指标数据达到期待值时,触发扩缩。
    注意:
    • 自定义规则仅支持1.19及更高版本的集群创建。
    • 使用自定义规则时,集群中需要安装支持采集自定义指标的插件,且工作负载需正常上报并采集自定义指标,详情请参见安装指标采集插件

  5. 参数配置完成后,单击右下角“创建”,即可跳转指标伸缩策略列表查看策略详情,完成FederatedHPA策略创建。

命令行创建

  1. 使用kubectl连接集群联邦,具体操作请参见使用kubectl连接集群联邦
  2. 创建并编辑fhpa.yaml文件,文件内容定义如下所示,关键参数定义请参见表2

    vi fhpa.yaml

    本示例创建的FederatedHPA策略名称为hpa-example-hpa,作用于名称为hpa-example的工作负载,稳定窗口时长为扩容0秒、缩容300秒,最大Pod数为100、最小Pod数为2,包含两条系统指标规则(名称为“memory”和“cpu”)。其中,memory规则中内存利用率的期望值为50%,cpu规则中CPU利用率的期望值为60%。

    apiVersion: autoscaling.karmada.io/v1alpha1     
    kind: FederatedHPA
    metadata:
      name: hpa-example-hpa                               # FederatedHPA策略名称
      namespace: default                                  # 工作负载所在命名空间名称 
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: hpa-example                                 # 工作负载名称
      behavior:
        scaleDown:
          stabilizationWindowSeconds: 300                 # 缩容的稳定窗口时长为300秒
        scaleUp:
          stabilizationWindowSeconds: 0                   # 扩容的稳定窗口时长为0秒
      minReplicas: 2                                      # 最小Pod数为2
      maxReplicas: 100                                    # 最大Pod数为100
      metrics:
        - type: Resource
           resource:
            name: memory                                  # 第一条规则名称
            target:
               type: Utilization                          # 指标类型为利用率
               averageUtilization: 50                     # 期望的平均利用率
        - type: Resource
           resource:
            name: cpu                                     # 第二条规则名称
            target:
               type: Utilization                          # 指标类型为利用率
               averageUtilization: 60                     # 期望的平均利用率
    表2 关键参数说明

    参数

    是否必填

    参数类型

    描述

    stabilizationWindowSeconds

    String

    缩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为300秒。

    说明:

    稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?

    stabilizationWindowSeconds

    String

    扩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为0秒。

    minReplicas

    String

    触发策略时,工作负载内Pod数量所能缩容到的最小值,请输入1-299之间的正整数。

    maxReplicas

    String

    触发策略时,工作负载内Pod数量所能扩容到的最大值,请输入1-1500之间的正整数,且输入值需大于实例范围最小值。

    name

    String

    规则名称。基于系统指标进行弹性伸缩时,基于内存利用率的规则名称为memory,基于CPU利用率的规则名称为cpu。

    type

    String

    指标类型。

    • Value:总量
    • AverageValue:平均量 = 总量 / 当前Pod数
    • Utilization:利用率 = 平均量 / 申请量

    averageUtilization

    String

    指标数据达到期待值时,触发扩缩。

  3. 执行如下命令创建FederatedHPA策略。

    kubectl apply -f fhpa.yaml

    回显如下表明创建成功。

    FederatedHPA.autoscaling.karmada.io/hpa-example-hpa created

    创建完成后,可以执行如下命令观察负载伸缩的运行效果。

    • 检查工作负载的当前Pod数:kubectl get deployments
    • 查看FederatedHPA策略事件(仅保留最近三条):kubectl describe federatedhpa hpa-example-hpa

    可以执行如下命令管理FederatedHPA策略。其中hpa-example-hpa为FederatedHPA策略的名称,实际情况中需修改为自己所创建的策略名称。

    • 获取FederatedHPA策略:kubectl get federatedhpa hpa-example-hpa
    • 更新FederatedHPA策略:kubectl edit federatedhpa hpa-example-hpa
    • 删除FederatedHPA策略:kubectl delete federatedhpa hpa-example-hpa