Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use Horizontal Pod Autoscaler (HPA) in Knative to autoscale workloads based on CPU and memory

Última atualização: Oct 14, 2026

A combinação do Knative com o Horizontal Pod Autoscaler (HPA) permite que suas aplicações realizem dimensionamento automático com base na carga de recursos. O Knative já dimensiona conforme o volume de requisições, mas a extensão de dimensionamento automático do HPA possibilita ajustar com mais precisão o comportamento de escalonamento usando métricas adicionais, como utilização de CPU e memória.

Pré-requisitos

Etapa 1: Implantar um Knative Service

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Applications > Knative.

  3. Na página Knative, clique na aba Services, defina o Namespace como default, clique em Create from Template, cole o exemplo de YAML abaixo no modelo e clique em Create.

    A configuração de exemplo a seguir cria um Service chamado helloworld-go-hpa.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go-hpa # Knative Service name.
    spec:
      template:
        metadata:
          labels:
            app: helloworld-go-hpa
          annotations:
            autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev" # Specifies HPA as the autoscaling extension.
            autoscaling.knative.dev/metric: "cpu" # HPA scaling metric. Valid values: cpu and memory. This example uses cpu.
            autoscaling.knative.dev/target: "30" # The threshold for the HPA CPU metric. Knative HPA adjusts the number of replicas based on this threshold.
            autoscaling.knative.dev/minScale: "1" # The minimum number of instances for the elastic policy.
            autoscaling.knative.dev/maxScale: "4" # The maximum number of instances for the elastic policy.
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/autoscale-go:v1024
              resources:
                requests:
                  cpu: '200m'
  4. Execute o comando abaixo para verificar se o Service está funcionando corretamente.

    kubectl get ksvc

    Saí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      True        

    A coluna READY exibe True, o que indica que o Knative Service está operando normalmente.

Etapa 2: Ative o dimensionamento automático baseado em CPU

  1. Instale a ferramenta de teste de carga Hey.

    Para mais detalhes sobre a ferramenta de teste de carga Hey, consulte Hey.

  2. Execute o comando a seguir para realizar um teste de carga enviando requisições ao Service a uma taxa de 100 consultas por segundo (QPS) durante 60 segundos.

    Nota

    Substitua 121.XX.XX.10 pelo endereço IP ou nome de domínio do gateway.

    hey -z 60s -q 100   -host "helloworld-go-hpa.default.example.com"   "http://121.XX.XX.10?prime=40000000" # 121.199.XXX.XXX is the IP address or domain name of the gateway.

    Durante o teste de carga, execute o comando abaixo para acompanhar o dimensionamento dos Pods em tempo real.

    kubectl get pods --watch

    Saída esperada do dimensionamento de Pods:

    NAME                                                     READY   STATUS    RESTARTS   AGE
    # The Pod is running and its containers are ready.
    helloworld-go-hpa-00001-deployment-67cc8f979b-fxfl5      2/2     Running   0          101m
    # Pod count scales out to 4, and the status is 0/2 Pending, which means that the containers are waiting to be scheduled and allocated resources.
    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     Pending   0          0s
    helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85      0/2     Pending   0          0s
    # 4 Pods change to a status of 0/2 ContainerCreating, which indicates that the containers are being created.
    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      0/2     ContainerCreating   0          0s
    helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85      0/2     ContainerCreating   0          0s
    # 4 Pods change to statuses of 1/2 Running and 2/2 Running, which indicates that one or both containers are created and running.
    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          1s

    A saída demonstra que o Knative escala automaticamente conforme as requisições. Quando a carga do sistema aumenta e são necessários mais Pods para processá-las, a quantidade de Pods escala horizontalmente de 1 para 4, ampliando a capacidade de processamento e o throughput do sistema.

(Opcional) Etapa 3: Visualize o painel de monitoramento do Knative

O Knative oferece observabilidade pronta para uso. Na página Knative, clique na aba Monitoring Dashboards para acessar os dados de monitoramento do Service. Para mais informações sobre o painel de monitoramento, consulte Visualize the Knative service monitoring dashboard.

image.png

Referências

  • O Alibaba Cloud Knative implementa padrões Serverless ao integrar construção de contêineres (ou funções), gerenciamento de cargas de trabalho (dimensionamento dinâmico) e um modelo de eventos. Para saber mais sobre o Alibaba Cloud Knative, consulte Knative.

  • Para conhecer melhor os recursos do Alibaba Cloud Knative, consulte Comparison of Alibaba Cloud Knative and open-source Knative.