Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você pode implantar seus clusters AKS em um modo de pilha dupla ao usar uma rede virtual do Azure de pilha dupla. Nessa configuração, os nós recebem um endereço IPv4 e IPv6 da sub-rede de rede virtual do Azure. Os pods recebem um endereço IPv4 e IPv6 de um espaço de endereços logicamente diferente do da sub-rede de rede virtual do Azure dos nós. A conversão de endereços de rede (NAT) é então configurada para que os pods possam alcançar recursos na rede virtual do Azure. O endereço IP de origem do tráfego é traduzido através de NAT para o endereço IP primário do nó da respetiva família (IPv4 para IPv4 e IPv6 para IPv6).
Este artigo mostra como usar a rede de pilha dupla com um cluster AKS. Para obter mais informações sobre opções de rede e considerações, consulte Conceitos de rede para Kubernetes e AKS.
Importante
A partir de 30 de novembro de 2025, o Azure Kubernetes Service (AKS) deixou de suportar nem fornecer atualizações de segurança para o Azure Linux 2.0. A imagem do nó Azure Linux 2.0 está congelada no 202512.06.0 lançamento. A partir de 31 de outubro de 2026, as imagens dos nós serão removidas e não poderá escalar os seus pools de nós. Migre para uma versão Azure Linux suportada atualizando os seus pools de nós para uma versão Kubernetes suportada ou migrando para o osSku AzureLinux3. Para mais informações, consulte a edição do Retirement GitHub e o anúncio de reforma do Azure Updates. Para se manter informado sobre anúncios e atualizações, siga as notas de lançamento do AKS.
Limitações
- Em pools de nós Azure Linux, os serviços IPv6 requerem
externalTrafficPolicy: Local. - A rede de dual-stack é necessária para a rede virtual do Azure e o pod CIDR.
- Somente IPv6 de pilha única não é suportado para endereços IP de nó ou pod. Os serviços podem ser provisionados em IPv4 ou IPv6.
- O Azure CNI Overlay não suporta políticas de rede Azure ou Calico com rede dual-stack. Para usar políticas de rede, utilize o Azure CNI Powered by Cilium.
- O NAT Gateway Standard suporta apenas IPv4. Para saída dual-stack, use o StandardV2 NAT Gateway. O tipo de saída gerido pelo AKS
managedNATGatewayV2está em pré-visualização. - O add-on de nós virtuais não é suportado com rede dual-stack.
Pré-requisitos
- CLI do Azure versão 2.48.1 ou posterior. Execute
az --versionpara encontrar a versão instalada. Para instalar ou atualizar a CLI do Azure, consulte Instalar CLI do Azure. - Usa uma versão Kubernetes suportada no AKS que esteja disponível na tua região.
Este artigo utiliza o Azure CNI Overlay. Também pode implementar um cluster dual-stack com Azure CNI Powered by Cilium em clusters Linux com o Kubernetes na versão 1.29 ou posterior.
Visão geral da rede de pilha dupla no Kubernetes
O Kubernetes v1.23 traz suporte upstream estável para clusters de pilha dupla IPv4/IPv6, incluindo pod e rede de serviços. Os nós e pods recebem sempre um endereço IPv4 e um endereço IPv6, enquanto os serviços podem ser de pilha dupla ou de pilha única em qualquer família de endereços.
O AKS configura os serviços de suporte necessários para redes de pilha dupla. Esta configuração inclui:
- Se utilizar uma rede virtual gerida, uma configuração de pilha dupla da rede virtual.
- Endereços de IPv4 e IPv6 de nós e pods.
- Regras de saída para tráfego IPv4 e IPv6.
- Configuração do balanceador de carga para serviços IPv4 e IPv6.
Observação
Quando usa rede dual-stack com um tipo de roteamento de saída definido pelo utilizador, pode optar por ter uma rota padrão para IPv6 dependendo se precisa ou não do seu tráfego IPv6 para chegar à internet. Se não tiver uma rota padrão para IPv6, aparece um aviso quando cria um cluster, mas não impede a criação do cluster.
Parâmetros do cluster de pilha dupla
Os seguintes parâmetros suportam clusters de pilha dupla:
| Parâmetro | Valores aceites | Valor predefinido | Restrições |
|---|---|---|---|
--ip-families |
ipv4 ou ipv4,ipv6 |
Não especificado | Forneça uma lista separada por vírgulas de famílias IP para ativar no cluster. |
--pod-cidrs |
Intervalos CIDR separados por vírgulas | 10.244.0.0/16,fd12:3456:789a::/64 |
O número e a ordem dos intervalos devem corresponder a --ip-families. |
--service-cidrs |
Intervalos CIDR separados por vírgulas | 10.0.0.0/16,fd12:3456:789a:1::/108 |
O número e a ordem dos intervalos devem corresponder a --ip-families. A sub-rede IPv6 não pode ser maior do que /108. |
Implantar um cluster AKS de pilha dupla
Crie um grupo de recursos do Azure para o cluster usando o
az group createcomando.az group create --location <region> --name <resourceGroupName>Crie um cluster AKS de pilha dupla, usando o comando
az aks createcom o parâmetro--ip-familiesdefinido comoipv4,ipv6.az aks create \ --location <region> \ --resource-group <resourceGroupName> \ --name <clusterName> \ --network-plugin azure \ --network-plugin-mode overlay \ --ip-families ipv4,ipv6 \ --generate-ssh-keysDepois de criares o cluster, obtém as credenciais do cluster usando o
az aks get-credentialscomando.az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Inspecione os nós para ver ambas as famílias de IP
Depois de o cluster ser provisionado, confirme que os nós estão provisionados com rede dual-stack usando o kubectl get nodes comando.
kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"
A saída do comando kubectl get nodes mostra que os nós têm endereços e espaço de atribuição de IP para pods, tanto para IPv4 quanto para IPv6.
NAME ADDRESSES PODCIDRS
aks-nodepool1-14508455-vmss000000 10.240.0.4,2001:1234:5678:9abc::4 10.244.0.0/24,fd12:3456:789a::/80
aks-nodepool1-14508455-vmss000001 10.240.0.5,2001:1234:5678:9abc::5 10.244.1.0/24,fd12:3456:789a:0:1::/80
aks-nodepool1-14508455-vmss000002 10.240.0.6,2001:1234:5678:9abc::6 10.244.2.0/24,fd12:3456:789a:0:2::/80
Criar um exemplo de carga de trabalho
Implemente um servidor web NGINX com três réplicas para verificar a atribuição de endereços IP de pods em pilha dupla.
Implantar um servidor Web NGINX
Crie um servidor web NGINX executando o
kubectl create deployment nginxcomando.kubectl create deployment nginx --image=nginx:latest --replicas=3Veja os recursos do pod executando o
kubectl get podscomando.kubectl get pods -o custom-columns="NAME:.metadata.name,IPs:.status.podIPs[*].ip,NODE:.spec.nodeName,READY:.status.conditions[?(@.type=='Ready')].status"A saída mostra que os pods têm endereços IPv4 e IPv6. Os pods não mostram endereços IP até que estejam prontos.
NAME IPs NODE READY nginx-55649fd747-9cr7h 10.244.2.2,fd12:3456:789a:0:2::2 aks-nodepool1-14508455-vmss000002 True nginx-55649fd747-p5lr9 10.244.0.7,fd12:3456:789a::7 aks-nodepool1-14508455-vmss000000 True nginx-55649fd747-r2rqh 10.244.1.2,fd12:3456:789a:0:1::2 aks-nodepool1-14508455-vmss000001 True
Expor a carga de trabalho por meio de um LoadBalancer tipo de serviço
Importante
O Balanceador de Carga do Azure envia testes de integridade para destinos IPv6 a partir de um endereço de link local. Nos conjuntos de nós do Azure Linux, o tráfego para serviços IPv6 que utilizam externalTrafficPolicy: Cluster falha. Os exemplos seguintes definem externalTrafficPolicy: Local no serviço IPv6 para que kube-proxy responda à sonda no nó.
Expõe a implementação NGINX com serviços IPv4 e IPv6
LoadBalancerseparados usando okubectl expose deployment nginxcomando.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"]}}'Recebes resultados que mostram que os serviços estão expostos.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedDepois de expor a implementação e provisionar totalmente os
LoadBalancerserviços, obtenha os endereços IP dos serviços usando okubectl get servicescomando.kubectl get servicesNAME 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 63sVerifique a funcionalidade de uma VM Linux ou de uma máquina local com um endereço IPv6 atribuído e o encaminhamento IPv6 configurado. O Azure Cloud Shell não suporta IPv6.
SERVICE_IP=$(kubectl get services nginx-ipv6 -o jsonpath='{.status.loadBalancer.ingress[0].ip}') curl -s "http://[${SERVICE_IP}]" | head -n5<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style>