Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Use CronHPA for scheduled pod scaling

Dernière mise à jour :Oct 12, 2026

Si l'utilisation des ressources de votre application suit un schéma prévisible et récurrent, utilisez CronHPA (Cron Horizontal Pod Autoscaler) pour mettre à l'échelle les pods selon un planning défini. CronHPA est idéal pour les scénarios présentant des pics de trafic prévisibles ou pour l'exécution de tâches planifiées.

Avant de commencer

Container Service for Kubernetes (ACK) propose plusieurs solutions pour la mise à l'échelle des charges de travail (au niveau de la couche d'ordonnancement) et la mise à l'échelle des nœuds (au niveau de la couche de ressources). Avant de démarrer, consultez la rubrique sur la mise à l'échelle automatique afin de comprendre les cas d'utilisation et les limites de chaque solution.

Modèle et paramètres CronHPA

CronHPA est implémenté par kubernetes-cronhpa-controller, un outil de mise à l'échelle automatique des pods basé sur le temps. Il utilise une syntaxe de type cron pour configurer des politiques de mise à l'échelle planifiées, ce qui permet d'ajuster dynamiquement les ressources pour les charges de travail soumises à des fluctuations de trafic périodiques. CronHPA s'applique à tout objet Kubernetes prenant en charge la sous-ressource scale, comme les Deployments et les StatefulSets.

Voir l'exemple YAML et les descriptions des paramètres

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  # Name of the target workload.
  excludeDates:                 # Dates to exclude scaling jobs (in Cron format).
  - "* * * 15 11 *"             # Excludes November 15.
  - "* * * * * 5"               # Excludes every Friday.
  jobs:
  - name: "scale-down"
    schedule: "30 */1 * * * *"  # Triggers at 30 seconds past every minute (for example, 08:00:30, 08:01:30).
    targetSize: 1               # The target replica count.
    runOnce: false              # Specifies whether the job runs only once. Default: false.
  - name: "scale-up"
    schedule: "0 */1 * * * *"  # Triggers at 0 seconds past every minute (for example, 08:00:00, 08:01:00).
    targetSize: 3              # The target replica count.
    runOnce: false             

Le tableau suivant décrit les paramètres d'une configuration CronHPA.

Paramètre

Description

scaleTargetRef

Spécifie l'objet cible à mettre à l'échelle. CronHPA peut mettre à l'échelle toute ressource Kubernetes qui prend en charge la sous-ressource scale.

excludeDates

Un tableau de dates. La tâche est ignorée aux dates spécifiées dans excludeDates. L'unité minimale est le jour.

" " représente « <Secondes> <Minutes> <Heures> <Jour du mois> <Mois> <Jour de la semaine> ».

Si vous ne souhaitez pas exécuter une tâche le 15 novembre, spécifiez excludeDates comme indiqué dans l'exemple suivant.

excludeDates:
      - "* * * 15 11 *"

jobs

Une liste de tâches CronHPA que vous pouvez définir dans une seule spécification. Chaque tâche peut être configurée avec les champs suivants :

  • name : le nom de la tâche CronHPA.

  • schedule : une expression cron qui définit le moment d'exécution de la tâche. Basée sur la bibliothèque go-cron, la syntaxe est similaire à celle de crontab standard mais prend en charge des expressions plus flexibles. Lors de la création d'une tâche, respectez strictement le format décrit ci-dessous.

    Le format d'une expression cron est le suivant :

    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 : le nombre cible de réplicas pour la charge de travail lors de l'exécution de la tâche.

  • runOnce : si vous définissez ce paramètre sur true, la tâche n'est exécutée qu'une seule fois puis se termine.

Étape 1 : Installer le module complémentaire CronHPA

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .

  3. Cliquez sur l'onglet Application Management, recherchez ack-kubernetes-cronhpa-controller et suivez les instructions à l'écran pour installer le module complémentaire.

Étape 2 : Créer une tâche CronHPA

Avant de créer une tâche CronHPA, assurez-vous que le module complémentaire CronHPA est en cours d'exécution dans votre cluster et que l'application cible ne possède qu'un seul objet HPA. L'exemple suivant montre comment créer une tâche CronHPA pour une application sans état. La procédure est similaire pour les autres types de charges de travail.

Lors de la création d'une application

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

  3. Sur la page Deployments, cliquez sur Create from Image.

  4. Sur la page Create, configurez les informations de base, le conteneur, le service et les paramètres de mise à l'échelle planifiée pour créer un Deployment compatible avec CronHPA.

    Pour obtenir des instructions détaillées et les descriptions des paramètres, consultez la rubrique Créer une charge de travail sans état (Deployment). Les paramètres clés sont décrits ci-dessous.

    • Basic Information : configurez le nom de l'application et le nombre de réplicas.

    • Container : configurez l'image et spécifiez les ressources CPU et mémoire requises pour le conteneur.

    • Advanced :

      • Dans la section Scaling, cochez la case Enable pour CronHPA. Si le module complémentaire n'est pas installé, suivez les invites pour l'installer. Configurez ensuite les conditions et les paramètres de mise à l'échelle planifiée.

        • Scheduled Task Name : le nom de la tâche CronHPA.

        • Desired Number of Replicas : le nombre cible de réplicas pour l'application à l'heure planifiée.

        • Scaling Schedule : le planning de la tâche de mise à l'échelle. Pour plus d'informations, consultez Kubernetes CronHPA Controller.

Pour les applications existantes

Depuis la page Workloads

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

  3. Cliquez sur le nom de la charge de travail cible, puis cliquez sur l'onglet Pod Scaling. Dans la section CronHPA, cliquez sur Create et configurez la tâche CronHPA.

    Paramètre

    Description

    Job Name

    Le nom de la tâche CronHPA.

    Desired Number of Replicas

    Le nombre de réplicas auquel l'application est mise à l'échelle à l'heure planifiée.

    Scaling Schedule

    Le planning de la tâche de mise à l'échelle. Pour plus d'informations sur la définition d'un planning pour une tâche CronHPA, consultez AliyunContainerService/kubernetes-cronhpa-controller.

Page Workload Scaling

Remarque

Cette page est disponible uniquement pour les utilisateurs figurant sur la liste d'autorisation. Pour demander l'accès, submit a ticket.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workload Scaling.

  3. Dans le coin supérieur droit de la page, cliquez sur Create Auto Scaling.

  4. Cliquez sur l'onglet HPA and CronHPA, Select Workload, puis cochez la case CronHPA dans la section Configure Auto Scaling Policy.

    Vous pouvez ajouter plusieurs tâches CronHPA. Configurez la politique CronHPA selon les instructions et cliquez sur OK.

    • CronHPA Task Name : un nom personnalisé pour l'objet CronHPA.

    • Job Name : un nom personnalisé pour la tâche CronHPA.

    • Desired Number of Replicas : le nombre cible de réplicas pour l'application à l'heure planifiée.

    • Scaling Schedule : le planning de la tâche de mise à l'échelle. Pour plus d'informations, consultez Kubernetes CronHPA Controller.

Utilisation de kubectl

  1. Créez un fichier nommé cronhpa.yaml et copiez-y le contenu suivant.

    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. Exécutez la commande suivante pour créer une tâche CronHPA pour une charge de travail existante :

    kubectl apply -f cronhpa.yaml

    Sortie attendue :

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

Opérations connexes

Gérer les tâches CronHPA

Après avoir créé une tâche CronHPA, vous pouvez consulter son statut dans la liste CronHPA. Pour ajouter une nouvelle tâche ou modifier une tâche existante, utilisez l'une des méthodes suivantes :

  • Depuis la page Workload Scaling

    1. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workload Scaling.

    2. Cliquez sur l'onglet CronHPA. Dans la colonne Actions de la tâche CronHPA cible, cliquez sur Edit.

  • Depuis la page Workloads (en utilisant un Deployment comme exemple)

    1. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

    2. Sur la page Deployments, cliquez sur Details pour le Deployment cible dans la colonne Actions, puis cliquez sur l'onglet Pod Scaling. Dans la colonne Actions de la section CronHPA, cliquez sur Add or Modify Job.

Utiliser CronHPA avec HPA

Pour plus d'informations, consultez la rubrique Rendre CronHPA compatible avec HPA.