
# 创建FederatedHPA策略以按指标扩缩工作负载
本小节将指导您创建FederatedHPA策略，以基于不同指标自动扩缩工作负载。
在创建FederatedHPA策略前，您可以参考[FederatedHPA工作原理](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0383.html)了解相关原理与概念。若您需要了解不同负载伸缩策略的差异，请参考[负载伸缩概述](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0381.html)。
#### 约束与限制
FederatedHPA策略仅支持1.19及更高版本的集群创建。若您需要查询集群版本，请登录UCS控制台，单击需查询集群所在舰队名称，再单击"容器集群"即可。
 #### 创建FederatedHPA策略
**控制台创建**
1. 登录[UCS控制台](https://console.huaweicloud.com/ucs/?#/aether/dashboard)，在左侧导航栏中选择"容器舰队"。
2. 单击已开通集群联邦的容器舰队名称，进入容器舰队详情页面。
3. 在左侧导航栏选择"负载伸缩"，在"指标伸缩策略"页签下，单击右上角的"创建指标伸缩策略"。
4. 配置FederatedHPA策略参数。 
   表1FederatedHPA策略参数配置 
   | 参数     | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   |:---|:---|
   | 策略名称   | FederatedHPA策略的名称。输入长度范围为4-63个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 命名空间   | 请选择需要自动扩缩的工作负载所在命名空间的名称。也可新建命名空间，具体操作请参见[命名空间](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0281.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 生效工作负载 | 请选择需要设置自动扩缩的工作负载的名称。也可新建工作负载，具体操作请参见[工作负载](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0254.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 实例范围   | 触发策略时，工作负载内Pod数量所能达到的最大值与最小值。 - 最小值：请输入1-299之间的正整数。  - 最大值：请输入1-1500之间的正整数，且填写值需大于实例范围最小值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 稳定窗口时长 | 稳定窗口时长内指标数据持续达到期待值，才会进行扩缩。默认扩容稳定窗口时长为0秒，缩容稳定窗口时长为300秒。稳定窗口时长的详细信息请参见[如何保证负载伸缩的稳定性？](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0383.html#ucs_01_0383__section85588562323)。 - 扩容：请输入0-3600之间的正整数，单位为秒。  - 缩容：请输入0-3600之间的正整数，单位为秒。                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 系统规则   | 若您需要基于系统指标对工作负载进行扩缩，则需配置该规则。 - 指标：可选择"CPU利用率"或"内存利用率"。  - 期待值：指标数据达到期待值时，触发扩缩。                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 自定义规则  | 若您需要基于自定义指标对工作负载进行扩缩，则需配置该规则。 - 自定义指标名称：在下拉框中选择自定义指标的名称。  - 指标来源：在下拉框中选择自定义指标所描述的对象类型，目前仅支持"Pod"。  - 期待值：指标数据达到期待值时，触发扩缩。   注意： - 自定义规则仅支持1.19及更高版本的集群创建。  - 使用自定义规则时，集群中需要安装支持采集自定义指标的插件，且工作负载需正常上报并采集自定义指标，详情请参见[安装指标采集插件](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0384.html)。   |
      
   
   
5. 参数配置完成后，单击右下角"创建"，即可跳转指标伸缩策略列表查看策略详情，完成FederatedHPA策略创建。
**命令行创建**
1. 使用kubectl连接集群联邦，具体操作请参见[使用kubectl连接集群联邦](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0320.html)。
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秒。 说明： 稳定窗口时长内指标数据持续达到期待值，才会进行扩缩。稳定窗口时长的详细信息请参见[如何保证负载伸缩的稳定性？](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0383.html#ucs_01_0383__section85588562323)。                                                                      |
   | 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
   
   
   
   
 
