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.
Etapa 1: Instale o add-on CronHPA
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Components and Add-ons.
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
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
Na página Deployments, clique em Create from Image.
-
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
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
-
Clique na workload alvo e, em seguida, na aba Pod Scaling. Na seção CronHPA, clique em 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
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workload Scaling.
No canto superior direito, clique em Create Auto Scaling.
-
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
-
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 -
Execute o comando a seguir para criar o CronHPA:
kubectl apply -f cronhpa.yamlSaí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:
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workload Scaling.
Clique na aba CronHPA. Na coluna Actions, clique em Edit no CronHPA alvo.
-
Pela página Workloads (usando Deployments como exemplo):
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
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.