Configurar a rede de Sobreposição de CNI do Azure no AKS (Serviço de Kubernetes do Azure)

Este artigo explica o processo de configuração, a configuração de rede de pilha dupla e uma implantação de carga de trabalho de exemplo para o Azure CNI Overlay em clusters do Serviço de Kubernetes do Azure (AKS). Para obter uma visão geral da rede de sobreposição de CNI do Azure, consulte Visão geral da rede de sobreposição de CNI do Azure no AKS (Serviço de Kubernetes do Azure).

Importante

A partir de 30 de novembro de 2025, o AKS (Serviço de Kubernetes do Azure) não dá mais suporte ou fornece atualizações de segurança para o Azure Linux 2.0. A imagem do nó do Azure no Linux 2.0 foi congelada na versão 202512.06.0. A partir de 31 de março de 2026, as imagens dos nós serão removidas e você não poderá dimensionar os pools de nós. Migre para uma versão do Azure Linux com suporte atualizando os pools de nós para uma versão do Kubernetes com suporte ou migrando para o osSku AzureLinux3. Para obter mais informações, consulte o problema de desativação do GitHub e o anúncio de desativação do Azure Updates. Para se manter informado sobre anúncios e atualizações, acompanhe as notas de lançamento do AKS.

Pré-requisitos

Para rede de pilha dupla, use uma versão do Kubernetes com suporte no AKS disponível em sua região.

Parâmetros principais para clusters AKS com Overlay de CNI do Azure

A tabela a seguir descreve os principais parâmetros para configurar a rede de sobreposição de CNI do Azure em clusters do AKS:

Parâmetro Description
--network-plugin Defina como azure para usar a rede CNI (Interface de Rede de Contêiner do Azure).
--network-plugin-mode Defina para overlay para habilitar a rede de sobreposição do CNI do Azure. Essa configuração se aplica somente quando --network-plugin=azure.
--pod-cidr Especifique um bloco personalizado de roteamento entre domínios sem classe (CIDR) para o cluster. O padrão é 10.244.0.0/16.

O comportamento padrão para plug-ins de rede depende de você definir --network-pluginexplicitamente:

  • Se você não especificar --network-plugin, o AKS adotará como padrão o Overlay do CNI do Azure.
  • Se você especificar --network-plugin=azure e omitir --network-plugin-mode, o AKS usará intencionalmente o modo de rede virtual (sub-rede de nós) para compatibilidade retroativa.

Criar um cluster AKS CNI Overlay do Azure

Crie um cluster AKS de sobreposição de CNI do Azure ao usar o comando az aks create com --network-plugin=azure e --network-plugin-mode=overlay. Se você não especificar um valor para --pod-cidr, o AKS atribuirá o valor padrão de 10.244.0.0/16.

az aks create \
  --name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $REGION \
  --network-plugin azure \
  --network-plugin-mode overlay \
  --pod-cidr 192.168.0.0/16 \
  --generate-ssh-keys

Adicionar um novo pool de nós a uma sub-rede dedicada

Adicione um pool de nós a uma sub-rede diferente dentro da mesma rede virtual para controlar os endereços IP dos nós da máquina virtual (VM) para o tráfego de rede para recursos da rede virtual ou da rede virtual emparelhada.

Adicione um novo pool de nós ao cluster usando o az aks nodepool add comando e especifique a ID do recurso de sub-rede com o --vnet-subnet-id parâmetro. Por exemplo:

az aks nodepool add \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NODE_POOL_NAME \
  --node-count 1 \
  --mode system \
  --vnet-subnet-id $SUBNET_RESOURCE_ID

Sobre a sobreposição de CNI do Azure AKS com rede dual-stack

Você pode implantar seus clusters AKS de sobreposição CNI do Azure em um modo de pilha dupla com uma rede virtual do Azure. Nessa configuração, os nós recebem um endereço IPv4 e IPv6 da sub-rede da rede virtual do Azure. Os pods recebem um endereço IPv4 e IPv6 de um espaço de endereço diferente daquele da sub-rede da rede virtual do Azure onde os nós estão localizados. A NAT (conversão de endereços de rede) é configurada para que os pods possam acessar recursos na rede virtual do Azure. O endereço IP de origem do tráfego é NAT'd para o endereço IP primário do nó de VM da mesma família (IPv4 para IPv4 e IPv6 para IPv6).

Observação

Você também pode implantar clusters de rede de pilha dupla ao usar o CNI do Azure alimentado pelo Cilium. Para obter mais informações, confira Rede de pilha dupla com CNI do Azure impulsionada por Cilium.

Limitações da rede com pilha dupla

Não há suporte para os recursos a seguir com rede de pilha dupla:

Parâmetros de chave para rede de pilha dupla

A tabela a seguir descreve os principais parâmetros para configurar a rede dual-stack em clusters AKS com sobreposição CNI do Azure.

Parâmetro Description
--ip-families Usa uma lista separada por vírgulas de famílias IP para habilitar no cluster. Somente ipv4 e ipv4,ipv6 são suportados.
--pod-cidrs Usa uma lista separada por vírgulas de intervalos de IP em notação Roteamento de domínio interno sem classe (CIDR) para atribuir endereços IPs do pod. A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido para --ip-families. Se você não fornecer nenhum valor, o parâmetro usará o valor padrão de 10.244.0.0/16,fd12:3456:789a::/64.
--service-cidrs Usa uma lista de intervalos de endereços IP em notação CIDR, separados por vírgulas, para atribuir IPs de serviço. A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido para --ip-families. Se você não fornecer nenhum valor, o parâmetro usará o valor padrão de 10.0.0.0/16,fd12:3456:789a:1::/108. A sub-rede IPv6 atribuída --service-cidrs não pode ser maior que /108.

Criar uma pilha dupla Azure cluster aks de sobreposição de CNI (Linux)

  1. Crie um grupo de recursos do Azure para o cluster usando o az group create comando:

    az group create --location $REGION --name $RESOURCE_GROUP
    
  2. Crie um cluster AKS dual-stack usando o comando az aks create com o parâmetro --ip-families definido como ipv4,ipv6:

    az aks create \
      --location $REGION \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME \
      --network-plugin azure \
      --network-plugin-mode overlay \
      --ip-families ipv4,ipv6 \
      --generate-ssh-keys
    

Criar um cluster aks de sobreposição de CNI de Azure de pilha dupla (Windows)

  1. Crie um cluster com o Azure CNI Overlay usando o comando az aks create.

    az aks create \
      --name $CLUSTER_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $REGION \
      --network-plugin azure \
      --network-plugin-mode overlay \
      --ip-families ipv4,ipv6 \
      --generate-ssh-keys
    
  2. Adicione um pool de nós do Windows ao cluster usando o az aks nodepool add comando:

    az aks nodepool add \
      --resource-group $RESOURCE_GROUP \
      --cluster-name $CLUSTER_NAME \
      --os-type Windows \
      --name $WINDOWS_NODE_POOL_NAME \
      --node-count 2
    

Implantar uma carga de trabalho de exemplo no cluster AKS de sobreposição do CNI do Azure

Implante clusters de sobreposição CNI do AKS em modo dual stack com endereços IPv4/IPv6 em nós de máquinas virtuais. Este exemplo implanta um servidor Web NGINX e o expõe usando um LoadBalancer serviço com endereços IPv4 e IPv6.

Antes de expor a carga de trabalho, verifique se uma implantação NGINX está em execução no cluster. Se você ainda não tiver uma, crie a implantação e aguarde até que ela esteja pronta usando os seguintes comandos:

kubectl create deployment nginx --image=nginx
kubectl rollout status deployment/nginx

Observação

É recomendável usar o complemento de roteamento de aplicativos para entrada em clusters do AKS. No entanto, para fins de demonstração, este exemplo implanta um servidor Web NGINX sem o complemento de roteamento de aplicativos. Para obter mais informações sobre o complemento, consulte a entrada NGINX gerenciada com o complemento de roteamento de aplicativos.

Expor a carga de trabalho usando um serviço LoadBalancer

Exponha a implantação do NGINX usando kubectl comandos ou manifestos YAML.

Esta seção pressupõe que uma implantação NGINX nomeada nginx esteja em execução em seu cluster. Para verificar se a implantação existe e está pronta, execute kubectl get deployment nginx e confirme se a coluna READY mostra todas as réplicas desejadas como prontas.

Importante

Atualmente, há duas limitações que pertencem aos serviços IPv6 no AKS:

  • Azure Load Balancer envia investigações de integridade para destinos IPv6 de um endereço de link local. Nos pools de nós do Linux do Azure, você não pode rotear esse tráfego para um pod, portanto, o tráfego que flui para os serviços IPv6 implantados com externalTrafficPolicy: Cluster falha.
  • Você deve implantar serviços IPv6 com externalTrafficPolicy: Local, o que faz com que kube-proxy responda à sondagem no nó.
  1. Exponha a implantação do NGINX usando o kubectl expose deployment nginx comando. O primeiro comando cria um serviço IPv4 LoadBalancer . O segundo comando cria um serviço IPv6 LoadBalancer e usa o --overrides JSON para ipFamilies definir IPv6 e o necessário externalTrafficPolicy paraLocal:

    kubectl expose deployment nginx --name=nginx-ipv4 --port=80 --type=LoadBalancer
    kubectl expose deployment nginx --name=nginx-ipv6 --port=80 --type=LoadBalancer --overrides='{"spec":{"externalTrafficPolicy":"Local","ipFamilies":["IPv6"]}}'
    

    Sua saída deve mostrar os serviços expostos. Por exemplo:

    service/nginx-ipv4 exposed
    service/nginx-ipv6 exposed
    
  2. Depois que a implantação for exposta e os LoadBalancer serviços forem totalmente provisionados, obtenha os endereços IP dos serviços usando o kubectl get services comando:

    kubectl get services
    

    Sua saída deve mostrar os serviços com seus endereços IP atribuídos. Por exemplo:

    NAME         TYPE           CLUSTER-IP               EXTERNAL-IP         PORT(S)        AGE
    nginx-ipv4   LoadBalancer   10.0.88.78               20.46.24.24         80:30652/TCP   97s
    nginx-ipv6   LoadBalancer   fd12:3456:789a:1::981a   2603:1030:8:5::2d   80:32002/TCP   63s
    
  3. Obtenha o IP do serviço usando o comando e defina-o kubectl get services como uma variável de ambiente:

    O comando usa a expressão {.status.loadBalancer.ingress[0].ip} JSONPath para extrair o endereço IP externo da primeira entrada no campo de entrada do balanceador de carga do serviço e armazena-o na SERVICE_IP variável.

    SERVICE_IP=$(kubectl get services nginx-ipv6 -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  4. Verifique a funcionalidade usando uma curl solicitação de um host compatível com IPv6. (O Azure Cloud Shell não é compatível com IPv6.)

    curl -s "http://[${SERVICE_IP}]" | head -n5
    

    Sua saída deve mostrar o HTML para a página de boas-vindas do NGINX. Por exemplo:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
    

Para saber mais sobre a rede de sobreposição de CNI do Azure no AKS, consulte os seguintes artigos: