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 da máquina virtual do Azure Linux 2.0 está 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 não poderá ajustar o tamanho dos 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
- Nos conjuntos de nós do Azure Linux, os objetos de serviço são suportados apenas com
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.
- Azure CNI Overlay é necessário
Pré-requisitos
- Os clusters de AKS em pilha dupla exigem a versão v1.21.2 ou superior do Kubernetes. v1.22.2 ou superior.
- Se estiver usando modelos do Azure Resource Manager, a versão do esquema 2021-10-01 será necessária.
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 estiver a usar uma rede virtual gerida, deve considerar uma configuração de rede virtual de pilha dupla.
- 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
Ao usar o Dualstack com um tipo de roteamento definido pelo usuário de saída , você pode optar por ter uma rota padrão para IPv6, dependendo se você precisa do seu tráfego IPv6 para chegar à Internet ou não. Se você não tiver uma rota padrão para IPv6, um aviso será exibido ao criar um cluster, mas não impedirá a criação do cluster.
Implantando um cluster de pilha dupla
Os seguintes atributos são fornecidos para suportar clusters de pilha dupla:
-
--ip-families: Usa uma lista separada por vírgulas de famílias IP para habilitar no cluster.- Apenas
ipv4ouipv4,ipv6são suportados.
- Apenas
-
--pod-cidrs: Usa uma lista separada por vírgulas de intervalos de IP na notação CIDR para atribuir os IPs dos pods.- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido a
--ip-families. - Se nenhum valor for fornecido, o valor
10.244.0.0/16,fd12:3456:789a::/64padrão será usado.
- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido a
-
--service-cidrs: Usa uma lista separada por vírgulas de intervalos de IP de notação CIDR para atribuir endereços IP de serviço.- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido a
--ip-families. - Se nenhum valor for fornecido, o valor
10.0.0.0/16,fd12:3456:789a:1::/108padrão será usado. - A sub-rede IPv6 atribuída a
--service-cidrsnão pode ser maior que um /108.
- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido a
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> \ --ip-families ipv4,ipv6 \ --generate-ssh-keysDepois que o cluster for criado, obtenha as credenciais de administrador 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 se os nós estão provisionados com rede de pilha dupla usando o comando
kubectl get nodes.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 nodesmostra 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
Depois que o cluster tiver sido criado, você poderá implantar suas cargas de trabalho. Este artigo orienta você por um exemplo de implantação de carga de trabalho de um servidor Web NGINX.
Implantar um servidor Web NGINX
Crie um servidor Web NGINX usando o
kubectl create deployment nginxcomando.kubectl create deployment nginx --image=nginx:latest --replicas=3Visualize os recursos do pod usando 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
A partir da versão v1.27 do AKS, pode criar um serviço de pilha dupla Load-Balancer que será configurado com 1 IP público IPv4 e 1 IP público IPv6. No entanto, em versões mais antigas, apenas o primeiro endereço IP de um serviço será atribuído ao balanceador de carga, então um serviço dual-stack obtém um endereço IP público apenas para a primeira família de IP que está listada. Para fornecer um serviço de pilha dupla para uma única implantação, crie dois serviços direcionados ao mesmo seletor, um para IPv4 e outro para IPv6.
AKS a partir da v1.27
Exponha a implantação do NGINX usando o
kubectl expose deployment nginxcomando.kubectl expose deployment nginx --name=nginx --port=80 --type=LoadBalancer --overrides='{"spec":{"ipFamilyPolicy": "PreferDualStack", "ipFamilies": ["IPv4", "IPv6"]}}'Você recebe um resultado que mostra que os serviços foram expostos.
service/nginx exposedDepois que a implantação for exposta e os
LoadBalancerserviços estiverem totalmente provisionados, obtenha os endereços IP dos serviços usando okubectl get servicescomando.kubectl get servicesNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.0.223.73 2603:1030:20c:9::22d,4.156.88.133 80:30664/TCP 2m11skubectl get services nginx -ojsonpath='{.spec.clusterIPs}'["10.0.223.73","fd17:d93e:db1f:f771::54e"]Verifique a funcionalidade por meio de uma solicitação da Web de linha de comando de um host compatível com IPv6. O Azure Cloud Shell não é compatível com IPv6.
SERVICE_IP=$(kubectl get services nginx -o jsonpath='{.status.loadBalancer.ingress[1].ip}') curl -s "http://[${SERVICE_IP}]" | head -n5<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style>
AKS mais antigo que v1.27
Exponha a implantação do NGINX usando o
kubectl 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":{"ipFamilies": ["IPv6"]}}'Você recebe um resultado que mostra que os serviços foram expostos.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedDepois que a implantação for exposta e os
LoadBalancerserviços estiverem totalmente provisionados, 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 por meio de uma solicitação da Web de linha de comando de um host compatível com IPv6. O Azure Cloud Shell não é compatível com 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>