Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Deploy ASM gateway pods to dedicated nodes

Última atualização: Jun 28, 2026

Quando os pods de gateway do ASM compartilham nós com cargas de trabalho de aplicações, a contenção de recursos pode degradar o desempenho do gateway ou causar falhas de agendamento durante picos de tráfego. Dedicar nós específicos aos pods de gateway isola o tratamento do tráfego de entrada da lógica de negócios, evita a competição por recursos e estabelece uma fronteira de segurança clara.

As etapas a seguir utilizam rótulos de nó, taints e afinidade de nó para fixar os pods de gateway do ASM em nós específicos e impedir que outras cargas de trabalho sejam executadas nesses nós.

Como funciona

O agendamento dedicado combina três mecanismos do Kubernetes:

Mecanismo

Finalidade

Rótulo de nó

Identifica o nó de destino para que as regras de afinidade possam selecioná-lo

Taint

Repele todos os pods sem tolerância correspondente, mantendo outras cargas de trabalho fora do nó

Afinidade de nó + tolerância

Atrai os pods de gateway para o nó rotulado e permite que eles tolerem o taint

Taints e tolerâncias atuam em conjunto para evitar que o sistema agende pods em nós inadequados:

  • Se um pod não tolerar um taint específico, o nó com esse taint não aceitará o pod e bloqueará seu agendamento.

  • Se um pod tolerar um taint específico, ele poderá ser agendado em um nó com o taint correspondente, mas isso não é obrigatório.

Sem o taint, outros pods ainda podem ser alocados no nó rotulado. Sem a afinidade de nó, os pods de gateway podem ser agendados em outros locais. A combinação dos três mecanismos garante que os pods de gateway sejam executados exclusivamente no nó designado.

Pré-requisitos

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

Etapa 1: Rotular o nó de destino

Adicione um rótulo ao nó onde os pods de gateway devem ser executados. O agendador utiliza esse rótulo na regra de afinidade de nó configurada na Etapa 3.

  1. Liste todos os nós no cluster:

       kubectl get nodes
  2. Adicione um rótulo ao nó de destino:

       # Syntax
       kubectl label nodes <node-name> <label-key>=<label-value>
    
       # Example
       kubectl label nodes node1 mykey4pod=asmgateway

    Substitua os seguintes espaços reservados:

    Espaço reservado

    Descrição

    Exemplo

    <node-name>

    Nome do nó de destino obtido na saída de kubectl get nodes

    node1

    <label-key>

    Chave de rótulo personalizada

    mykey4pod

    <label-value>

    Valor de rótulo personalizado

    asmgateway

  3. Verifique o rótulo:

       kubectl get nodes --show-labels | grep mykey4pod

Etapa 2: Aplicar taint ao nó de destino

Aplique um taint ao nó para repelir pods sem tolerância correspondente. Essa ação mantém as cargas de trabalho da aplicação fora do nó dedicado ao gateway.

kubectl taint nodes node1 mykey=myvalue:NoSchedule

Este taint é composto por três elementos:

Componente

Valor

Significado

Chave

mykey

Identifica o taint

Valor

myvalue

Combinado com a chave para formar a identidade do taint

Efeito

NoSchedule

Impede o agendamento de novos pods sem tolerância correspondente neste nó. Pods existentes não são removidos.

Nota

Nota: O Kubernetes suporta três efeitos de taint:

Efeito

Comportamento

NoSchedule

Bloqueia novos pods que não toleram o taint. Os pods existentes permanecem.

PreferNoSchedule

Versão flexível do NoSchedule. O agendador tenta evitar o nó, mas sem garantia absoluta.

NoExecute

Bloqueia novos pods e remove os pods existentes que não toleram o taint.

Para isolamento de nós de gateway, o efeito NoSchedule geralmente é suficiente. Utilize NoExecute caso também precise remover pods existentes que não sejam de gateway do nó.

Etapa 3: Configure afinidade de nó e tolerâncias no gateway do ASM

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.

  3. Na página Ingress Gateway, localize o gateway de destino e clique em YAML.

  4. Na caixa de diálogo Edit, adicione o bloco abaixo ao campo spec e clique em OK.

    Campo

    Descrição

    requiredDuringSchedulingIgnoredDuringExecution

    Regra de afinidade rígida — o agendador aloca pods apenas em nós correspondentes. Use preferredDuringSchedulingIgnoredDuringExecution para uma regra flexível que permita fallback para outros nós.

    matchExpressions.key / values

    Deve corresponder ao rótulo adicionado na Etapa 1 (mykey4pod=asmgateway).

    tolerations.key / value / effect

    Deve corresponder ao taint adicionado na Etapa 2 (mykey=myvalue:NoSchedule).

       affinity:
           nodeAffinity:
             requiredDuringSchedulingIgnoredDuringExecution:
               nodeSelectorTerms:
               - matchExpressions:
                 - key: mykey4pod
                   operator: In
                   values:
                   - asmgateway
         tolerations:
         - key: "mykey"
           operator: "Equal"
           value: "myvalue"
           effect: "NoSchedule"

Etapa 4: Verifique o resultado do agendamento

Confirme se os pods de gateway estão em execução no nó dedicado.

Opção A: Usar kubectl

kubectl get pods -n istio-system -o wide | grep <gateway-name>

A saída será semelhante a:

<gateway-name>-xxx   1/1   Running   0   2m   10.x.x.x   node1   <none>   <none>

A coluna NODE deve exibir node1 (ou o nó rotulado e com taint aplicado).

Opção B: Usar o console do ACK

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

  2. Na página Clusters, localize o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Workloads > Pods.

  3. Na página Pods, selecione istio-system na lista suspensa Namespace.

  4. Verifique a coluna Node referente aos pods de gateway. O valor deve corresponder ao nó configurado.

Próximos passos

  • Para distribuir pods de gateway em vários nós dedicados visando maior disponibilidade, aplique rótulos e taints em nós adicionais e inclua seus rótulos no array matchExpressions.values.

  • Para remover as restrições de agendamento, exclua o rótulo e o taint do nó e remova os blocos affinity e tolerations do YAML do gateway.