Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use Knative and AHPA to implement scheduled auto scaling

Última atualização: Jul 04, 2026

Serviços Knative podem apresentar picos de tráfego previsíveis, como horários de pico comercial, períodos noturnos de baixa atividade ou janelas de processamento em lote agendadas. O Advanced Horizontal Pod Autoscaler (AHPA) gerencia ambos os padrões: prevê a demanda com base em métricas históricas (RPS, concorrência, CPU e memória) e dimensiona proativamente. Além disso, instanceBounds permite definir limites mínimos e máximos de réplicas durante janelas de tempo específicas por meio de expressões cron.

Quando uma janela agendada começa, o AHPA dimensiona os pods até o mínimo definido. Ao término da janela, o AHPA reduz a escala. Esse comportamento torna o dimensionamento automático baseado em agenda útil para garantir um limite seguro de réplicas durante o horário comercial e permitir o dimensionamento completo para zero durante a noite.

Pré-requisitos

Antes de começar, verifique se você tem:

Etapa 1: Configure métricas de dimensionamento automático com o AHPA

Crie um recurso AdvancedHorizontalPodAutoscalerTemplate que defina as métricas de dimensionamento preditivo e os limites de réplicas agendados. Aplique o seguinte YAML ao cluster:

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
  name: ahpa-demo
spec:
  metrics:
  - type: Resource
    resource:
      name: rps
      target:
        type: Utilization
        averageUtilization: 10  # Scale out when RPS per pod exceeds 10
  maxReplicas: 50  # Global ceiling
  minReplicas: 0   # Global floor (allows scale-to-zero)
  prediction:
    quantile: 95        # Use 95th-percentile forecast for conservative scaling
    scaleUpForward: 180 # Predict 180 seconds ahead to scale before demand arrives
  instanceBounds:
  - startTime: "2023-06-01 00:00:00"  # Bounds active from this date
    endTime: "2123-06-01 00:00:00"    # Bounds active until this date
    bounds:
    - cron: '* 0-6 ? * *'    # 12 AM – 6 AM: allow scale-to-zero
      maxReplicas: 50
      minReplicas: 0
    - cron: '* 7-9 ? * *'    # 7 AM – 9 AM: maintain at least 5 replicas
      maxReplicas: 50
      minReplicas: 5
    - cron: '* 10-16 ? * *'  # 10 AM – 4 PM: maintain at least 10 replicas
      maxReplicas: 50
      minReplicas: 10
    - cron: '* 17-23 ? * *'  # 5 PM – 11 PM: maintain at least 2 replicas
      maxReplicas: 50
      minReplicas: 2

Parâmetros principais:

Parâmetro

Obrigatório

Descrição

metrics

Sim

Métricas usadas para o dimensionamento automático. Valores suportados: RPS, concorrência, CPU e memória.

maxReplicas

Sim

Número máximo de réplicas permitido globalmente.

minReplicas

Sim

Número mínimo de réplicas a manter globalmente.

instanceBounds

Não

Intervalo de tempo em que o AHPA aplica limites de réplicas por período. Contém startTime e endTime.

bounds

Não

Limites de réplicas por período. Cada entrada especifica uma expressão cron, maxReplicas e minReplicas.

Sintaxe de expressão cron

Uma expressão cron consiste em cinco campos separados por espaços. Para referência completa, consulte Expressões cron.

Campo

Caracteres especiais

Obrigatório

Valores válidos

Minutos

* / , -

Sim

0–59

Horas

* / , -

Sim

0–23

Dia do mês

* / , - ?

Sim

1–31

Mês

* / , -

Sim

1–12 ou JAN–DEC (sem distinção entre maiúsculas e minúsculas)

Dia da semana

* / , - ?

Não

0–6 ou SUN–SAT (sem distinção entre maiúsculas e minúsculas). Se omitido, aplica-se a qualquer dia da semana.

Caracteres especiais:

  • * — corresponde a qualquer valor (por exemplo, * em Horas significa a cada hora)

  • / — define um passo (por exemplo, /5 significa a cada 5 unidades)

  • , — separa valores individuais (por exemplo, 1,3,5)

  • - — define um intervalo (por exemplo, 1-5)

  • ? — indica um valor variável; válido apenas nos campos Dia do mês e Dia da semana

Etapa 2: Crie um serviço Knative e ative o AHPA

Associe o AHPA a um serviço Knative adicionando duas anotações ao manifesto do serviço. Ao atualizar o modelo do AHPA, o Knative cria automaticamente uma nova revisão.

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

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

  3. Na aba Services, defina Namespace como default, clique em Create from Template, cole o YAML a seguir e clique em Create.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go-demo
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev          # Use the AHPA autoscaler
            autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo"       # Reference the AHPA template from Step 1
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"

    Após criar o serviço, anote o endereço do gateway e o nome de domínio. Essas informações serão necessárias na Etapa 3.

    image

Etapa 3: Acessar o serviço

Execute o comando a seguir para enviar uma solicitação ao serviço. Substitua o nome de domínio e o endereço do gateway pelos valores anotados na Etapa 2.

# 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!

Etapa 4 (Opcional): Verifique o dimensionamento agendado

Visualize as tendências de dimensionamento de pods nos Monitoring Dashboards da página do Knative. Para instruções de configuração, consulte Visualizar o painel de monitoramento do Knative.

Nota

O Managed Service for Prometheus não coleta métricas de RPS ou concorrência quando a contagem de pods é zero. Essas métricas ficam visíveis no console somente após o acesso aos pods da aplicação Knative. Com os pods em execução, as métricas aparecem no console sem etapas adicionais.

image.png

Próximos passos

Configure o dimensionamento automático com base em solicitações simultâneas e RPS sem limites de agendamento. Para mais informações, consulte Ativar o dimensionamento automático para suportar flutuações de tráfego.