Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Tornar o CronHPA compatível com o HPA

Última atualização: Jun 27, 2026

Configure o CronHPA para ajustar os valores de minReplicas e maxReplicas do HPA em vez de dimensionar o Deployment diretamente.

Se você implantar o HPA e o CronHPA pelo ACK console , o ACK os configurará automaticamente. Nesse caso, ignore este tópico.

Como funciona

Por padrão, tanto o CronHPA quanto o HPA definem o scaleTargetRef como o mesmo Deployment. O componente que agir por último sobrescreverá o resultado do outro.

Para corrigir isso, defina o scaleTargetRef do CronHPA como o recurso do HPA, e não como o Deployment. Com essa configuração:

  • O CronHPA lê os valores de minReplicas, maxReplicas e desiredReplicas do HPA antes de executar qualquer ação.

  • O CronHPA ajusta o minReplicas ou o maxReplicas do HPA com base no targetSize agendado.

  • O HPA dimensiona os pods por meio do Deployment e de seu ReplicaSet.

Como o CronHPA nunca altera a contagem de pods diretamente, os conflitos são eliminados.

Diagram showing CronHPA targeting HPA, which in turn targets the Deployment

Configurar o CronHPA para ter o HPA como alvo

Em uma configuração típica, o CronHPA e o HPA apontam para o mesmo Deployment:

Modelo de exemplo do CronHPA (antes da modificação)

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-sample
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deployment-basic
  jobs:
  - name: "scale-down"
    schedule: "30 */1 * * * *"
    targetSize: 1
  - name: "scale-up"
    schedule: "0 */1 * * * *"
    targetSize: 11

Modelo de exemplo do HPA

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-sample
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deployment-basic
  minReplicas: 4
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

Para resolver o conflito, altere o campo scaleTargetRef no manifesto do CronHPA para apontar para o recurso do HPA:

Campo

Antes

Depois

apiVersion

apps/v1

autoscaling/v2

kind

Deployment

HorizontalPodAutoscaler

name

nginx-deployment-basic

hpa-sample

Exemplo: CronHPA configurado para dimensionar o tráfego em horário comercial

Suponha que o hpa-sample gerencie o tráfego das 09:00 às 17:00 (UTC+8). Configure o CronHPA para escalar horizontalmente para fora (scale out) às 09:00 e para dentro (scale in) às 17:00:

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-sample
spec:
  scaleTargetRef:
    apiVersion: autoscaling/v2
    # Set the resource type to HPA.
    kind: HorizontalPodAutoscaler
    # Specify the name of the HPA resource.
    name: hpa-sample
  jobs:
  - name: "scale-up-9am"
    schedule: "0 0 9 * * * "
    targetSize: 20
    runOnce: false
  - name: "scale-down-5pm"
    schedule: "0 0 17 * * *"
    targetSize: 3
    runOnce: false

Regras de compatibilidade

Quando o CronHPA tem o HPA como alvo, ele atua como um limite mínimo dinâmico para réplicas: aumenta o minReplicas para escalar para fora e reduz o minReplicas para escalar para dentro, sem definir a contagem de pods diretamente. O HPA dimensiona dentro desses limites com base nas métricas.

A tabela a seguir mostra como o CronHPA e o HPA interagem em cada condição de dimensionamento.

Cabeçalhos da tabela:

  • HPA (min/max): minReplicas/maxReplicas do HPA.

  • Desejado pelo CronHPA: targetSize do job do CronHPA.

  • Réplicas atuais: Contagem de pods em execução.

  • Réplicas finais: Contagem de pods após o dimensionamento.

HPA (min/max)

Desejado pelo CronHPA

Réplicas atuais

Réplicas finais

Comportamento

1/10

5

5

5

O valor desejado é igual ao atual. Os campos minReplicas e maxReplicas permanecem inalterados. Nenhum dimensionamento ocorre.

1/10

4

5

5

O valor desejado é menor que o atual. Nenhum dimensionamento ocorre.

1/10

6

5

6

O valor desejado excede o atual. O CronHPA define o minReplicas como 6. O HPA dimensiona para 6. Novo HPA (min/max): 6/10.

5/10

4

5

5

O valor desejado é menor que o atual. Não há dimensionamento imediato. O CronHPA define o minReplicas como 4. Novo HPA (min/max): 4/10.

5/10

11

5

11

O valor desejado excede o maxReplicas. O CronHPA define tanto o minReplicas quanto o maxReplicas como 11. O HPA dimensiona para 11. Novo HPA (min/max): 11/11.

Próximas etapas