Configurar a rede CNI do Azure para alocação dinâmica de IPs e suporte avançado à sub-rede no AKS (Serviço de Kubernetes do Azure)
Uma desvantagem do CNI tradicional é o esgotamento de endereços IP de pods à medida que o cluster do AKS cresce, resultando na necessidade de recriar o cluster inteiro em uma sub-rede maior. A nova capacidade de alocação de IP dinâmico no CNI do Azure resolve esse problema alocando IPs de pods de uma sub-rede separada da sub-rede que hospeda o cluster do AKS.
Ele oferece os seguintes benefícios:
- Melhor utilização de IPs: os IPs são alocados dinamicamente para os pods do cluster da sub-rede de pods. Isso leva a uma melhor utilização de IPs no cluster em comparação com a solução CNI tradicional, que faz a alocação estática de IPs para cada nó.
- Escalonável e flexível: as sub-redes de nó e de pods podem ser dimensionadas de forma independente. Uma única sub-rede de pods pode ser compartilhada entre vários pools de nós de um cluster ou em vários clusters do AKS implantados na mesma VNet. Você também pode configurar uma sub-rede de pods separada para um pool de nós.
- Alto desempenho: como pods são atribuídos a IPs de rede virtual, eles têm conectividade direta com outros recursos e pods de clusters na VNet. A solução dá suporte a clusters muito grandes sem degradação no desempenho.
- Políticas de VNet separadas para pods: como os pods têm uma sub-rede separada, você pode configurar para eles políticas de VNet separadas que são diferentes das políticas de nós. Isso permite muitos cenários úteis, como permitir a conectividade com a Internet apenas para pods e não para nós, corrigindo o IP de origem para o pod em um pool de nós usando um Gateway da NAT do Azure e usando NSGs para filtrar o tráfego entre pools de nós.
- Políticas de rede do Kubernetes: as políticas de rede do Azure e do Calico funcionam com essa nova solução.
Este artigo mostra como usar a rede CNI do Azure para alocação dinâmica de IPs e suporte avançado à sub-rede no AKS.
Pré-requisitos
Examine os pré-requisitos para configurar a rede básica da CNI do Azure no AKS, pois os mesmos pré-requisitos se aplicam a este artigo.
Examine os parâmetros de implantação para configurar a rede básica de CNI do Azure no AKS, conforme os mesmos parâmetros se aplicam.
Não há suporte para os clusters do mecanismo do AKS e do tipo DIY.
CLI do Azure versão
2.37.0
ou posterior.Se você tiver um cluster existente, precisará habilitar o Container Insights para monitorar o uso da sub-rede IP. Você pode habilitar o Container Insights usando o comando
az aks enable-addons
, conforme mostrado no exemplo a seguir:az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
planejar o endereçamento IP
Planejar seu endereçamento IP é muito mais simples com esse recurso. Como os nós e os pods são dimensionados de forma independente, seus espaços de endereço também podem ser planejados separadamente. Como as sub-redes dos pods podem ser configuradas de acordo com a granularidade de um pool de nós, você sempre pode adicionar /uma nova sub-rede quando adiciona um pool de nós. O pods do sistema em um cluster/pool de nós também recebem IPs da sub-rede de pods, portanto, esse comportamento precisa ser considerado.
Os IPs são alocados a nós em lotes de 16. A alocação de IP da sub-rede do pod deve ser planejada com um mínimo de 16 IPs por nó no cluster; os nós solicitarão 16 IPs na inicialização e outro lote de 16 sempre que houver <8 IPs não alocados em seu lote.
O planejamento de IPs para os serviços Kubernetes e a ponte Docker permanecem inalterados.
Para exibir e verificar os recursos NNC (NodeNetworkConfiguration) responsáveis por essas alocações de IP, você pode executar o seguinte comando:
kubectl get nodenetworkconfigs -n kube-system -o wide
Máximo de pods por nó em um cluster com alocação dinâmica de IPs e suporte de sub-rede avançado
Os valores de pods por nó ao usar o CNI do Azure com alocação dinâmica de IPs diferem ligeiramente em relação ao comportamento tradicional de CNI:
CNI | Padrão | Configurável na implantação |
---|---|---|
CNI tradicional do Azure | 30 | Sim (até 250) |
CNI do Azure com alocação dinâmica de IPs | 250 | Sim (até 250) |
Todas as outras orientações relacionadas à configuração do máximo de pods por nós permanecem as mesmas.
Parâmetros de implantação
Os parâmetros de implantação para configurar a rede básica de CNI do Azure no AKS são válidos, com duas exceções:
- O parâmetro subnet agora se refere à sub-rede relacionada aos nós do cluster.
- Uma parâmetro adicional pod subnet é usado para especificar a sub-rede cujos endereços IP serão alocados dinamicamente para pods.
Configurar a rede com a alocação dinâmica de IPs e suporte de sub-rede avançado – CLI do Azure
Usar a alocação dinâmica de IPs e o suporte de sub-rede avançado em seu cluster é semelhante a usar o método padrão para configurar um cluster do CNI do Azure. O exemplo a seguir orienta a criação de uma nova rede virtual com uma sub-rede para nós e uma sub-rede para pods e a criação de um cluster que usa o CNI do Azure com alocação dinâmica de IPs e suporte de sub-rede avançado. Certifique-se de substituir variáveis como $subscription
com seus valores.
Crie uma rede virtual com duas sub-redes.
RESOURCE_GROUP_NAME="myResourceGroup"
VNET_NAME="myVirtualNetwork"
LOCATION="westcentralus"
SUBNET_NAME_1="nodesubnet"
SUBNET_NAME_2="podsubnet"
# Create the resource group
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
# Create our two subnet network
az network vnet create --resource-group $RESOURCE_GROUP_NAME --location $LOCATION --name $VNET_NAME --address-prefixes 10.0.0.0/8 -o none
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_1 --address-prefixes 10.240.0.0/16 -o none
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_2 --address-prefixes 10.241.0.0/16 -o none
Crie o cluster, referenciando a sub-rede do nó usando --vnet-subnet-id
e a sub-rede do pod usando --pod-subnet-id
e ativando o complemento de monitoramento.
CLUSTER_NAME="myAKSCluster"
SUBSCRIPTION="aaaaaaa-aaaaa-aaaaaa-aaaa"
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--max-pods 250 \
--node-count 2 \
--network-plugin azure \
--vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_1 \
--pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_2 \
--enable-addons monitoring \
--generate-ssh-keys
Adicionar pool de nós
Ao adicionar um pool de nós, faça referência à sub-rede de nós usando --vnet-subnet-id
e a sub-rede de pods usando --pod-subnet-id
. O exemplo a seguir cria duas novas sub-redes que são referenciadas na criação de um novo pool de nós:
SUBNET_NAME_3="node2subnet"
SUBNET_NAME_4="pod2subnet"
NODE_POOL_NAME="mynodepool"
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_3 --address-prefixes 10.242.0.0/16 -o none
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_4 --address-prefixes 10.243.0.0/16 -o none
az aks nodepool add --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --name $NODE_POOL_NAME \
--max-pods 250 \
--node-count 2 \
--vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_3 \
--pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_4 \
--no-wait
Monitorar o uso da sub-rede IP
A CNI do Azure oferece a capacidade de monitorar o uso da sub-rede IP. Para habilitar o monitoramento de uso da sub-rede IP, siga as etapas abaixo:
Obter o arquivo YAML
Baixe ou execute grep do arquivo chamado container-azm-ms-agentconfig.yaml do GitHub.
Encontrar
azure_subnet_ip_usage
em integrações. Definaenabled
comotrue
.Salve o arquivo.
Obter as credenciais do AKS
Defina as variáveis para assinatura, grupo de recursos e cluster. Considere as seguintes opções como exemplos:
az account set --subscription $SUBSCRIPTION
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
Aplicar a configuração
- Abra o terminal na pasta em que o arquivo container-azm-ms-agentconfig.yaml baixado está salvo.
- Aplique a configuração usando o comando
kubectl apply -f container-azm-ms-agentconfig.yaml
. Esse procedimento reiniciará o pod e, após cinco a dez minutos, as métricas ficarão visíveis. - Veja as métricas no cluster navegando até Pastas de Trabalho na página do cluster no portal do Azure e localize a pasta de trabalho chamada Uso de IP da sub-rede.
Perguntas frequentes sobre alocação dinâmica de IPs e suporte de sub-rede avançado
Posso atribuir várias sub-redes de pods a um cluster/pool de nós?
Somente uma sub-rede pode ser atribuída a um cluster ou pool de nós. No entanto, vários clusters ou pools de nós podem compartilhar uma única sub-rede.
Posso atribuir sub-redes de pods de uma VNet diferente?
Não, a sub-rede de pods deve ser da mesma VNet que o cluster.
Alguns pools de nós podem usar o CNI tradicional enquanto outros usam o novo CNI?
O cluster inteiro deve usar apenas um tipo de CNI.
Próximas etapas
Saiba mais sobre a rede no AKS nos seguintes artigos:
Azure Kubernetes Service