Par défaut, Knative met à l'échelle les charges de travail en fonction du nombre de requêtes via le Knative Pod Autoscaler (KPA). Si vos charges de travail sont limitées par le processeur ou la mémoire plutôt que par les requêtes, basculez vers le Horizontal Pod Autoscaler (HPA) pour effectuer la mise à l'échelle sur la base de l'utilisation du processeur ou de la mémoire.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Déployé Knative dans le cluster ACK. Consultez la rubrique Déployer Knative dans un cluster ACK
Un client kubectl connecté au cluster ACK. Consultez la rubrique Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster
(Uniquement pour l'étape 3) Knative connecté à Managed Service for Prometheus. Consultez la rubrique Afficher le tableau de bord Knative dans Managed Service for Prometheus
Étape 1 : Déployer un service Knative
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, localisez le cluster à gérer et cliquez sur son nom. Dans le volet de gauche, choisissez Applications > Knative.
-
Dans l'onglet Services de la page Knative, sélectionnez default dans la liste déroulante Namespace, puis cliquez sur Create from Template. Copiez le contenu YAML suivant dans l'éditeur de code, puis cliquez sur Create. L'exemple ci-dessous crée un service Knative nommé
helloworld-go-hpaavec une configuration HPA basée sur l'utilisation du processeur :apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go-hpa spec: template: metadata: labels: app: helloworld-go-hpa annotations: autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev" # Use HPA instead of the default KPA autoscaling.knative.dev/metric: "cpu" # Scale on CPU utilization autoscaling.knative.dev/target: "30" # Scale out when CPU utilization exceeds 30% autoscaling.knative.dev/minScale: "1" # Keep at least 1 pod running autoscaling.knative.dev/maxScale: "4" # Cap at 4 pods spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/autoscale-go:v1024 resources: requests: cpu: '200m' -
Exécutez la commande suivante pour vérifier que le service Knative est prêt :
kubectl get ksvcSortie attendue :
NAME URL LATESTCREATED LATESTREADY READY REASON helloworld-go-hpa http://helloworld-go-hpa.default.example.com helloworld-go-hpa-00001 helloworld-go-hpa-00001 TrueLa valeur
Truedans la colonneREADYconfirme que le service est en cours d'exécution.
Étape 2 : Tester la mise à l'échelle automatique avec un test de charge
Cette étape utilise hey, un outil de test de charge HTTP, pour faire dépasser le seuil d'utilisation du processeur et observer la mise à l'échelle des pods par HPA.
Installez hey. Pour les instructions d'installation, consultez Hey.
-
Exécutez un test de charge de 60 secondes à 100 requêtes par seconde (QPS) :
hey -z 60s -q 100 \ -host "helloworld-go-hpa.default.example.com" \ "http://<gateway-ip>?prime=40000000"Remplacez
<gateway-ip>par l'adresse IP ou le nom de domaine de la passerelle. -
Pendant l'exécution du test de charge, surveillez la mise à l'échelle des pods dans un terminal distinct :
kubectl get pods --watchSortie attendue :
NAME READY STATUS RESTARTS AGE helloworld-go-hpa-00001-deployment-67cc8f979b-fxfl5 2/2 Running 0 101m helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 0/2 Pending 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 0/2 Pending 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 0/2 ContainerCreating 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 0/2 ContainerCreating 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 1/2 Running 0 1s helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 2/2 Running 0 1s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 1/2 Running 0 1s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 2/2 Running 0 1sLe HPA fait passer le nombre de pods de 1 à 4 lorsque l'utilisation du processeur dépasse le seuil de 30 %. Chaque pod passe successivement par les états
Pending->ContainerCreating->Running.
(Facultatif) Étape 3 : Afficher le tableau de bord Knative
Knative offre une observabilité prête à l'emploi pour les services Knative. Affichez le tableau de bord dans l'onglet Monitoring Dashboards de la page Knative. Pour la configuration et l'utilisation, consultez la rubrique Afficher le tableau de bord Knative dans Managed Service for Prometheus.

Étapes suivantes
Aperçu de Knative — Alibaba Cloud Knative intègre la création de conteneurs, la gestion des charges de travail (mise à l'échelle automatique) et les modèles d'événements dans un framework serverless basé sur Kubernetes.
Comparaison entre Alibaba Cloud Knative et Knative open source