Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Make CronHPA compatible with HPA

Dernière mise à jour :Aug 11, 2026

Configurez CronHPA pour ajuster les paramètres minReplicas et maxReplicas de l'HPA, au lieu de mettre à l'échelle directement le Deployment.

Si vous déployez HPA et CronHPA via la console ACK , ACK les configure automatiquement. Ignorez cette rubrique.

Fonctionnement

Par défaut, CronHPA et HPA définissent tous deux leur scaleTargetRef sur le même Deployment. La dernière action écrase le résultat de la précédente.

La solution : définissez le scaleTargetRef de CronHPA sur la ressource HPA plutôt que sur le Deployment. Avec cette configuration :

  • CronHPA lit les valeurs minReplicas, maxReplicas et desiredReplicas de l'HPA avant d'agir.

  • CronHPA ajuste les paramètres minReplicas ou maxReplicas de l'HPA en fonction de la targetSize planifiée.

  • L'HPA met à l'échelle les pods via le Deployment et son ReplicaSet.

CronHPA ne modifie jamais directement le nombre de pods, ce qui élimine les conflits.

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

Configurer CronHPA pour cibler HPA

Dans une configuration classique, CronHPA et HPA pointent tous deux vers le même Deployment :

Exemple de modèle CronHPA (avant modification)

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

Exemple de modèle 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

Pour résoudre le conflit, modifiez le champ scaleTargetRef dans votre manifeste CronHPA afin qu'il pointe vers la ressource HPA :

Champ Avant Après
apiVersion apps/v1 autoscaling/v2
kind Deployment HorizontalPodAutoscaler
name nginx-deployment-basic hpa-sample

Exemple : CronHPA configuré pour adapter la capacité au trafic des heures ouvrables

Supposons que hpa-sample gère le trafic de 09:00 à 17:00 (UTC+8). Configurez CronHPA pour augmenter la capacité à 09:00 et la réduire à 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

Règles de compatibilité

Lorsque CronHPA cible HPA, il agit comme un plancher dynamique pour les réplicas : il augmente minReplicas pour monter en charge et diminue minReplicas pour descendre en charge, sans définir directement le nombre de pods. L'HPA effectue la mise à l'échelle dans ces limites en fonction des métriques.

Le tableau suivant illustre l'interaction entre CronHPA et HPA dans chaque condition de mise à l'échelle.

En-têtes du tableau :

  • HPA (min/max) : minReplicas/maxReplicas de l'HPA.

  • CronHPA souhaité : targetSize de la tâche CronHPA.

  • Réplicas actuels : Nombre de pods en cours d'exécution.

  • Réplicas finaux : Nombre de pods après la mise à l'échelle.

HPA (min/max) CronHPA souhaité Réplicas actuels Réplicas finaux Comportement
1/10 5 5 5 La valeur souhaitée est égale à la valeur actuelle. Les paramètres minReplicas et maxReplicas restent inchangés. Aucune mise à l'échelle.
1/10 4 5 5 La valeur souhaitée est inférieure à la valeur actuelle. Aucune mise à l'échelle.
1/10 6 5 6 La valeur souhaitée dépasse la valeur actuelle. CronHPA définit minReplicas sur 6. L'HPA met à l'échelle sur 6. Nouveau HPA (min/max) : 6/10.
5/10 4 5 5 La valeur souhaitée est inférieure à la valeur actuelle. Aucune mise à l'échelle. CronHPA définit minReplicas sur 4. Nouveau HPA (min/max) : 4/10.
5/10 11 5 11 La valeur souhaitée dépasse maxReplicas. CronHPA définit les paramètres minReplicas et maxReplicas sur 11. L'HPA met à l'échelle sur 11. Nouveau HPA (min/max) : 11/11.

Étapes suivantes