De forma predeterminada, Knative escala las cargas de trabajo según el número de solicitudes mediante Knative Pod Autoscaler (KPA). Si sus cargas de trabajo dependen más del uso de CPU o memoria que del volumen de solicitudes, cambie a Horizontal Pod Autoscaler (HPA) para escalar según la utilización de CPU o memoria.
Requisitos previos
Antes de empezar, asegúrese de cumplir con lo siguiente:
Tener Knative desplegado en el clúster de ACK. Consulte Deploy Knative in an ACK cluster
Contar con un cliente kubectl conectado al clúster de ACK. Consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster
(Solo para el paso 3) Tener Knative conectado a Managed Service for Prometheus. Consulte View the Knative dashboard in Managed Service for Prometheus
Paso 1: Desplegar un servicio de Knative
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, localice el clúster que desea gestionar y haga clic en su nombre. En el panel izquierdo, seleccione Applications > Knative.
-
En la pestaña Services de la página Knative, seleccione default en la lista desplegable Namespace, haga clic en Create from Template, copie el siguiente contenido YAML en el editor de código y luego haga clic en Create. El siguiente ejemplo crea un servicio de Knative llamado
helloworld-go-hpacon HPA configurado para escalar según la utilización de CPU: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' -
Ejecute el siguiente comando para comprobar que el servicio de Knative está listo:
kubectl get ksvcSalida esperada:
NAME URL LATESTCREATED LATESTREADY READY REASON helloworld-go-hpa http://helloworld-go-hpa.default.example.com helloworld-go-hpa-00001 helloworld-go-hpa-00001 TrueEl valor
Trueen la columnaREADYconfirma que el servicio se está ejecutando.
Paso 2: Probar el autoescalado con una prueba de carga
Este paso usa hey, una herramienta de pruebas de carga HTTP, para elevar la utilización de CPU por encima del umbral y observar cómo HPA escala los pods.
Instale hey. Para consultar las instrucciones de instalación, visite Hey.
-
Ejecute una prueba de carga de 60 segundos a 100 consultas por segundo (QPS):
hey -z 60s -q 100 \ -host "helloworld-go-hpa.default.example.com" \ "http://<gateway-ip>?prime=40000000"Reemplace
<gateway-ip>con la dirección IP o el nombre de dominio del gateway. -
Mientras se ejecuta la prueba de carga, supervise el escalado de pods en una terminal independiente:
kubectl get pods --watchSalida esperada:
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 1sHPA aumenta la cantidad de pods de 1 a 4 cuando la utilización de CPU supera el umbral del 30%. Cada pod avanza por los estados
Pending->ContainerCreating->Running.
(Opcional) Paso 3: Consultar el panel de Knative
Knative ofrece observability integrada para sus servicios. Consulte el panel en la pestaña Monitoring Dashboards de la página Knative. Para obtener detalles sobre la configuración y el uso, consulte View the Knative dashboard in Managed Service for Prometheus.

Pasos siguientes
Descripción general de Knative — Alibaba Cloud Knative integra la creación de contenedores, la gestión de cargas de trabajo (autoescalado) y modelos de eventos en un framework serverless basado en Kubernetes.
Comparación entre Alibaba Cloud Knative y Knative de código abierto