Posted July 14, 20231 yr 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 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 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. 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 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.