Agende os pods do gateway ASM (Alibaba Cloud Service Mesh) em nós específicos do cluster Kubernetes para melhorar a alta disponibilidade e isolar os pods do gateway dos pods de aplicação. Por exemplo, distribua os pods do gateway entre nós em diferentes domínios de falha para garantir redundância ou dedique nós específicos às cargas de trabalho do gateway.
Pré-requisitos
Conceitos principais
A tabela a seguir descreve os conceitos de agendamento do Kubernetes utilizados neste tópico:
|
Conceito |
Descrição |
|
rótulo de nó |
Par chave-valor associado a um nó. Os rótulos de nó marcam os nós para o agendamento de pods. As regras de afinidade de nó referenciam esses rótulos por meio de |
|
taint |
Atributo de chave-valor-efeito aplicado a um nó que o faz repelir pods sem uma tolerância correspondente. Por exemplo, um taint com chave |
|
toleration |
Atributo de chave-valor-efeito aplicado a um pod que permite seu agendamento em um nó com um taint correspondente. Taints e tolerations atuam em conjunto para controlar onde os pods podem ser executados. Cada nó pode ter um ou mais taints aplicados. |
|
afinidade de nó |
Conjunto de regras de agendamento que definem os nós elegíveis para um pod com base nos rótulos de nó. A afinidade de nó suporta dois tipos de regras. Uma regra obrigatória ( |
Etapa 1: Adicionar um rótulo a um nó
Execute o comando a seguir para consultar os nomes dos nós no cluster:
kubectl get nodes
Execute o comando a seguir para adicionar um rótulo ao nó de destino:
# Command format
kubectl label nodes <node-name> <label-key>=<label-value>
# Example
kubectl label nodes node1 mykey4pod=asmgateway
Etapa 2: Adicionar um taint a um nó
Execute o comando a seguir para aplicar um taint a um nó:
kubectl taint nodes node1 mykey=myvalue:NoSchedule
Esse comando aplica um taint ao nó chamado node1. O taint possui a chave mykey, o valor myvalue e o efeito NoSchedule. Somente pods com uma tolerância correspondente poderão ser agendados no nó node1.
Etapa 3: Configure afinidade de nó e tolerações para o gateway ASM
Configure o parâmetro nodeAffinity para distribuir os pods do gateway ASM nos nós especificados. Defina também o parâmetro tolerations para corresponder ao taint criado na Etapa 2 e permitir o agendamento dos pods do gateway nos nós desejados.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em no nome da instância ASM. No painel de navegação à esquerda, escolha .
No lado direito da página Ingress Gateway, clique em View YAML do gateway de destino.
-
Na caixa de diálogo Edit, adicione o conteúdo a seguir sob o campo
spece clique em OK.affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: mykey4pod operator: In values: - asmgateway tolerations: - key: "mykey" operator: "Equal" value: "myvalue" effect: "NoSchedule" -
Verifique se os pods do gateway estão em execução nos nós esperados.
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em no nome do cluster. No painel de navegação à esquerda, clique em .
No topo da página Pods, selecione o namespace istio-system e confirme se os pods do gateway estão em execução nos nós corretos.
Se os pods do gateway estiverem em execução nos nós de destino, a configuração de afinidade de nó e tolerações para o gateway ASM foi concluída com sucesso.