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 :
Un cluster ACK managé ou un cluster ACK Serverless. Pour plus d'informations, consultez les rubriques Créer un cluster ACK managé et Créer un cluster ACK Serverless.
Un client
kubectlconnecté au cluster. Pour plus d'informations, consultez la rubrique Se connecter à un cluster Kubernetes à l'aide de kubectl.
Étape 1 : Installer le composant CronHPA
Installez le module complémentaire ack-kubernetes-cronhpa-controller pour activer CronHPA dans votre cluster.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Operations > Add-ons.
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-controllerfonctionne 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
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
Sur la page Deployments, cliquez sur Create from Image.
-
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 :
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
Sur la page Deployments, cliquez sur Details dans la colonne Actions du Deployment cible, puis cliquez sur l'onglet Pod Scaling.
-
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. 
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 .
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Auto Scaling > Workload Scaling.
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.
-
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
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 ?
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Applications > Helm.
-
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.
Dans le volet de navigation de gauche, choisissez Operations > Add-ons.
Sur la page Add-ons, recherchez ack-kubernetes-cronhpa-controller et cliquez sur Uninstall.
Étapes suivantes
Mettre à l'échelle les pods en fonction de l'utilisation du CPU, de la mémoire ou de métriques personnalisées : Mettre en œuvre Horizontal Pod Autoscaler (HPA)
Identifier automatiquement les cycles d'utilisation des ressources et effectuer la mise à l'échelle en fonction des métriques historiques : Mise à l'échelle prédictive basée sur Advanced Horizontal Pod Autoscaling (AHPA)
Ajuster automatiquement les limites de ressources des pods en fonction de l'utilisation réelle : Vertical Pod Autoscaler (VPA)
Mettre à l'échelle les pods en fonction des files d'attente de messages, des stratégies de temporisation, des métriques personnalisées et d'autres événements Kubernetes : ACK KEDA (Kubernetes Event-driven Autoscaling)