Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Make CronHPA compatible with HPA

Última actualización: Sep 04, 2026

Configure CronHPA para ajustar los valores de minReplicas y maxReplicas de HPA en lugar de escalar el Deployment directamente.

Si despliega HPA y CronHPA mediante la consola de ACK , ACK los configura automáticamente. Puede omitir este tema.

Funcionamiento

De forma predeterminada, tanto CronHPA como HPA establecen su scaleTargetRef en el mismo Deployment. El componente que actúa en último lugar sobrescribe el resultado del otro.

La solución consiste en establecer el scaleTargetRef de CronHPA en el recurso HPA en lugar del Deployment. Con esta configuración:

  • CronHPA lee los valores de minReplicas, maxReplicas y desiredReplicas de HPA antes de actuar.

  • CronHPA ajusta minReplicas o maxReplicas de HPA según el targetSize programado.

  • HPA escala los pods a través del Deployment y su ReplicaSet.

CronHPA nunca modifica el recuento de pods directamente, lo que elimina los conflictos.

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

Configuración de CronHPA para usar HPA como objetivo

En una configuración típica, CronHPA y HPA apuntan al mismo Deployment:

Plantilla de ejemplo de CronHPA (antes de la modificación)

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

Plantilla de ejemplo de 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 el conflicto, modifique scaleTargetRef en el manifiesto de CronHPA para que apunte al recurso HPA:

Campo

Antes

Después

apiVersion

apps/v1

autoscaling/v2

kind

Deployment

HorizontalPodAutoscaler

name

nginx-deployment-basic

hpa-sample

Ejemplo: CronHPA configurado para escalar el tráfico en horario laboral

Suponga que hpa-sample gestiona el tráfico de 09:00 a 17:00 (UTC+8). Configure CronHPA para escalar horizontalmente hacia afuera a las 09:00 y hacia adentro a las 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

Reglas de compatibilidad

Cuando CronHPA tiene como objetivo a HPA, actúa como un límite dinámico inferior para las réplicas: aumenta minReplicas para escalar hacia afuera y reduce minReplicas para escalar hacia adentro, sin definir el recuento de pods directamente. HPA realiza el escalado dentro de esos límites según las métricas.

A continuación se muestra cómo interactúan CronHPA y HPA bajo cada condición de escalado.

Encabezados de la tabla:

  • HPA (mín./máx.): Valores de minReplicas y maxReplicas de HPA.

  • Objetivo de CronHPA: Valor de targetSize del job de CronHPA.

  • Réplicas actuales: Recuento de pods en ejecución.

  • Réplicas finales: Recuento de pods después del escalado.

HPA (mín./máx.)

Objetivo de CronHPA

Réplicas actuales

Réplicas finales

Comportamiento

1/10

5

5

5

El objetivo es igual al valor actual. minReplicas y maxReplicas permanecen sin cambios. No se realiza escalado.

1/10

4

5

5

El objetivo es menor que el valor actual. No se realiza escalado.

1/10

6

5

6

El objetivo supera el valor actual. CronHPA establece minReplicas en 6. HPA escala a 6. Nuevo HPA (mín./máx.): 6/10.

5/10

4

5

5

El objetivo es menor que el valor actual. No se realiza escalado. CronHPA establece minReplicas en 4. Nuevo HPA (mín./máx.): 4/10.

5/10

11

5

11

El objetivo supera maxReplicas. CronHPA establece tanto minReplicas como maxReplicas en 11. HPA escala a 11. Nuevo HPA (mín./máx.): 11/11.

Siguientes pasos