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:
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:
Quando considerar o uso do plugin kubelet:
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
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.
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.
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 Lea...
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.
Tela do Azure mostrando o novo nodepool criado.
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.
Referências
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.