Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Use Knative and AHPA to implement scheduled auto scaling

Dernière mise à jour :Aug 11, 2026

Les services Knative connaissent souvent des pics de trafic prévisibles, tels que les heures de pointe, les périodes de calme nocturnes ou les fenêtres planifiées pour les traitements par lots. L'Advanced Horizontal Pod Autoscaler (AHPA) gère ces deux schémas : il anticipe la demande à partir de métriques historiques (RPS, concurrence, CPU et mémoire) et met à l'échelle le service de manière proactive. Par ailleurs, instanceBounds permet d'imposer des valeurs plancher et plafond pour le nombre de réplicas durant des plages horaires spécifiques, en utilisant des expressions cron.

Lorsqu'une fenêtre planifiée débute, AHPA augmente le nombre de pods jusqu'au minimum défini. À la fin de la fenêtre, AHPA réduit le nombre de pods en conséquence. Cette approche basée sur un planning s'avère utile pour garantir un nombre minimal de réplicas sécurisé pendant les heures ouvrables, tout en permettant une réduction à zéro complète durant la nuit.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Déployé Knative dans votre cluster. Pour plus d'informations, consultez la rubrique Déployer Knative.

  • Déployé AHPA. Pour plus d'informations, consultez la rubrique Déployer AHPA.

Étape 1 : Configurer les métriques de mise à l'échelle automatique avec AHPA

Créez une ressource AdvancedHorizontalPodAutoscalerTemplate qui définit à la fois les métriques de mise à l'échelle prédictive et les limites de réplicas planifiées. Appliquez le fichier YAML suivant à votre cluster :

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
  name: ahpa-demo
spec:
  metrics:
  - type: Resource
    resource:
      name: rps
      target:
        type: Utilization
        averageUtilization: 10  # Scale out when RPS per pod exceeds 10
  maxReplicas: 50  # Global ceiling
  minReplicas: 0   # Global floor (allows scale-to-zero)
  prediction:
    quantile: 95        # Use 95th-percentile forecast for conservative scaling
    scaleUpForward: 180 # Predict 180 seconds ahead to scale before demand arrives
  instanceBounds:
  - startTime: "2023-06-01 00:00:00"  # Bounds active from this date
    endTime: "2123-06-01 00:00:00"    # Bounds active until this date
    bounds:
    - cron: '* 0-6 ? * *'    # 12 AM – 6 AM: allow scale-to-zero
      maxReplicas: 50
      minReplicas: 0
    - cron: '* 7-9 ? * *'    # 7 AM – 9 AM: maintain at least 5 replicas
      maxReplicas: 50
      minReplicas: 5
    - cron: '* 10-16 ? * *'  # 10 AM – 4 PM: maintain at least 10 replicas
      maxReplicas: 50
      minReplicas: 10
    - cron: '* 17-23 ? * *'  # 5 PM – 11 PM: maintain at least 2 replicas
      maxReplicas: 50
      minReplicas: 2

Paramètres clés :

Paramètre Obligatoire Description
metrics Oui Métriques utilisées pour la mise à l'échelle automatique. Valeurs prises en charge : RPS, concurrence, CPU et mémoire.
maxReplicas Oui Nombre maximal de réplicas autorisé globalement.
minReplicas Oui Nombre minimal de réplicas à maintenir globalement.
instanceBounds Non Plage horaire durant laquelle AHPA applique des limites de réplicas par période. Contient startTime et endTime.
bounds Non Limites de réplicas par période. Chaque entrée spécifie une expression cron, ainsi que maxReplicas et minReplicas.

Syntaxe des expressions cron

Une expression cron se compose de cinq champs séparés par des espaces. Pour une référence complète, consultez la documentation relative aux Expressions cron.

Champ Caractères spéciaux Obligatoire Valeurs valides
Minutes * / , - Oui 0–59
Heures * / , - Oui 0–23
Jour du mois * / , - ? Oui 1–31
Mois * / , - Oui 1–12 ou JAN–DEC (insensible à la casse)
Jour de la semaine * / , - ? Non 0–6 ou SUN–SAT (insensible à la casse). Si omis, tous les jours de la semaine s'appliquent.

Caractères spéciaux :

  • * — correspond à n'importe quelle valeur (par exemple, * dans le champ Heures signifie chaque heure)

  • / — définit un pas (par exemple, /5 signifie toutes les 5 unités)

  • , — sépare les valeurs individuelles (par exemple, 1,3,5)

  • - — définit une plage (par exemple, 1-5)

  • ? — indique une valeur variable ; valide uniquement dans les champs Jour du mois et Jour de la semaine

Étape 2 : Créer un service Knative et activer AHPA

Associez AHPA à un service Knative en ajoutant deux annotations au manifeste du service. Lorsque vous mettez à jour le modèle AHPA, Knative crée automatiquement une nouvelle révision.

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

  2. Sur la page Clusters, localisez votre cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Applications > Knative.

  3. Sous l'onglet Services, définissez le paramètre Namespace sur default, puis cliquez sur Create from Template. Collez le fichier YAML suivant, puis cliquez sur Create.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go-demo
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev          # Use the AHPA autoscaler
            autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo"       # Reference the AHPA template from Step 1
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"

    Une fois le service créé, notez son adresse de passerelle et son nom de domaine, car vous en aurez besoin à l'étape 3.

    image

Étape 3 : Accéder au service

Exécutez la commande suivante pour envoyer une requête au service. Remplacez le nom de domaine et l'adresse de passerelle par les valeurs notées à l'étape 2.

# helloworld-go-demo.default.example.com is the default domain name of the service.
# alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com is the gateway address of the service.
curl -H "Host: helloworld-go-demo.default.example.com" http://alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com

Résultat attendu :

Hello Knative!

Étape 4 (Facultative) : Vérifier la mise à l'échelle planifiée

Consultez les tendances de mise à l'échelle des pods dans les Monitoring Dashboards de la page Knative. Pour obtenir des instructions de configuration, consultez la rubrique Afficher le tableau de bord de surveillance Knative.

Remarque

Managed Service for Prometheus ne peut pas collecter les métriques RPS ou de concurrence lorsque le nombre de pods est nul. Vous pouvez consulter ces métriques dans la console uniquement après avoir accédé aux pods de l'application Knative. Lorsque les pods sont en cours d'exécution, les métriques apparaissent dans la console sans aucune étape supplémentaire.

image.png

Étapes suivantes

Configurez la mise à l'échelle automatique en fonction des requêtes concurrentes et du RPS sans limites de planning. Pour plus d'informations, consultez la rubrique Activer la mise à l'échelle automatique pour absorber les fluctuations de trafic.