Tous les produits
Search
Centre de documentation

Container Compute Service:Use Knative and AHPA to configure scheduled auto scaling

Dernière mise à jour :Sep 21, 2026

Advanced Horizontal Pod Autoscaler (AHPA) effectue une mise à l'échelle prédictive en se basant sur les valeurs historiques de métriques telles que le nombre de requêtes par seconde (RPS), la concurrence, l'utilisation du CPU et la mémoire. Il provisionne les ressources à l'avance et maintient le nombre maximal ou minimal de pods spécifié pendant une période donnée. En définissant des expressions cron, vous spécifiez les nombres maximal et minimal de pods pour des plages horaires précises.

Prérequis

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

Créez un ConfigMap AHPA à partir du contenu YAML ci-dessous, puis déployez AHPA dans le cluster ACS.

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
  name: ahpa-demo
spec:
  metrics:
  - type: Resource
    resource:
      name: rps
      target:
        type: Utilization
        averageUtilization: 10 # The RPS threshold is set to 10. 
  maxReplicas: 50 # The maximum number of replicated pods is set to 50. 
  minReplicas: 0 # The minimum number of replicated pods is set to 0. 
  prediction:
    quantile: 95 # The confidence level of prediction is set to 95%. 
    scaleUpForward: 180 # The time range of forward prediction is set to 180 seconds. 
# The number of replicated pods is limited by the maximum number of replicated pods and the minimum number of replicated pods defined by AHPA from 00:00:00 on June 1, 2023 to 00:00:00 on June 1, 2123. 
  instanceBounds:
  - startTime: "2023-06-01 00:00:00"
    endTime: "2123-06-01 00:00:00"
    bounds:
# The minimum number of replicated pods is 0 and the maximum number of replicated pods is 50 from 0 am to 6 am. 
    - cron: '* 0-6 ?  * *'
      maxReplicas: 50
      minReplicas: 0
# The minimum number of replicated pods is 5 and the maximum number of replicated pods is 50 from 7 am to 9 am. 
    - cron: '* 7-9 ?  * *'
      maxReplicas: 50
      minReplicas: 5
# The minimum number of replicated pods is 10 and the maximum number of replicated pods is 50 from 10 am to 4 pm. 
    - cron: '* 10-16 ?  * *'
      maxReplicas: 50
      minReplicas: 10
# The minimum number of replicated pods is 2 and the maximum number of replicated pods is 50 from 5 pm to 11 pm. 
    - cron: '* 17-23 ?  * *'
      maxReplicas: 50
      minReplicas: 2

Paramètre

Obligatoire

Description

metrics

Oui

Configurez les métriques de mise à l'échelle automatique. Les métriques RPS, concurrence, CPU et mémoire sont prises en charge.

maxReplicas

Oui

Nombre maximal de pods répliqués autorisé.

minReplicas

Oui

Nombre minimal de pods répliqués à garantir.

instanceBounds

Non

Période durant laquelle le nombre de pods répliqués est limité par les valeurs maximale et minimale définies par AHPA.

  • startTime : heure de début de la tâche de requête.

  • endTime : heure de fin de la tâche de requête.

bounds

Non

Nombres maximal et minimal de pods répliqués pour la période spécifiée.

  • cron : expression cron définissant une plage horaire. Saisissez une expression cron pour configurer un CronJob.

    Pour savoir comment utiliser une expression cron afin de configurer un CronJob ou mettre à l'échelle automatiquement les pods, reportez-vous à la section Champs utilisés dans les expressions cron et consultez les définitions des caractères spéciaux et génériques utilisés dans les expressions cron.

  • maxReplicas : nombre maximal de pods répliqués.

  • minReplicas : nombre minimal de pods répliqués.

Champs utilisés dans les expressions cron

Champs des expressions cron. Consultez la rubrique Tâches planifiées Cron.

Champ

Caractère spécial

Obligatoire

Description

Minutes

* / , -

Oui

Valeurs valides : 0 à 59.

Heures

* / , -

Oui

Valeurs valides : 0 à 23.

Jour du mois

* / , – ?

Oui

Valeurs valides : 1 à 31.

Mois

* / , -

Oui

Valeurs valides : 1 à 12 ou JAN à DEC.

Remarque

Les valeurs valides de JAN à DEC ne sont pas sensibles à la casse.

Jour de la semaine

* / , – ?

Non

Valeurs valides : 0 à 6 ou SUN à SAT.

Remarque
  • Les valeurs valides de SUN à SAT ne sont pas sensibles à la casse. Par exemple, SUN et sun indiquent tous deux le dimanche.

  • Si vous ne spécifiez pas le champ Jour de la semaine, tous les jours de la semaine sont appliqués, ce qui équivaut au caractère générique (*).

Caractères spéciaux utilisés dans les expressions cron :

  • L'astérisque (*) indique n'importe quelle valeur. Par exemple, * signifie n'importe quelle minute ou heure.

  • La barre oblique (/) indique la taille du pas. Par exemple, /5 signifie toutes les cinq unités de temps.

  • Les virgules (,) servent de délimiteurs. Par exemple, 1,3,5 indique les valeurs 1, 3 et 5.

  • Les traits d'union (-) définissent des plages de valeurs. Par exemple, 1-5 indique les valeurs de 1 à 5.

  • Le point d'interrogation (?) est utilisé uniquement dans les champs Jour du mois et Jour de la semaine pour indiquer des valeurs variables.

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

  1. Connectez-vous à la console ACS. 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 > Knative.

  3. Sur la page Knative, cliquez sur l'onglet Services. Sélectionnez default dans la liste déroulante Namespace. Cliquez sur Create from Template, collez le modèle YAML suivant dans l'éditeur, puis cliquez sur Create. Cette opération crée un service nommé helloworld-go-demo.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go-demo
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev # Specify the AHPA plug-in. 
            autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo" # If you modify the AHPA template parameter, the corresponding revision is also updated. 
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"

    Une fois le service créé, notez l'adresse de la passerelle et le nom de domaine du service, car ils seront utilisés à l'étape Étape 3 : Accéder au service.

    Dans l'onglet Services, vous trouverez l'adresse de la passerelle (par exemple, alb-xxx.ncs.com) dans la section Gateway. Dans la liste des services, la colonne Default Domain affiche le nom de domaine du service (par exemple, helloworld-go.default.example.com). Pour accéder au service, envoyez une requête à l'adresse de la passerelle en définissant l'en-tête Host sur le nom de domaine par défaut du service.

Étape 3 : Accéder au service

  1. Exécutez la commande suivante pour accéder au service :

    # 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 automatique planifiée

Sur la page Monitoring Dashboards de Knative, vous pouvez consulter les tendances de mise à l'échelle des instances de service Knative. Pour plus d'informations sur le tableau de bord de surveillance Knative, consultez la rubrique Afficher le tableau de bord de surveillance du service Knative.

Remarque
  • Si une application Knative est mise à l'échelle à zéro et qu'aucun pod n'est en cours d'exécution, Managed Service for Prometheus ne peut pas collecter de métriques telles que la concurrence des requêtes ou le nombre de requêtes par seconde pour ces pods. Ces métriques n'apparaissent dans la console qu'après l'envoi de requêtes aux pods de l'application Knative.

  • Si une application Knative n'est pas mise à l'échelle à zéro, la console affiche les métriques telles que la concurrence des requêtes et le nombre de requêtes par seconde pour les pods, même s'ils ne traitent aucune requête.

image.png

Références

Vous pouvez configurer la mise à l'échelle automatique en fonction du nombre de requêtes concurrentes des pods et des configurations RPS. Pour plus d'informations, consultez la rubrique Activer la mise à l'échelle automatique pour absorber les fluctuations de trafic.