Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Combinar Knative e AHPA para implementar o dimensionamento automático agendado

Última atualização: Oct 30, 2026

O Advanced Horizontal Pod Autoscaler (AHPA) prevê a carga futura com base em métricas históricas como RPS, concorrência, CPU e memória, e planeja o dimensionamento com antecedência para reduzir o atraso no dimensionamento. O AHPA também permite definir o número máximo e mínimo de réplicas de pod por período de tempo. Com uma expressão Cron, você pode especificar esse intervalo de réplicas para janelas de tempo específicas.

Pré-requisitos

Etapa 1: Configurar métricas de dimensionamento com o AHPA

Use o arquivo YAML a seguir para criar um arquivo de configuração do AHPA e implantá-lo no seu cluster.

YAML

" commentTypeId="40" timestamp="2024-12-14T17:39:13+08:00" authorId="32557" uuid="b9b20be9-2f64-473e-b772-5b5940ff9a3d">apiVersion: autoscaling.alibabacloud.com/v1beta1 kind: AdvancedHorizontalPodAutoscalerTemplate metadata: name: ahpa-demo spec: metrics: - type: Resource resource: name: rps target: type: Utilization averageUtilization: 10 # The current threshold. A value of 10 indicates that the target RPS utilization threshold is 10. maxReplicas: 50 # Defines the maximum number of pod replicas as 50. minReplicas: 0 # Defines the minimum number of pod replicas as 0. prediction: quantile: 95 # Indicates that predictions use a 95% confidence level. scaleUpForward: 180 # Indicates that the forward prediction time range is 180 seconds. # Within the time range from 2023-06-01 00:00:00 to 2123-06-01 00:00:00, the number of pod replicas is limited by the maximum and minimum number of replicas defined in AHPAT. instanceBounds: - startTime: "2023-06-01 00:00:00" endTime: "2123-06-01 00:00:00" bounds: # During the 0-6 hour period, the minimum number of replicas is 0 and the maximum number of replicas is 50. - cron: '* 0-6 ? * *' maxReplicas: 50 minReplicas: 0 # During the 7-9 hour period, the minimum number of replicas is 5 and the maximum number of replicas is 50. - cron: '* 7-9 ? * *' maxReplicas: 50 minReplicas: 5 # During the 10-16 hour period, the minimum number of replicas is 10 and the maximum number of replicas is 50. - cron: '* 10-16 ? * *' maxReplicas: 50 minReplicas: 10 # During the 17-23 hour period, the minimum number of replicas is 2 and the maximum number of replicas is 50. - cron: '* 17-23 ? * *' maxReplicas: 50 minReplicas: 2

Parâmetro

Obrigatório

Descrição

metrics

Sim

Usado para configurar métricas de dimensionamento. São suportadas métricas de RPS, concorrência, CPU e memória.

maxReplicas

Sim

O número máximo de réplicas de pod para scale-out.

minReplicas

Sim

O número mínimo de réplicas de pod para scale-in.

instanceBounds

Não

Os limites do número de réplicas de pod para cada período de dimensionamento.

  • startTime: hora de início.

  • endTime: hora de término.

bounds

Não

Os números mínimo e máximo de réplicas de pod para diferentes intervalos de tempo.

  • cron: string formatada que representa um intervalo de tempo. Você pode configurar uma tarefa agendada (CronJob).

    Para usar uma expressão Cron para definir tarefas executadas periodicamente ou dimensionar automaticamente o número de réplicas de pod, consulte primeiro Descrição detalhada de cada campo em uma expressão Cron para entender os caracteres especiais e curingas nas expressões Cron.

  • maxReplicas: o número máximo de réplicas.

  • minReplicas: o número mínimo de réplicas.

Descrição detalhada de cada campo em uma expressão Cron

A tabela a seguir descreve os campos de uma expressão Cron. Para mais informações, consulte Tarefas Cron.

Campo

Caracteres especiais

Obrigatório

Descrição

Minutos

* / , -

Sim

Valores válidos: [0,59].

Horas

* / , -

Sim

Valores válidos: [0,23].

Dia do mês

* / , – ?

Sim

Valores válidos: [1,31].

Mês

* / , -

Sim

Valores válidos: [1,12] ou JAN~DEC.

Nota

Os valores no campo JAN~DEC não diferenciam maiúsculas de minúsculas.

Dia da semana

* / , – ?

Não

Valores válidos: [0,6] ou SUN~SAT.

Nota
  • Os valores no campo SUN~SAT não diferenciam maiúsculas de minúsculas. Por exemplo, tanto SUN quanto sun representam domingo.

  • Se o campo Dia da semana não for fornecido, equivale a *.

Os caracteres em uma expressão Cron têm os seguintes significados:

  • Asterisco (*): todos os valores possíveis. Por exemplo, * corresponde a todos os minutos e horas.

  • Barra (/): tamanho de incremento. Por exemplo, /5 indica a cada 5 unidades de tempo.

  • Vírgula (,): separador. Por exemplo, 1,3,5 corresponde aos valores 1, 3 e 5.

  • Hífen (-): intervalo. Por exemplo, 1-5 corresponde de 1 a 5.

  • Ponto de interrogação (?): usado apenas nos campos Dia do mês e Dia da semana para indicar que nenhum valor foi especificado.

Etapa 2: Criar um serviço Knative e especificar a política de dimensionamento do AHPA

Após configurar a política de dimensionamento, você pode usar essa política de dimensionamento agendado em um serviço Knative.

  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 seu cluster. No painel de navegação à esquerda, clique em Applications > Knative.

  3. Na página Knative, clique na guia Services. Em Namespace, selecione default. Em seguida, clique em Create from Template, cole o exemplo YAML a seguir no modelo e clique em Create para criar um serviço chamado helloworld-go-demo.

    YAML

    " commentTypeId="40" timestamp="2024-12-14T17:39:30+08:00" authorId="32557" uuid="5b0f4bfc-f4a7-42a4-88f4-7d506db6ec36">apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go-demo spec: template: metadata: annotations: autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev # Specifies the AHPA autoscaling extension. autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo" # Note: When you modify the parameters of the AHPA template referenced here, the associated revision automatically updates the scaling policy. spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 env: - name: TARGET value: "Knative"

    Após a criação do serviço, obtenha e registre o endereço do gateway e o nome de domínio do serviço para uso na Etapa 3: Acessar o serviço.

Etapa 3: Acessar o serviço

Execute o comando a seguir para acessar o serviço.

# 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

Saída esperada:

Hello Knative!

(Opcional) Etapa 4: Verificar o resultado

Na página Monitoring Dashboard do Knative, você pode visualizar as tendências de dimensionamento das instâncias do serviço Knative. Para mais informações sobre o painel de monitoramento do Knative, consulte Visualizar o painel de monitoramento do serviço Knative.

Nota
  • Se uma aplicação Knative for dimensionada para zero e não tiver pods, o Managed Service for Prometheus não poderá coletar métricas dos pods, como concorrência de solicitações e solicitações por segundo. O console exibirá essas métricas somente após você acessar os pods da aplicação Knative.

  • Se uma aplicação Knative não for dimensionada para zero, o console exibirá métricas dos pods, como concorrência de solicitações e solicitações por segundo, sem que seja necessário acessar os pods.

image.png

Referências

Você pode configurar o dimensionamento automático com base na concorrência de pods e no RPS. Para mais informações, consulte Ativar o dimensionamento automático para lidar com flutuações de tráfego.