Em cargas de trabalho como serviços web ou processamento de mensagens, o dimensionamento baseado apenas em CPU ou memória frequentemente desperdiça recursos ou aumenta a latência, pois a carga real se correlaciona com sinais de negócio, como consultas por segundo (QPS) e profundidade de fila. Configure o AdvancedHorizontalPodAutoscaler (AHPA) para dimensionar automaticamente com base em métricas do Managed Service for Prometheus que correspondam ao tráfego real.
Como funciona
|
Antes de começar
O add-on do AHPA deve estar implantado e a fonte de dados do Prometheus configurada. Para mais informações, consulte Implantar o AHPA.
O Managed Service for Prometheus deve estar ativado.
Etapa 1: Implantar a aplicação e o ServiceMonitor
Primeiro, implante uma aplicação de exemplo capaz de expor métricas personalizadas e configure um ServiceMonitor para que o Prometheus possa coletar o endpoint de métricas da aplicação.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Deployments, clique em Create from YAML e siga as instruções na tela para implantar o yaml. Isso cria a aplicação
sample-app, umServicepara fornecer acesso interno ao cluster e umServiceMonitorpara coleta de métricas.-
Deployment
Este contêiner expõe a métrica personalizada
requests_per_secondno caminho/metricsna porta 8080, indicando o número de requisições por segundo. -
Service
Isso cria um endpoint estável dentro do cluster para o Deployment.
-
ServiceMonitor
A coleta de métricas é iniciada após a criação deste recurso. O ServiceMonitor vem ativado por padrão. Para verificar seu status, consulte Ativar recursos .
-
Etapa 2: Implantar o adaptador de métricas
O adaptador de métricas atua como uma ponte entre o AHPA e o Prometheus. Após implantar o add-on, configure-o para conectar à sua instância do Managed Service for Prometheus.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Clique em Create, pesquise e implante o
ack-alibaba-cloud-metrics-adapter.Chart Version: Utilize a versão mais recente.
-
Configuração de parâmetros: No yaml do Chart, na seção Parameter, configure
prometheus.urleprometheus.prometheusHeadere clique em OK.prometheus.url: Endereço da API HTTP do Managed Service for Prometheus (endpoint de leitura do Grafana). Para mais informações, consulte Como obter a URL de solicitação de dados do Prometheus.-
prometheus.prometheusHeader:
Etapa 3: Configurar métricas personalizadas
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Localize o
ack-alibaba-cloud-metrics-adaptere clique em Actions na coluna Actions.-
Substitua os parâmetros correspondentes no modelo pelo conteúdo yaml a seguir e clique em Update.
No exemplo, substitua
requests_per_secondpela métrica real de requisições por segundo no Prometheus....... prometheus: adapter: rules: custom: - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) name: as: requests_per_second resources: overrides: namespace: resource: namespace seriesQuery: requests_per_second # Set the metric name. Make sure this name matches the metric in Managed Service for Prometheus. ...... -
Use a API de Métricas Personalizadas para visualizar detalhes sobre as métricas disponíveis.
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/requests_per_second"Saída esperada:
{"kind":"ExternalMetricValueList","apiVersion":"external.metrics.k8s.io/v1beta1","metadata":{},"items":[{"metricName":"requests_per_second","metricLabels":{},"timestamp":"2025-10-15T07:57:00Z","value":"1"}]}
Etapa 4: Criar uma regra do AHPA e verificar o dimensionamento
Em seguida, crie uma regra do AHPA para automatizar o dimensionamento e execute um teste de estresse para verificar seu comportamento.
-
Crie um recurso do AHPA.
Use o yaml a seguir para criar um recurso do AHPA. O AHPA escala horizontalmente quando o valor médio de
requests_per_secondpor pod excede10e reduz a escala quando cai abaixo de10.Configure
external.metricespecificando o nome da métrica ematchLabels. O nome da métrica deve corresponder ao especificado em Configurar métricas personalizadas. Neste exemplo, a métrica personalizada está definida comorequests_per_second.Defina o limiar alvo. Por exemplo, defina
AverageValuecomo10. Isso significa que o dimensionamento horizontal começa se o número de requisições por segundo exceder 10.
-
Após o teste de estresse, verifique o status do objeto AHPA.
kubectl get ahpaSaída esperada:
NAME STRATEGY PERIODICITY REFERENCE METRIC TARGETS DESIREDPODS REPLICAS MINPODS MAXPODS AGE customer-deployment observer Deployment/sample-app requests_per_second 16/10 2 1 1 50 102sTARGETS: O valor atual da métrica é16e o valor alvo é10.DESIREDPODS: O AHPA calcula o número desejado de réplicas como2com base emCurrent Value (16) / Target Value (10) = 2.-
REPLICAS: Exibe o número real de réplicas desample-app.Como a
STRATEGYatual do AHPA éobserver, ele realiza apenas cálculos e observações, sem executar operações de dimensionamento. Portanto, mesmo queDESIREDPODSseja 2,REPLICASpermanece1.
Execute o comando
kubectl get deployment sample-apppara verificar as alterações em tempo real na contagem de réplicas de pod.
Considerações de produção
Aspecto | Descrição |
Seleção de métricas | Utilize métricas suavizadas que reflitam a carga de trabalho real em vez de valores instantâneos. Isso evita flutuações de dimensionamento causadas por picos de tráfego. |
Configuração da política de dimensionamento |
|
Monitoramento e alertas | Configure alertas para o status operacional do AHPA a fim de identificar prontamente problemas potenciais, como gargalos de capacidade, políticas configuradas incorretamente ou tráfego upstream anormal. |
