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

创建CronFederatedHPA策略以定时扩缩工作负载

本小节将指导您创建CronFederatedHPA策略,以设置固定时间周期自动扩缩工作负载。

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

约束与限制

CronFederatedHPA策略仅支持1.19及以上版本的集群创建。

创建CronFederatedHPA策略

控制台创建

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

    表1 基础配置参数说明

    参数

    参数说明

    策略名称

    CronFederatedHPA策略的名称。

    命名空间

    需要设置自动扩缩的工作负载所在命名空间的名称。

    作用对象

    可选择作用于工作负载或指标伸缩策略。

    • 工作负载:选择需要应用该策略的工作负载,也可新建工作负载,新建的具体操作请参见创建工作负载
    • 指标伸缩策略:选择已创建的指标伸缩策略,也可单击右侧新建,新建的具体操作请参见创建FederatedHPA策略

  5. 单击策略配置下的“添加规则”,参考表2配置策略规则。

    表2 CronFederatedHPA策略规则配置

    参数

    参数说明

    规则名称

    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连接集群联邦
  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: Asia/Shanghai          # 时区
      - name: "Scale-Down"               # 规则名称
        schedule: 0 21 * * *             # 触发时间
        targetReplicas: 5                # 目标Pod数,非负整数 
        timeZone: Asia/Shanghai          # 时区
    表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

    时区,可选择上海时区或新加坡时区。

    • 上海时区:Asia/Shanghai
    • 新加坡时区:Asia/Singapore

  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