Configurar a rede do Azure CNI para alocação dinâmica de IPs e suporte de sub-rede melhorado no Azure Kubernetes Service (AKS)
Uma desvantagem com a CNI tradicional é o esgotamento dos endereços IP do pod à medida que o cluster AKS cresce, o que resulta na necessidade de reconstruir todo o cluster em uma sub-rede maior. O novo recurso de alocação de IP dinâmico no Azure CNI resolve esse problema alocando IPs de pod de uma sub-rede separada da sub-rede que hospeda o cluster AKS.
Oferece os seguintes benefícios:
- Melhor utilização de IP: os IPs são alocados dinamicamente para Pods de cluster a partir da sub-rede do Pod. Isso leva a uma melhor utilização de IPs no cluster em comparação com a solução CNI tradicional, que faz alocação estática de IPs para cada nó.
- Escalável e flexível: as sub-redes de nós e pods podem ser dimensionadas de forma independente. Uma única sub-rede de pod pode ser compartilhada entre vários pools de nós de um cluster ou entre vários clusters AKS implantados na mesma VNet. Você também pode configurar uma sub-rede de pod separada para um pool de nós.
- Alto desempenho: Como os pods recebem IPs de rede virtual, eles têm conectividade direta com outros pods de cluster e recursos na rede virtual. A solução suporta clusters muito grandes sem qualquer degradação no desempenho.
- Políticas de VNet separadas para pods: como os pods têm uma sub-rede separada, você pode configurar políticas de VNet separadas para eles que são diferentes das políticas de nó. Isso permite muitos cenários úteis, como permitir conectividade com a Internet apenas para pods e não para nós, corrigir o IP de origem para pod em um pool de nós usando um Gateway NAT do Azure e usar 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 o Calico funcionam com esta nova solução.
Este artigo mostra como usar a rede CNI do Azure para alocação dinâmica de IPs e suporte aprimorado de sub-rede no AKS.
Pré-requisitos
Analise os pré-requisitos para configurar a rede CNI básica do Azure no AKS, pois os mesmos pré-requisitos se aplicam a este artigo.
Analise os parâmetros de implantação para configurar a rede CNI básica do Azure no AKS, pois os mesmos parâmetros se aplicam.
O mecanismo AKS e os clusters DIY não são suportados.
Versão da CLI
2.37.0
do Azure 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
az aks enable-addons
comando, conforme mostrado no exemplo a seguir:az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
Planear o endereçamento IP
Planejar seu endereço IP é muito mais simples com esse recurso. Como os nós e pods são dimensionados de forma independente, seus espaços de endereço também podem ser planejados separadamente. Como as sub-redes pod podem ser configuradas para a granularidade de um pool de nós, você sempre pode adicionar uma nova sub-rede ao adicionar um pool de nós. Os pods do sistema em um pool de cluster/nó também recebem IPs da sub-rede do pod, portanto, esse comportamento precisa ser considerado.
Os IPs são alocados aos 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; nós solicitarão 16 IPs na inicialização e solicitarão outro lote de 16 sempre que houver <8 IPs não alocados em sua alocação.
O planejamento de IPs para serviços Kubernetes e ponte Docker permanecem inalterados.
Para exibir e verificar os recursos NodeNetworkConfiguration (NNC) 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 aprimorado a sub-redes
Os valores de pods por nó ao usar o Azure CNI com alocação dinâmica de IPs diferem ligeiramente do comportamento CNI tradicional:
CNI | Predefinido | Configurável na implantação |
---|---|---|
CNI tradicional do Azure | 30 | Sim (até 250) |
Azure CNI 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ó permanecem as mesmas.
Parâmetros de implantação
Os parâmetrosde implantação para configurar a rede CNI básica do Azure no AKS são todos válidos, com duas exceções:
- O parâmetro subnet agora se refere à sub-rede relacionada aos nós do cluster.
- Um parâmetro adicional pod subnet é usado para especificar a sub-rede cujos endereços IP serão dinamicamente alocados para pods.
Configurar a rede com alocação dinâmica de IPs e suporte avançado a sub-redes - Azure CLI
Usar a alocação dinâmica de IPs e o suporte avançado de sub-rede em seu cluster é semelhante ao método padrão para configurar um cluster Azure CNI. O exemplo a seguir mostra como criar uma nova rede virtual com uma sub-rede para nós e uma sub-rede para pods e criar um cluster que usa o Azure CNI com alocação dinâmica de IPs e suporte aprimorado a sub-redes. Certifique-se de substituir variáveis como por seus $subscription
próprios valores.
Crie a 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, fazendo referência à sub-rede do nó usando --vnet-subnet-id
e à sub-rede do pod usando --pod-subnet-id
e habilitando 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
Adicionando pool de nós
Ao adicionar o pool de nós, faça referência à sub-rede do nó usando --vnet-subnet-id
e à sub-rede do pod usando --pod-subnet-id
o . 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
O Azure CNI fornece a capacidade de monitorar o uso da sub-rede IP. Para habilitar o monitoramento de uso de sub-rede IP, siga as etapas abaixo:
Obter o arquivo YAML
Baixe ou grep o arquivo chamado container-azm-ms-agentconfig.yaml do GitHub.
Encontre
azure_subnet_ip_usage
em integrações. Definaenabled
comotrue
.Guarde o ficheiro.
Obter as credenciais do AKS
Defina as variáveis para assinatura, grupo de recursos e cluster. Considere o seguinte 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 na qual o arquivo container-azm-ms-agentconfig.yaml baixado é salvo.
- Aplique a configuração usando o
kubectl apply -f container-azm-ms-agentconfig.yaml
comando. Isso reiniciará o pod e, após 5-10 minutos, as métricas estarão visíveis. - Exiba 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 endereços IP e suporte de sub-rede aprimorado
Posso atribuir várias sub-redes pod a um pool de clusters/nós?
Apenas 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 Pod de uma VNet diferente?
Não, a sub-rede do pod deve ser da mesma VNet que o cluster.
Alguns pools de nós em um cluster podem usar a CNI tradicional, enquanto outros usam a nova CNI?
Todo o cluster deve usar apenas um tipo de CNI.
Próximos passos
Saiba mais sobre redes no AKS nos seguintes artigos:
Azure Kubernetes Service