Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Use CronHPA for scheduled Pod scaling

Dernière mise à jour :Aug 11, 2026

Cron Horizontal Pod Autoscaler (CronHPA) met à l'échelle les pods selon une planification de type crontab. Utilisez CronHPA lorsque le trafic de votre application suit un schéma prévisible, par exemple pour augmenter la capacité avant les heures de pointe et la réduire pendant la nuit.

ACK propose plusieurs solutions de mise à l'échelle automatique, tant au niveau de la couche de planification (mise à l'échelle des charges de travail) qu'au niveau de la couche de ressources (mise à l'échelle des nœuds). Avant de poursuivre, consultez la rubrique Mise à l'échelle automatique afin de déterminer la solution adaptée à votre cas d'utilisation.

Fonctionnement

CronHPA s'appuie sur le contrôleur kubernetes-cronhpa-controller, un contrôleur de mise à l'échelle horizontale basé sur le temps. À chaque déclenchement planifié, CronHPA définit le nombre de réplicas de la charge de travail cible sur la valeur targetSize. Ensuite, CronHPA reste inactif jusqu'au prochain déclenchement programmé.

CronHPA fonctionne selon un modèle de point de déclenchement et non selon un modèle de fenêtre temporelle. Il définit le nombre de réplicas une seule fois au moment du déclenchement et ne maintient pas ce nombre. Si un autre contrôleur (tel que HPA) ajuste les réplicas entre deux déclenchements, CronHPA n'intervient pas avant son prochain déclenchement.

CronHPA est compatible avec tout objet Kubernetes prenant en charge les sous-ressources de mise à l'échelle, telles que Deployment et StatefulSet.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Étape 1 : Installer le composant CronHPA

Installez le module complémentaire ack-kubernetes-cronhpa-controller pour activer CronHPA dans votre cluster.

  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 du cluster cible. Dans le volet de navigation de gauche, choisissez Operations > Add-ons.

  3. Sous l'onglet Manage Applications, recherchez ack-kubernetes-cronhpa-controller, cliquez sur Install et suivez les instructions pour terminer l'installation.

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

Avant de créer une tâche CronHPA, vérifiez les points suivants :

  • Le composant ack-kubernetes-cronhpa-controller fonctionne correctement dans le cluster.

  • La charge de travail cible comporte au maximum un Horizontal Pod Autoscaler (HPA) configuré.

Les sections suivantes utilisent un Deployment comme exemple. Les étapes sont similaires pour les autres types de charges de travail.

Option 1 : Créer une tâche CronHPA lors de la création d'une nouvelle 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 du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.

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

  4. Renseignez les sections Basic Information, Container et les autres paramètres de configuration. Lorsque vous atteignez la section Advanced, développez la section Scaling, activez l'option CronHPA et configurez les paramètres suivants. Pour toutes les autres étapes de configuration et paramètres, consultez la rubrique Créer une application sans état à l'aide d'un Deployment.

    Paramètre Description
    Job Name Nom de la tâche CronHPA.
    Desired Number of Replicas Nombre cible de réplicas lorsque l'heure planifiée est atteinte.
    Scaling Schedule Expression cron définissant la planification du déclenchement. Consultez la section Format des expressions cron.

Option 2 : Créer une tâche CronHPA pour une application existante

Page Workloads

Depuis la page Deployments :

  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 du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.

  3. Sur la page Deployments, cliquez sur Details dans la colonne Actions du Deployment cible, puis cliquez sur l'onglet Pod Scaling.

  4. Dans la section CronHPA, cliquez sur Create et configurez les paramètres suivants :

    Paramètre Description
    Job Name Nom de la tâche CronHPA.
    Desired Number of Replicas Nombre cible de réplicas lorsque l'heure planifiée est atteinte.
    Scaling Schedule Expression cron définissant la planification du déclenchement. Consultez la section Format des expressions cron.

    create

Page Workload scaling

Depuis la page Workload Scaling (liste d'autorisation requise) :

La page Workload Scaling est disponible uniquement pour les comptes figurant sur la liste d'autorisation. Pour demander l'accès, soumettez un 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 du cluster cible. Dans le volet de navigation de gauche, choisissez Auto Scaling > Workload Scaling.

  3. Dans le coin supérieur droit, cliquez sur Create Auto Scaling, sélectionnez la charge de travail cible et cliquez sur l'onglet Horizontal Scaling.

  4. Sélectionnez l'option CronHPA et configurez les paramètres suivants :

    Paramètre Description
    CronHPA Name Nom de la ressource CronHPA.
    Job Name Nom de la tâche CronHPA.
    Desired Number of Replicas Nombre cible de réplicas lorsque l'heure planifiée est atteinte.
    Scaling Schedule Expression cron définissant la planification du déclenchement. Consultez la section Format des expressions cron.

Référence YAML de CronHPA

CronHPA est configuré en tant que ressource personnalisée CronHorizontalPodAutoscaler. L'exemple suivant réduit un Deployment à 1 réplica à 30 secondes après chaque heure, et l'augmente à 3 réplicas au début de chaque heure, en excluant le 15 novembre et tous les vendredis.

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
  excludeDates:
    # Skip November 15th
    - "* * * 15 11 *"
    # Skip every Friday
    - "* * * * * 5"
  jobs:
    - name: "scale-down"
      schedule: "30 */1 * * * *"
      targetSize: 1
    - name: "scale-up"
      schedule: "0 */1 * * * *"
      targetSize: 3
      runOnce: false

Paramètres

Paramètre Description
scaleTargetRef Charge de travail à mettre à l'échelle. L'objet cible doit prendre en charge les sous-ressources de mise à l'échelle.
excludeDates Liste des dates pour lesquelles toutes les tâches sont ignorées. La granularité est d'un jour. Utilisez le format cron à 6 champs : "<Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>".
jobs[].name Nom de la tâche. Doit être unique au sein de la ressource CronHPA.
jobs[].schedule Expression cron définissant le moment du déclenchement de la tâche. Utilise la bibliothèque Go go-cron. Consultez la section Format des expressions cron.
jobs[].targetSize Nombre de réplicas cible lors du déclenchement de la tâche.
jobs[].runOnce Lorsqu'elle est définie sur true, la tâche s'exécute une seule fois et se termine après la première exécution. Valeur par défaut : false.

Format des expressions cron

CronHPA utilise une expression cron à 6 champs (commençant par les secondes), contrairement à la syntaxe crontab standard à 5 champs.

<Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>
Champ Obligatoire Valeurs autorisées Caractères spéciaux
Seconds Oui 0–59 * / , -
Minutes Oui 0–59 * / , -
Hours Oui 0–23 * / , -
Day of month Oui 1–31 * / , - ?
Month Oui 1–12 ou JAN–DEC * / , -
Day of week Oui 0–6 ou SUN–SAT * / , - ?

Exemples de planifications courantes :

Planification Signification
0 0 8 * * * Tous les jours à 08:00
0 0 18 * * 1-5 En semaine (du lundi au vendredi) à 18:00
0 0 */1 * * * Toutes les heures, à l'heure pile
0 30 */1 * * * Toutes les heures, à 30 minutes passées
0 0 8 * * 1-5 En semaine à 08:00 (augmentation de la capacité pour les heures de travail)
0 0 20 * * 1-5 En semaine à 20:00 (réduction de la capacité après les heures de travail)

Pour la référence complète des expressions, consultez la documentation kubernetes-cronhpa-controller.

Opérations supplémentaires

Consulter, ajouter ou modifier des tâches CronHPA

Après avoir créé des tâches CronHPA, vous pouvez consulter leur statut et modifier la configuration à partir des points d'entrée suivants :

  • Page Workload Scaling : Dans le volet de navigation de gauche, choisissez Auto Scaling > Workload Scaling. Sous l'onglet Horizontal Scaling, recherchez la tâche CronHPA cible dans la section CronHPA et cliquez sur Edit dans la colonne Actions.

  • Page Deployments : Dans le volet de navigation de gauche, choisissez Workloads > Deployments. Cliquez sur Details pour le Deployment cible, puis cliquez sur l'onglet Pod Scaling. Dans la section CronHPA, cliquez sur Add or Edit Job dans la colonne Actions.

Coordonner CronHPA avec HPA

CronHPA et HPA fonctionnent indépendamment et ne sont pas conscients l'un de l'autre. Si les deux sont configurés pour la même charge de travail, leurs actions de mise à l'échelle peuvent entrer en conflit : l'action la plus récente écrase la précédente.

Pour résoudre ce conflit, si ACK détecte que CronHPA et HPA sont tous deux déployés, il définit la cible de mise à l'échelle de CronHPA sur HPA, permettant ainsi une mise à l'échelle planifiée pour l'objet de mise à l'échelle HPA, tel qu'un Deployment.

Pour obtenir des instructions de configuration, consultez la rubrique Mettre en œuvre la coordination entre CronHPA et HPA.

FAQ

Comment désinstaller ack-kubernetes-cronhpa-controller ?

  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 du cluster cible. Dans le volet de navigation de gauche, choisissez Applications > Helm.

  3. Sur la page Helm, vérifiez si le composant ack-kubernetes-cronhpa-controller existe.

    • S'il existe, cliquez sur Delete dans la colonne Actions. > Important: La suppression du composant via Helm ne supprime pas la définition de ressource personnalisée (CRD) ni les ressources de tâche CronHPA. Supprimez-les manuellement après la désinstallation du composant.

    • S'il n'existe pas, passez à l'étape suivante.

  4. Dans le volet de navigation de gauche, choisissez Operations > Add-ons.

  5. Sur la page Add-ons, recherchez ack-kubernetes-cronhpa-controller et cliquez sur Uninstall.

Étapes suivantes

Références