Por padrão, o Knative dimensiona cargas de trabalho com base na contagem de requisições usando o Knative Pod Autoscaler (KPA). Se suas cargas de trabalho forem limitadas por CPU ou memória, em vez de orientadas por requisições, alterne para o Horizontal Pod Autoscaler (HPA) para dimensionar com base na utilização de CPU ou de memória.
Pré-requisitos
Antes de começar, verifique se você tem:
O Knative implantado no cluster ACK. Consulte Implantar o Knative em um cluster ACK.
Um cliente kubectl conectado ao cluster ACK. Consulte Obter o arquivo kubeconfig de um cluster e usar o kubectl para conectar-se ao cluster.
(Apenas para a etapa 3) O Knative conectado ao Managed Service for Prometheus. Consulte Visualizar o painel do Knative no Managed Service for Prometheus.
Etapa 1: Implantar um serviço do Knative
Faça logon no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, localize o cluster que deseja gerenciar e clique em nome dele. No painel à esquerda, escolha Applications > Knative.
-
Na aba Services da página Knative, selecione default na lista suspensa Namespace, clique em Create from Template, copie o conteúdo YAML a seguir para o editor de código e clique em Create. O exemplo abaixo cria um serviço do Knative chamado
helloworld-go-hpacom o HPA configurado para dimensionar com base na utilização 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' -
Execute o comando a seguir para verificar se o serviço do Knative está pronto:
kubectl get ksvcSaída 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 TrueO valor
Truena colunaREADYconfirma que o serviço está em execução.
Etapa 2: Testar o dimensionamento automático com um teste de carga
Esta etapa usa o hey, uma ferramenta de teste de carga HTTP, para elevar a utilização de CPU acima do limiar e observar o HPA escalando horizontalmente os pods.
Instale o hey. Para instruções de instalação, consulte Hey.
-
Execute um teste de carga de 60 segundos com 100 consultas por segundo (QPS):
hey -z 60s -q 100 \ -host "helloworld-go-hpa.default.example.com" \ "http://<gateway-ip>?prime=40000000"Substitua
<gateway-ip>pelo endereço IP ou nome de domínio do gateway. -
Durante a execução do teste de carga, monitore o dimensionamento dos pods em um terminal separado:
kubectl get pods --watchSaída 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 1sO HPA aumenta a quantidade de pods de 1 para 4 quando a utilização de CPU ultrapassa o limiar de 30%. Cada pod passa pelos estados
Pending->ContainerCreating->Running.
(Opcional) Etapa 3: Visualize o painel do Knative
O Knative oferece observabilidade nativa para seus serviços. Visualize o painel na aba Monitoring Dashboards da página Knative. Para configuração e uso, consulte Visualizar o painel do Knative no Managed Service for Prometheus.

Próximos passos
Visão geral do Knative — O Alibaba Cloud Knative integra criação de contêineres, gerenciamento de cargas de trabalho (dimensionamento automático) e modelos de eventos em uma estrutura serverless baseada em Kubernetes.
Comparação entre o Alibaba Cloud Knative e o Knative open source