Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use CronHPA for scheduled scaling

Última atualização: Jun 27, 2026

Se o uso de recursos da sua aplicação seguir um padrão periódico previsível, use o Cron Horizontal Pod Autoscaler (CronHPA) para dimensionar pods em horários específicos. Esse agendamento é ideal para cenários com picos de tráfego recorrentes ou jobs em segundo plano programados.

Antes de começar

O ACK oferece diversas soluções de dimensionamento nas camadas de agendamento (workload) e de recursos (nó). Antes de prosseguir, leia Auto scaling para determinar a melhor estratégia para o seu caso de uso específico.

Como o CronHPA funciona

O CronHPA usa o kubernetes-cronhpa-controller, um controlador de dimensionamento de pods baseado em tempo. Ele utiliza uma sintaxe semelhante à do crontab para ajustar recursos dinamicamente, sendo ideal para workloads com flutuações periódicas de tráfego. O CronHPA funciona com qualquer objeto do Kubernetes compatível com o Scale subresource, como Deployments e StatefulSets.

Exemplo de configuração YAML

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-sample
  namespace: default 
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deployment-basic  # The target workload to scale
  excludeDates:                 # Dates to skip scaling (cron format)
  - "* * * 15 11 *"             # Skip November 15th
  - "* * * * * 5"               # Skip every Friday
  jobs:
  - name: "scale-down"
    schedule: "30 */1 * * * *"  # Trigger at the 30th second of every minute (e.g. 08:00:30, 08:01:30)
    targetSize: 1               # Target replica count
    runOnce: false              # Whether to run the job only once (default: false)
  - name: "scale-up"
    schedule: "0 */1 * * * *"   # Trigger at the 0th second of every minute (e.g. 08:00:00, 08:01:00)
    targetSize: 3               # Target replica count
    runOnce: false             

A tabela a seguir descreve cada parâmetro.

Parâmetro

Descrição

scaleTargetRef

Objeto alvo do dimensionamento. O CronHPA aceita qualquer recurso do Kubernetes que implemente o Scale subresource.

excludeDates

Array de datas em que os jobs de dimensionamento devem ser ignorados. A unidade mínima é um dia.

Formato: " " = <Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>.

Por exemplo, para ignorar todos os jobs no dia 15 de novembro:

excludeDates:
      - "* * * 15 11 *"

jobs

Lista de jobs de dimensionamento. Você pode definir vários jobs em uma única especificação do CronHPA. Cada job aceita os seguintes campos:

  • name: nome exclusivo do job.

  • schedule: expressão cron que define quando o job é executado. Baseada na biblioteca go-cron, esta expressão usa um formato de 6 campos:

    Field name   | Mandatory? | Allowed values  | Allowed special characters
          ----------   | ---------- | --------------  | --------------------------
          Seconds      | Yes        | 0-59            | * / , -
          Minutes      | Yes        | 0-59            | * / , -
          Hours        | Yes        | 0-23            | * / , -
          Day of month | Yes        | 1-31            | * / , - ?
          Month        | Yes        | 1-12 or JAN-DEC | * / , -
          Day of week  | Yes        | 0-6 or SUN-SAT  | * / , - ?
  • targetSize: número desejado de réplicas de pods quando o agendamento for acionado.

  • runOnce: defina como true para executar o job apenas uma vez. Após a primeira execução, o job é encerrado. Padrão: false.

Etapa 1: Instale o add-on CronHPA

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Components and Add-ons.

  3. Clique na aba Manage Applications, localize o ack-kubernetes-cronhpa-controller e instale o add-on conforme solicitado.

Etapa 2: Crie jobs do CronHPA

Antes de criar jobs do CronHPA, verifique se o CronHPA está em execução e se a workload alvo tem apenas um objeto HPA associado. O exemplo a seguir usa um Deployment. Os procedimentos são semelhantes para outros tipos de workload.

Opção 1: Crie jobs do CronHPA durante a criação da workload

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Na página Deployments, clique em Create from Image.

  4. Na página Create, configure as definições para criar um Deployment habilitado para CronHPA.

    Para instruções detalhadas de configuração, consulte Create a stateless workload (Deployment).

    • Basic Information: defina o nome da aplicação e a contagem de réplicas.

    • Container: especifique a imagem do container e as solicitações de recursos para CPU e memória.

    • Advanced:

      • Na seção Scaling, ative o CronHPA. Instale o add-on se solicitado e configure os parâmetros de dimensionamento:

        • Job Name: nome exclusivo do job do CronHPA.

        • Desired Number of Replicas: número de réplicas de pods para dimensionar no horário agendado.

        • Scaling Schedule: expressão cron que define o agendamento de dimensionamento. Para mais informações, consulte kubernetes-cronhpa-controller.

Opção 2: Crie jobs do CronHPA para uma workload existente

Página da Workload

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Clique na workload alvo e, em seguida, na aba Pod Scaling. Na seção CronHPA, clique em Create.

    create

    Parâmetro

    Descrição

    Job Name

    Nome exclusivo do job do CronHPA.

    Desired Number of Replicas

    Número de réplicas de pods para dimensionar no horário agendado.

    Scaling Schedule

    Expressão cron que define o agendamento de dimensionamento. Para mais informações, consulte kubernetes-cronhpa-controller.

Página de dimensionamento de workload

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workload Scaling.

  3. No canto superior direito, clique em Create Auto Scaling.

  4. Clique na aba HPA and CronHPA, selecione a workload alvo e escolha CronHPA na seção Configure Auto Scaling Policy.

    Você pode adicionar vários jobs do CronHPA. Configure os parâmetros a seguir e clique em OK.

    • CronHPA Task Name: nome do objeto CronHPA.

    • Job Name: nome do job individual do CronHPA.

    • Desired Number of Replicas: número desejado de réplicas de pods no horário agendado.

    • Scaling Schedule: expressão cron que define o agendamento de dimensionamento. Para mais informações, consulte kubernetes-cronhpa-controller.

kubectl

  1. Salve o manifesto a seguir em um arquivo chamado cronhpa.yaml:

    apiVersion: autoscaling.alibabacloud.com/v1beta1
    kind: CronHorizontalPodAutoscaler
    metadata:
      name: cronhpa-sample
      namespace: default 
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx-deployment-basic  
      excludeDates:                 
      - "* * * 15 11 *"
      - "* * * * * 5"
      jobs:
      - name: "scale-down"
        schedule: "30 */1 * * * *"  
        targetSize: 1  
        runOnce: false              
      - name: "scale-up"
        schedule: "0 */1 * * * *"  
        targetSize: 3              
        runOnce: true         
  2. Execute o comando a seguir para criar o CronHPA:

    kubectl apply -f cronhpa.yaml

    Saída esperada:

    cronhorizontalpodautoscaler.autoscaling.alibabacloud.com/cronhpa-sample created

Próximos passos

Visualize, adicione ou modifique jobs do CronHPA

Após criar um CronHPA, visualize o status dos jobs, adicione novos jobs ou modifique configurações existentes usando um dos métodos a seguir:

  • Pela página Workload Scaling:

    1. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workload Scaling.

    2. Clique na aba CronHPA. Na coluna Actions, clique em Edit no CronHPA alvo.

  • Pela página Workloads (usando Deployments como exemplo):

    1. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

    2. Clique no Deployment alvo e, em seguida, na aba Pod Scaling. Na seção CronHPA, clique em Add or Modify Job na coluna Actions.

Usar o CronHPA com o HPA

Para mais informações, consulte Make CronHPA compatible with HPA.