定时伸缩cronhpa

定时伸缩CronHPA

1. 操作场景

容器云CSK支持CronHPA,实现资源定时扩缩容,并且可以和HPA策略共同作用,定时调整HPA伸缩范围,实现复杂场景下的扩缩容。

2. 注意事项

为了使用CronHPA,集群需要安装相应的组件,操作详情请参见 CronHPA说明
云硬盘类型的数据卷不建议同时挂载给多个Pod使用,当多个Pod同时进行数据写入时,会存在数据丢失的风险。所以,建议使用云硬盘类型数据卷的工作负载将Pod数量设置为1,且不绑定自动/定时伸缩策略。

3. 创建CronHPA

3.1. 通过容器云控制台创建CronHPA

在创建工作负载过程中,开启CronHPA

  • 登录容器云控制台;
  • 若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
  • 在容器云控制台左侧导航栏中,选择 【工作负载】并选择工作负载类型;

  • 单击【创建】,进入【创建工作负载】页面;

  • 在扩展配置部分选择开启CronHPA,根据实际需求完成参数配置;

    • 名称:设置CronHPA的名称;
    • 定时任务:根据实际需求配置任务参数(任务名称、调度周期、目标Pod数);

  • 完成工作负载的配置后,单击创建,完成工作负载创建的同时,也会创建相应的CronHPA。

为已有工作负载或HPA创建CronHPA

  • 登录容器云控制台;
  • 若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
  • 在容器云控制台左侧导航栏中,选择 【弹性伸缩】-【定时伸缩】;

  • 单击【创建】,进入【创建定时伸缩】页面。根据实际需求,完成参数设置;

    • 名称:设置CronHPA的名称;
    • 命名空间:根据实际需求选择集群下的命名空间;
    • 关联对象:根据实际需求选择集群下的无状态、有状态、HPA;
    • 定时任务:根据实际需求配置任务参数(任务名称、调度周期、目标Pod数);

  • 单击确定,完成CronHPA创建。

3.2. 通过YAML创建CronHPA

  • 登录容器云控制台;
  • 若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
  • 在容器云控制台左侧导航栏中,选择 【弹性伸缩】-【定时伸缩】;

  • 单击【YAML 创建】,完成参数设置;

    • 模板:支持使用容器云提供的系统模板或自定义模板;
    • 模板内容:选择好模板后,在“模板内容”区域可以对模板进行编辑。完成参数设置后,点击“保存模板”可将改动保存到自定义模板;

  • 单击确定,完成CronHPA创建。

3.3. 通过kubectl创建CronHPA

YAML示例:

apiVersion: "autoscaling.alibabacloud.com/v1beta1"
kind: "CronHorizontalPodAutoscaler"
metadata:
  name: "cronhpa"
  namespace: "default"
spec:  
  scaleTargetRef:
    apiVersion: "apps/v1"
    kind: "Deployment"
    name: "nginx"
  jobs:
  - name: "job"
    schedule: "* * * * * *"
    targetSize: 3

参考YAML示例,准备 CronHPA YAML 文件;
安装 kubectl,并连接集群。操作详情请参见 连接集群
执行以下命令,创建 CronHPA YAML 文件:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f CronHPA YAML 文件名称

例如,创建一个文件名为 my-cronhpa.yaml 的 CronHPA YAML 文件,则执行以下命令:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f my-cronhpa.yaml

执行以下命令,验证创建是否成功:

kubectl  --kubeconfig  KUBECONFIG_NAME get cronhpa

返回类似以下信息,即表示创建成功。

NAMESPACE   NAME            AGE
default     my-cronhpa      16h

4. CronHPA兼容HPA

由于HPA与CronHPA均通过scaleTargetRef字段来获取伸缩对象,如果CronHPA和HPA同时设置Deployment为伸缩对象,两个伸缩策略相互独立,后执行的操作会覆盖先执行的操作,导致伸缩效果不符合预期,因此需避免这种情况发生。
在CronHPA与HPA共同使用时,可以将CronHPA的scaleTargetRef字段设置为HPA对象,这样CronHPA就不会直接调整Deployment的副本数,而是通过调整HPA来操作Deployment,从而避免HPA和CronHPA的冲突问题。
以下表格根据不同的扩缩容场景,说明了CronHPA兼容HPA的规则。
表格中参数说明如下:

  • HPA:表示HPA中定义的最小和最大副本数;
  • CronHPA:表示CronHPA任务设定的目标副本数;
  • Deployment:表示工作负载扩缩前的副本数。
HPA Cronhpa Deployment 扩缩结果 兼容规则说明
1/10 5 5 HPA:1/10
Deployment:5
当CronHPA中的目标副本数和当前副本数一致时,HPA中的最大和最小副本数,还有应用当前的副本数无需变更。
1/10 4 5 HPA:1/10
Deployment:5
当CronHPA中的目标副本数低于当前副本数时,保留当前副本数。
1/10 6 5 HPA:6/10
Deployment:6
当CronHPA中的目标副本数高于当前副本数时,保留CronHPA的目标副本数。
CronHPA目标副本数高于HPA副本数下限(minReplicas)时,修改HPA的副本数下限。
5/10 4 5 HPA:4/10
Deployment:5
当CronHPA中的目标副本数低于当前副本数时,保留当前应用副本数。
CronHPA目标副本数低于HPA副本数下限(minReplicas)时,修改HPA的副本数下限。
5/10 11 5 HPA:11/11
Deployment:11
当CronHPA中的目标副本数高于当前副本数时,保留CronHPA的目标副本数。
CronHPA目标副本数高于HPA副本数上限(maxReplicas)时,修改HPA的副本数上限。

个结果匹配 ""

    无结果匹配 ""