Jump to content

Featured Replies

Posted

O Plugin de rede CNI usado nos ambientes produtivos requer um bom planejamento para os clusters do Azure Kubernetes Services (AKS) para evitar que a exaustão de endereços IP fornecidos pela sub-rede do cluster devido ao crescimento do ambiente, tendo a necessidade de recriar o cluster para atender a essa demanda.

 

Este artigo irá passar sobre este cenário que encontramos em muitos ambientes produtivos, com a possibilidade de adicionar um novo bloco de endereçamento IP da rede virtual do AKS e dedicá-la para um conjunto de nodepool.

 

 

 

Introdução

 

Um aspecto importante na arquitetura de um cluster do Azure Kubernetes Services (AKS) é relacionado ao seu planejamento de conectividade de rede e segurança. Dentro deste planejamento a escolha do modelo de rede entre CNI ou Kubelet é um fator essencial para a administração do cluster.

 

Uma breve explicação entre os dois modos de rede no AKS:

 

 

 

Azure CNI

 

Plugin indicado para ambientes produtivos, requer um planejamento adequado, pois requer uma rede virtual e sub-rede para alocações dos nodes e pods do cluster AKS.

 

Pontos importantes sobre a CNI:

 

  • Cada node e pod recebe um endereço IP na rede virtual do Azure, sem necessidade de roteamento extra para se comunicar com outros serviços ou recursos.
  • A sub-rede deve ser grande o suficiente para fornecer endereços IP para cada node, pods e garantir nodes adicionais para escala e upgrade do cluster.
  • Cada node tem um parâmetro de configuração para o número máximo de pods aos quais ele dá suporte, portanto a quantidade de endereçamento IP é reservada antecipadamente na sub-rede para uso no cluster.

 

Importante!

 

O uso do plugin CNI Azure requer planejamento para não levar à exaustão de endereço IP ou à necessidade de recriar o cluster para uma nova sub-rede.

 

 

 

Azure Kubelet

 

Opção de rede usando kubelet é considerada modelo básico padrão para clusters do AKS

 

Pontos importantes:

 

  • Os Nodes recebem endereçamento IP da sub-rede virtual do Azure.
  • Os Pods recebem endereçamento IP de outro bloco de endereço diferente da rede virtual.
  • Tráfego entre Pods e Nodes usando roteamento extra através de UDR pode reduzir o desempenho da rede.
  • NAT é configurado para que os Pods possam alcançar recursos na rede virtual.
  • Conexões com as redes locais existentes ou entre peering com outras redes virtuais podem ser tornar complexas.

 

Quando considerar o uso do plugin kubelet:

 

  • Workloads pequenos, ambientes de teste ou desenvolvimento.
  • Sites simples com baixo tráfego.

 

Cenário

 

Temos um cluster AKS com dois nodepool sendo um de system e outro de user conforme a ilustração abaixo.

 

Para saber mais sobre a diferença entre node system e user system recomendo a leitura da documentação Use system node pools in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn

 

largevv2px999.png.5eea797e2d84f4f9bf4bbdd83789bba5.png

 

 

 

O cluster está alocado em uma rede virtual com o bloco de endereço 10.200.0.0/23 e uma única sub-rede no qual está ocupando todo o endereçamento IP.

 

largevv2px999.png.5061d2186d45481e19cd0d8e9a5ba413.png

 

 

 

Adicionar um novo nodepool para uma sub-rede dedicada

 

Uma aplicação dentro do AKS pode exigir que os nodes de um cluster sejam divididos em nodepools separados para isolamento lógico. Essa separação também pode se beneficiar com o suporte de sub-redes dedicadas a cada nodepool o que também atende a necessidade de maior alocação de endereço IP usando CNI.

 

Primeira Etapa:

 

Adicionar novo bloco de endereço IP na rede virtual e criar a sub-rede correspondente.

 

 

 

largevv2px999.png.3d99e73d3e7cd415bc70eef4000698db.png

 

 

 

largevv2px999.png.bc5c7dd06ea06d98af2401f75e05eda8.png

 

 

 

Segunda etapa:

 

Iremos usar a CLI para adição do novo nodepool na sub-rede SNT-AKS-2

 

Importante!

 

Valide a versão do AZ CLI está na versão 2.35.0 ou acima

 

 

 

Encontrar o ID da Subnet

 

 

 

 

 

 

 

# az network vnet subnet show -g AKS-PRD-BR -n SNT-AKS-2 --vnet-name VNET-AKS-PRD-BR

{

"addressPrefix": "10.100.0.0/24",

"addressPrefixes": null,

"applicationGatewayIpConfigurations": null,

"delegations": [],

"etag": "W/\"6c3026f7-0a21-4fd6-af97-d9eb41c1ef3b\"",

"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/AKS-PRD-BR/providers/Microsoft.Network/virtualNetworks/VNET-AKS-PRD-BR/subnets/SNT-AKS-2",

"ipAllocations": null,

"ipConfigurationProfiles": null,

"ipConfigurations": null,

 

 

 

 

 

 

 

 

 

 

 

 

A saída do comando copie a linha correspondente ao seu SubnetID

 

 

 

Verificar os nodes do cluster

 

 

 

 

 

 

 

# kubectl get node -o wide

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP

aks-agentpool-41582112-vmss000000 Ready agent 45m v1.24.9 10.200.0.53

aks-prdnode01-41582112-vmss000000 Ready agent 45m v1.24.9 10.200.0.4

 

 

 

 

 

 

 

 

 

 

 

 

Na saída do comando visualizamos os nodes "agentpool" e "prdnode01" recebendo endereçamento IP do bloco 10.200.0.0/23

 

 

 

Adicionar nodepool prdnode02 na sub-rede SNT-AKS-2

 

Como adicionados um novo bloco de endereço IP na rede virtual devemos atualizar o cluster com o comando "az aks update -g <resourceGroup> -n <clusterName>" sem argumentos opcionais. Esse comando executará uma operação de atualização sem fazer nenhuma alteração.

 

Para mais informações veja a documentação Use multiple node pools in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn

 

 

 

 

 

 

 

az aks update -g AKS-PRD-BR -n aks-prd-br-01

 

 

 

 

 

 

 

 

 

Após execução do comando az aks update, execute o bloco de comandos abaixo para adicionar o novo nodepool na sub-rede dedicada.

 

 

 

 

 

 

 

az aks nodepool add \

--resource-group AKS-PRD-BR \

--cluster-name aks-prd-br-01 \

--name prdnode02 \

--node-count 2 \

--vnet-subnet-id /subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/AKS-PRD-BR/providers/Microsoft.Network/virtualNetworks/VNET-AKS-PRD-BR/subnets/SNT-AKS-2

 

 

 

 

 

 

 

 

 

 

Após a execução do comando podemos visualizar novamente os nodes do cluster AKS.

 

 

 

 

 

 

 

kubectl get nodes -o wide

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP

aks-agentpool-41582112-vmss000000 Ready agent 83m v1.24.9 10.200.0.53

aks-prdnode01-41582112-vmss000000 Ready agent 83m v1.24.9 10.200.0.4

aks-prdnode02-14816076-vmss000000 Ready agent 3m31s v1.24.9 10.100.0.4

aks-prdnode02-14816076-vmss000001 Ready agent 3m34s v1.24.9 10.100.0.33

 

 

 

 

 

 

 

 

 

 

Adicionados um novo nodepool "prdnode02" com duas instancias e visualizamos que estes novos nodes recebem endereço IP da sub-rede dedicada 10.100.0.0/24.

 

 

 

Verificando as informações pelo portal.

 

largevv2px999.png.4b3bac41c8806e41533836539a196001.png

 

 

 

Tela do Azure mostrando o novo nodepool criado.

 

largevv2px999.png.bcc41e33c946cc7824444584ed3a742e.png

 

 

 

Tela do Azure com as propriedades do novo nodepool, visualizamos em qual sub-rede os nodes estão associados.

 

 

 

Conclusão

 

Neste artigo vimos como podemos adicionar um novo nodepool de um cluster do AKS em uma sub-rede dedicada em cenários nos quais os clientes precisam isolamento lógico dos nodes em sub-redes separadas ou resolver problemas de exaustão de endereçamento IP sem a necessidade de recriar o cluster.

 

Atualização do diagrama com a adição do novo nodepool em uma subre-rede dedicada.

 

largevv2px999.png.8da45f544739f4c7e36a0ca8e54fdb99.png

 

 

 

Referências

 

Use multiple node pools in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn

 

Concepts - Networking in Azure Kubernetes Services (AKS) - Azure Kubernetes Service | Microsoft Learn

 

Configure Azure CNI networking in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn

 

Best practices for network resources in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn

 

Continue reading...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...