
# 创建CronFederatedHPA策略以定时扩缩工作负载
本小节将指导您创建CronFederatedHPA策略，以设置固定时间周期自动扩缩工作负载。
在创建CronFederatedHPA策略前，您可以参考[CronFederatedHPA工作原理](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0386.html)了解相关原理与概念。若您需要了解不同负载伸缩策略的差异，请参考[负载伸缩概述](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0381.html)。
#### 约束与限制
CronFederatedHPA策略仅支持1.19及以上版本的集群创建。
#### 创建CronFederatedHPA策略
**控制台创建**
1. 登录[UCS控制台](https://console.huaweicloud.com/ucs/?#/aether/dashboard)，在左侧导航栏中选择"容器舰队"。
2. 单击已开通集群联邦的容器舰队名称，进入容器舰队详情页面。
3. 在左侧导航栏选择"负载伸缩"，选择"定时伸缩策略"，并单击右上角"创建定时伸缩策略"。
4. 参考[表1]配置CronFederatedHPA策略。
   
    表1基础配置参数说明 
   | 参数   | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   |:---|:---|
   | 策略名称 | CronFederatedHPA策略的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 命名空间 | 需要设置自动扩缩的工作负载所在命名空间的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 作用对象 | 可选择作用于工作负载或指标伸缩策略。 - 工作负载：选择需要应用该策略的工作负载，也可新建工作负载，新建的具体操作请参见[创建工作负载](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0254.html)。  - 指标伸缩策略：选择已创建的指标伸缩策略，也可单击右侧新建，新建的具体操作请参见[创建FederatedHPA策略](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0404.html#ucs_01_0404__section1819514962510)。   |
      
   
   
5. 单击策略配置下的"添加规则"，参考[表2]配置策略规则。
   
    表2CronFederatedHPA策略规则配置 
   | 参数    | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   |:---|:---|
   | 规则名称  | CronFederatedHPA策略的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 目标副本数 | CronFederatedHPA策略的目标Pod数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 触发时间  | 可选择每小时、每天、每周、每月、每年，或选择Cron表达式自行配置触发时间。 - 每小时：在每小时的第几分钟执行一次。例如选择"5"，策略将会在每小时的第5分钟执行一次。  - 每天：在每天具体的某一个时间执行一次，可具体到分钟。设置完成后，策略将会在每天的该时点执行。  - 每周：在每周具体的某一天内的某一时间执行一次，可具体到分钟。设置完成后，策略将会在每周的该天该时点执行。  - 每月：在每月具体的某一天内的某一时间执行一次，可具体到分钟。设置完成后，策略将会在每月的该天该时点执行。  - 每年：在每年具体的某月某天内的某一时间执行一次，可具体到分钟。设置完成后，策略将会在每年的该天该时点执行。  - Cron表达式： Cron表达式遵循以下语法规则：    ``` ┌───────────── 分钟(0-59) │ ┌───────────  小时(0-23) │ │ ┌────────── 月的某天(1-31) │ │ │ ┌────────  月份(1-12) │ │ │ │ ┌─────── 周的某天(0-6) │ │ │ │ │ │ │ │ │ │ *  *  *  *  * ``` 例如：0 0 13 \* 5 表示此任务必须在每个星期五的午夜以及每个月的 13 日的午夜开始。 |
   | 时区    | 选择所在时区。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
      
   
   
6. 设置完成后，单击"确定"，然后单击"创建"，即可跳转定时伸缩策略列表查看策略详情，完成CronFederatedHPA策略创建。
**命令行创建**
1. 使用kubectl连接集群联邦，详细操作请参见[使用kubectl连接集群联邦](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0320.html)。
2. 使用如下命令创建并编辑cfhpa.yaml文件。 
   **vi cfhpa.yaml**
   文件内容定义如下所示，参数定义请参见[表3]。本示例中构建的CronFederatedHPA策略名称为cron-federated-hpa，直接作用于名称为test的工作负载，内含两条定时规则（名称为"Scale-Up"和"Scale-Down"）。其中，Scale-Up规则为每天8:30的目标Pod数为10，Scale-Down规则为每天21:00的目标Pod数为5。
   ```
   apiVersion: autoscaling.karmada.io/v1alpha1 
   kind: CronFederatedHPA 
   metadata: 
     name: cron-federated-hpa           # CronFederatedHPA策略名称  
   spec: 
     scaleTargetRef: 
       apiVersion: apps/v1 
       kind: Deployment                 # 可选择Deployment或FederatedHPA 
       name: test                       # 工作负载或FederatedHPA的名称 
     rules: 
     - name: "Scale-Up"                 # 规则名称 
       schedule: 30 08 * * *            # 触发时间
       targetReplicas: 10               # 目标Pod数，非负整数 
       timeZone: ******                 # 时区
     - name: "Scale-Down"               # 规则名称
       schedule: 0 21 * * *             # 触发时间
       targetReplicas: 5                # 目标Pod数，非负整数 
       timeZone: ******                 # 时区
   ```
    表3关键参数说明 
   | 参数             | 是否必填 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                          |
   |:---|:---|:---|:---|
   | kind           | 是    | String | 可选择Deployment或FederatedHPA。 - 单独使用CronFederatedHPA策略：Deployment  - 同时使用FederatedHPA与CronFederatedHPA策略：FederatedHPA   |
   | name           | 是    | String | CronFederatedHPA策略中定义的规则名称，长度为1\~32字符。                                                                                                                                                                                                                                                                      |
   | schedule       | 是    | String | 策略触发时间，以Cron表达式呈现，具体遵循以下语法规则： ``` ┌───────────── 分钟(0-59) │ ┌───────────  小时(0-23) │ │ ┌────────── 月的某天(1-31) │ │ │ ┌────────  月份(1-12) │ │ │ │ ┌─────── 周的某天(0-6) │ │ │ │ │ │ │ │ │ │ *  *  *  *  * ``` 例如：0 0 13 \* 5 表示此任务必须在每个星期五的午夜以及每个月的 13 日的午夜开始。                       |
   | targetReplicas | 是    | String | CronFederatedHPA策略的目标Pod数。                                                                                                                                                                                                                                                                                  |
   | timeZone       | 是    | String | 时区，选择所在时区。                                                                                                                                                                                                                                                                                                  |
      
   
   
3. 执行如下命令创建CronFederatedHPA策略。 
   **kubectl apply -f cfhpa.yaml**
   回显如下表明创建成功。
   ```
   CronFederatedHPA.autoscaling.karmada.io/cron-federated-hpa created
   ```
   创建完成后，可以执行如下命令观察负载伸缩的运行效果。
   - 检查工作负载的当前Pod数：kubectl get deployments
   
   - 查看CronFederatedHPA策略事件（仅保留最近三条）：kubectl describe cronfederatedhpa cron-federated-hpa
   
   
   可以执行如下命令管理CronFederatedHPA策略。其中cron-federated-hpa为CronFederatedHPA策略的名称，实际情况中需修改为自己所创建的策略名称。
   - 获取CronFederatedHPA策略：kubectl get cronfederatedhpa cron-federated-hpa
   
   - 更新CronFederatedHPA策略：kubectl edit cronfederatedhpa cron-federated-hpa
   
   - 删除CronFederatedHPA策略：kubectl delete cronfederatedhpa cron-federated-hpa
   
   
   
   
 
