Blog Post

Desenvolvedores BR
3 MIN READ

AKS - Problemas de desempenho do NGINX Ingress Controller Gerenciado

ClaudioGodoy's avatar
ClaudioGodoy
Icon for Microsoft rankMicrosoft
Sep 05, 2025

Em problemas relacionados à performance, o sistema de roteamento pode ser a causa raiz. Este artigo fornece um guia passo a passo para solucionar problemas de performance do NGINX ingress controller.

NGINX ingress controller gerenciado é um complemento de roteamento que permite direcionar tráfego HTTP e HTTPS para aplicações executando em um cluster Azure Kubernetes Service (AKS).

Em problemas relacionados à performance, o sistema de roteamento pode ser a causa raiz. Este artigo fornece um guia passo a passo para solucionar problemas de performance do NGINX ingress controller.

Pré-requisitos

Antes de começar, certifique-se de ter as seguintes ferramentas instaladas:

  • Kubernetes CLI (kubectl): Use o Azure CLI para instalar executando o comando az aks install-cli.

Sintomas Comuns

SintomaDescrição
Erros de Gateway HTTPCódigos de erro como 502, 504 podem indicar um problema de exaustão do NGINX.
Alta Diferença no Tempo de RespostaDiferença significativa entre o tempo de resposta do seu serviço e o tempo de resposta fim a fim. Existe uma latência comum adicionada pelo NGINX, mas quando é muito grande, pode indicar exaustão do NGINX.

Passo 1: Verifique o Comportamento do HPA

A razão mais comum para problemas de performance no NGINX é exaustão de CPU. Durante picos de carga no sistema, uma boa abordagem é observar o comportamento do HPA. Por padrão, o plugin de roteamento cria um namespace chamado app-routing-system.

  1. Obtenha o nome do HPA:

     kubectl get hpa -n app-routing-system
    
  2. Observe o comportamento do HPA:

     kubectl get hpa <HPA_NAME> -n app-routing-system -w
    
  3. Avalie o resultado:

     $ kubectl get hpa <HPA_NAME> -n app-routing-system -w
    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE nginx Deployment/nginx cpu: 83%/70% 1 2 1 77m nginx Deployment/nginx cpu: 83%/70% 1 2 2 77m nginx Deployment/nginx cpu: 106%/70% 1 2 2 79m nginx Deployment/nginx cpu: 133%/70% 1 2 2 80m

A coluna TARGETS mostra o limite de CPU onde o HPA irá acionar o aumento de replicas. Você deve interpretar esse comportamento. Existem algumas possibilidades:

  • O HPA atingiu o número máximo de pods.
  • Não há nodes disponíveis para agendar os pods.

Passo 2: Procure por Pods em Estado Pending

Se no passo anterior você viu que o NGINX HPA não atingiu o número máximo de pods, o kube-scheduler pode estar tendo dificuldades para encontrar nodes disponíveis para agendar os pods do NGINX.

  1. Obtenha Pods em Pending:

     kubectl get pod --field-selector=status.phase=Pending -n app-routing-system
    

Se houver pods em Pending, o cluster provavelmente está enfrentando um problema de exaustão de recursos. Nesse caso, consulte Solucionar erros do agendador de pods no Azure Kubernetes Service.

Passo 3: Verifique se Existem Limites Aplicados ao Deployment do NGINX

Qualquer configuração incorreta nos limites ou requests de recursos do NGINX pode fazer com que o HPA escale mais pods do que o necessário.

  1. Descreva o Deployment do NGINX:

     kubectl describe deploy nginx -n app-routing-system
    
  2. Verifique Requests e Limits:

     $ kubectl describe deploy nginx -n app-routing-system
     Name:                   nginx
     ....
     Selector:               app=nginx
     ....
     Pod Template:
     ....
     Containers:
     controller:
         ...
         Limits:
         ...
         Requests:
         ...
    

Solução

Por padrão, a versão atual do NGINX ingress controller não define limites para os pods do NGINX e define requests 500m de CPU, que é usado pelo HPA. Não é recomendado alterar esses valores diretamente na definição do deployment.

Se o seu HPA está atingindo o número máximo de pods e os requests e limits do deployment permanecem inalterados, você deve configurar o custom resource definition (CRD) chamado NginxIngressController.

Opções de Configuração

As opções de configuração abaixo impactam diretamente o comportamento do HPA:

PropriedadeTipoDescriçãoObrigatórioPadrão
scalingobjetoConfiguração para escalonamento do controller. Contém propriedades aninhadas.Não-
maxReplicasinteiroLimite superior de réplicas.Não100
minReplicasinteiroLimite inferior de réplicas.Não2
thresholdstringLimite de escalonamento definindo quão agressivo será o scaling. Opções: rapid, steady, balanced.Nãobalanced

Como Aplicar a Configuração

Siga os passos abaixo para aplicar a configuração:

  1. Edite o CRD NginxIngressController:

     kubectl edit nginxingresscontroller -n app-routing-system
    
  2. Adicione ou modifique a configuração de scaling:

     spec:
       scaling:
         maxReplicas: 10
         minReplicas: 2
         threshold: "balanced"
    
  3. Salve e saia do editor para aplicar as alterações.

  4. Verifique as alterações:

     kubectl get hpa -n app-routing-system
    

O HPA será atualizado automaticamente com base na nova configuração, e o NGINX ingress controller irá escalar conforme os parâmetros especificados.

Recursos adicionais

Published Sep 05, 2025
Version 1.0
No CommentsBe the first to comment