Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode implantar seus clusters AKS no modo dual-stack ao usar uma rede virtual Azure dual-stack. Nessa configuração, os nós recebem um endereço IPv4 e IPv6 da sub-rede da rede virtual do Azure. Os pods recebem endereço IPv4 e IPv6 de um espaço de endereço logicamente diferente da sub-rede da rede virtual do Azure dos nós. 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 para o endereço IP primário do nó da mesma 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 e considerações de rede, consulte Conceitos de rede para Kubernetes e AKS.
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 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 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.
Limitações
- Em pools de nós do Azure Linux, só há suporte para objetos de serviço com
externalTrafficPolicy: Local. - A rede de pilha dupla é necessária para a rede virtual do Azure e o CIDR do pod.
- A pilha única somente IPv6 não tem suporte para endereços IP de nó ou pod. Os serviços podem ser provisionados no IPv4 ou IPv6.
- Azure CNI Overlay é necessário
Pré-requisitos
- Os clusters de pilha dupla AKS exigem Kubernetes versão v 1.21.2 ou posterior. V1.22.2 ou superior é recomendado.
- Se estiver usando modelos do Azure Resource Manager, a versão de esquema 2021-10-01 será necessária.
Visão geral da rede de pilha dupla no Kubernetes
O Kubernetes v 1,23 oferece suporte a upstream estável para clusters de pilha dupla IPv4/IPv6, incluindo a rede de serviços e Pod. Nós e pods sempre recebem um endereço IPv4 e IPv6, enquanto os serviços podem ser de pilha dupla ou pilha única em qualquer família de endereços.
AKS configura os serviços de suporte necessários para a rede de pilha dupla. Essa configuração inclui:
- Se estiver utilizando uma rede virtual gerenciada, uma configuração de rede virtual de pilha dupla.
- Endereços 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 saída de roteamento definido pelo usuário, você pode optar por ter uma rota padrão para IPv6, dependendo se precisar do tráfego IPv6 para acessar ou não a Internet. 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 atributos a seguir são fornecidos para dar suporte a clusters de pilha dupla:
-
--ip-families: recebe uma lista separada por vírgulas de famílias de IPs a serem habilitadas no cluster.- Somente
ipv4ouipv4,ipv6são suportados.
- Somente
-
--pod-cidrs: recebe uma lista separada por vírgulas de intervalos de IPs de notação CIDR para atribuir IPs de pods.- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido para
--ip-families. - Se nenhum valor for fornecido, o valor padrão
10.244.0.0/16,fd12:3456:789a::/64será usado.
- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido para
-
--service-cidrs: recebe uma lista separada por vírgulas de intervalos de IPs de notação CIDR para atribuir os IPs de serviço.- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido para
--ip-families. - Se nenhum valor for fornecido, o valor padrão
10.0.0.0/16,fd12:3456:789a:1::/108será usado. - A sub-rede IPv6 atribuída a
--service-cidrsnão pode ser maior do que a/108.
- A contagem e a ordem dos intervalos nesta lista devem corresponder ao valor fornecido para
Implantar um cluster do AKS de pilha dupla
Crie um grupo de recursos do Azure para o cluster utilizando o comando
az group create.az group create --location <region> --name <resourceGroupName>Criar um cluster do AKS de pilha dupla utilizando 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-keysApós a criação do cluster, obtenha as credenciais de administrador do cluster usando o comando
az aks get-credentials.az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Inspecione os nós para ver ambas as famílias de IP
Após o provisionamento do cluster, confirme se os nós estão provisionados com a 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 pod IP tanto do IPv4 quanto do 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 uma carga de trabalho de exemplo
Após a criação do cluster, você poderá implementar suas cargas de trabalho. Este artigo o orienta em um exemplo de implantação de carga de trabalho de um servidor da Web NGINX.
Implantar um servidor Web NGINX
Crie um servidor da Web NGINX usando o comando
kubectl create deployment nginx.kubectl create deployment nginx --image=nginx:latest --replicas=3Exibir os recursos do pod usando o comando
kubectl get pods.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 os endereços IP até estarem 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
Exponha a carga de trabalho através de um serviço do tipo LoadBalancer
Importante
A partir do AKS v1.27, você pode criar um serviço LoadBalancer de pilha dupla que será provisionado com um IP público IPv4 e um IP público IPv6. No entanto, nas versões mais antigas, somente o primeiro endereço IP de um serviço será provisionado para o balanceador de carga, de modo que um serviço de pilha dupla só receba um IP público para a primeira família de IPs 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 comando
kubectl expose deployment nginx.kubectl expose deployment nginx --name=nginx --port=80 --type=LoadBalancer --overrides='{"spec":{"ipFamilyPolicy": "PreferDualStack", "ipFamilies": ["IPv4", "IPv6"]}}'Você recebe uma saída mostrando que os serviços foram expostos.
service/nginx exposedQuando a implantação estiver exposta e os serviços
LoadBalancerestiverem totalmente provisionados, obtenha os endereços IP dos serviços usando o comandokubectl get services.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 através de uma solicitação da Web de linha de comando a partir 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 a v1.27
Exponha a implantação do NGINX usando o comando
kubectl expose deployment nginx.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 uma saída mostrando que os serviços foram expostos.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedQuando a implantação estiver exposta e os serviços
LoadBalancerestiverem totalmente provisionados, obtenha os endereços IP dos serviços usando o comandokubectl get services.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 através de uma solicitação da Web de linha de comando a partir 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>