Todos os produtos
Search
Central de documentação

:Deploy a high-reliability NGINX Ingress controller

Última atualização: Jun 27, 2026

Ao usar o controlador de Ingress NGINX, os pods que executam o controlador funcionam como pontos de entrada e encaminhadores reais de tráfego. A confiabilidade desses pods determina a confiabilidade geral do controlador. Por padrão, o controlador de Ingress NGINX usa dois pods após a instalação, quantidade suficiente para a maioria dos cenários. Para alcançar alta confiabilidade, controle o número de pods e o método de agendamento.

Pré-requisitos

Visualize os pods padrão implantados para o controlador de Ingress NGINX

Após a instalação do controlador de Ingress NGINX, uma aplicação que provisiona dois pods é implantada no cluster.

Execute o comando a seguir para visualizar os pods que executam o controlador de Ingress NGINX:

kubectl -n kube-system get pod | grep nginx-ingress-controller

Saída esperada:

nginx-ingress-controller-*****nxs                    1/1     Running   0          3h
nginx-ingress-controller-*****9pm                    1/1     Running   0          3h

Como garantir alta confiabilidade para o controlador de Ingress NGINX

Importante

Por padrão, o controlador de Ingress NGINX usa uma configuração de afinidade que garante a implantação de apenas um pod do controlador por nó. Certifique-se de que o número de pods não exceda o número de nós no cluster.

Aumente o número de pods que executam o controlador

Aumentar o número de pods que executam o controlador previne falhas isoladas em um único pod.

image
  1. Execute o comando kubectl scale para escalar horizontalmente o deployment do controlador de Ingress NGINX. O comando a seguir aumenta o número de pods para três.

    kubectl -n kube-system scale --replicas=3 deployment/nginx-ingress-controller

    Saída esperada:

    deployment.extensions/nginx-ingress-controller scaled
  2. Execute o comando a seguir para visualizar os pods que executam o controlador de Ingress NGINX:

    kubectl -n kube-system get pod | grep nginx-ingress-controller

    Saída esperada:

    nginx-ingress-controller-********                    1/1     Running   0          3h
    nginx-ingress-controller-********                    1/1     Running   0          3h
    nginx-ingress-controller-********                    1/1     Running   0          33s

Agende pods em nós de alta especificação

Agendar pods em nós de alta especificação evita degradação de desempenho ou evicção devido à insuficiência de recursos no nó.

image
  1. Execute o comando a seguir para visualizar o uso atual de recursos do cluster:

    kubectl top nodes

    Saída esperada:

    NAME                       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
    cn-shanghai.********.230   71m          1%     1712Mi          31%       
    cn-shanghai.********.226   63m          1%     1669Mi          30%       
    cn-shanghai.********.229   125m         3%     2545Mi          46%       
    cn-shanghai.********.253   152m         3%     3804Mi          69%  

    A saída mostra os recursos de CPU e memória já utilizados por cada nó. Selecione nós com mais recursos disponíveis para o agendamento.

  2. Execute o comando a seguir para adicionar o rótulo node-role.kubernetes.io/ingress="true" aos nós. No exemplo abaixo, o rótulo é adicionado aos nós cn-shanghai.********.226 e cn-shanghai.********.230, que possuem mais recursos de CPU disponíveis.

    Importante
    • O número de nós rotulados deve ser maior ou igual ao número de pods. Se a quantidade de nós rotulados for menor que o número de pods do controlador, alguns pods podem falhar na implantação.

    • Caso esteja usando um cluster dedicado ACK, não adicione rótulos aos nós Master.

    kubectl label nodes cn-shanghai.********.226 cn-shanghai.********.230 node-role.kubernetes.io/ingress="true"

    Saída esperada:

    node/cn-shanghai.********.226 labeled
    node/cn-shanghai.********.230 labeled
  3. Execute o comando a seguir para atualize o deployment usado pelo Nginx Ingress Controller. Adicione a configuração nodeSelector para garantir que os pods do controlador sejam implantados apenas em nós com o rótulo node-role.kubernetes.io/ingress="true".

    kubectl -n kube-system patch deployment nginx-ingress-controller -p '{"spec": {"template": {"spec": {"nodeSelector": {"node-role.kubernetes.io/ingress": "true"}}}}}'

    Saída esperada:

    deployment.extensions/nginx-ingress-controller patched
  4. Execute o comando a seguir para visualizar os pods de Ingress implantados nos nós do cluster com o rótulo node-role.kubernetes.io/ingress="true".

    kubectl -n kube-system get pod -o wide | grep nginx-ingress-controller

    Saída esperada:

    nginx-ingress-controller-*****nxs     1/1     Running     0      74m     10.1.117.186   cn-shanghai.********.230
    nginx-ingress-controller-*****9pm     1/1     Running     0      74m     10.1.117.172   cn-shanghai.********.226