Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede implementar los clústeres de AKS en un modo de pila doble al usar una red virtual de Azure de doble pila. En esta configuración, los nodos reciben una dirección IPv4 y una IPv6 de la subred de la red virtual de Azure. Los pods reciben una dirección IPv4 y una IPv6 de un espacio de direcciones lógicamente distinto a la subred de red virtual de Azure de los nodos. A continuación, se configura la traducción de direcciones de red (NAT) para que los pods puedan acceder a los recursos en la red virtual de Azure. La dirección IP de origen del tráfico traduce las direcciones de red a la dirección IP principal del nodo de la misma familia (IPv4 a IPv4 e IPv6 a IPv6).
En este artículo se muestra cómo usar redes de doble pila con un clúster de AKS. Para más información sobre las opciones y consideraciones de red, consulte Conceptos de red para Kubernetes y AKS.
Importante
A partir del 30 de noviembre de 2025, Azure Kubernetes Service (AKS) ya no admite ni proporciona actualizaciones de seguridad para Azure Linux 2.0. La imagen de nodo de Azure Linux 2.0 queda congelada en la versión 202512.06.0. A partir del 31 de octubre de 2026, se quitarán las imágenes de nodo y no podrá escalar los grupos de nodos. Migre a una versión compatible de Azure Linux mediante la actualización de los grupos de nodos a una versión de Kubernetes compatible o la migración a osSku AzureLinux3. Para más información, consulte el asunto de retirada de GitHub y el anuncio sobre la retirada de actualizaciones de Azure. Para mantenerse informado sobre los anuncios y actualizaciones, siga las notas de lanzamiento de AKS.
Limitaciones
- En los grupos de nodos de Azure Linux, los servicios IPv6 requieren
externalTrafficPolicy: Local. - Las redes de doble pila son necesarias para la red virtual de Azure y el CIDR del pod.
- No se admite una pila única de solo IPv6 para las direcciones IP de nodo o pod. Los servicios se pueden aprovisionar en IPv4 o IPv6.
- La superposición de Azure CNI no admite políticas de red de Azure ni de Calico en redes de doble pila. Para usar directivas de red, use Azure CNI Powered by Cilium.
- La puerta de enlace NAT estándar solo admite IPv4. Para el tráfico de salida de doble pila, utilice StandardV2 NAT Gateway. El tipo de salida administrado por AKS
managedNATGatewayV2se encuentra en versión preliminar. - El complemento de nodos virtuales no se admite con redes de doble pila.
Prerrequisitos
- CLI de Azure versión 2.48.1 o posterior. Ejecute
az --versionpara buscar la versión instalada. Para instalar o actualizar el CLI de Azure, consulte Instalación de CLI de Azure. - Use una versión de Kubernetes compatible en AKS que esté disponible en su región.
En este artículo se utiliza Azure CNI Overlay. También puede implementar un clúster de doble pila con Azure CNI Powered by Cilium en clústeres de Linux que ejecutan Kubernetes versión 1.29 o posterior.
Introducción a las redes de doble pila en Kubernetes
Kubernetes v1.23 ofrece compatibilidad ascendente estable con clústeres de pila doble de IPv4/IPv6, incluidas redes de pods y servicios. Los nodos y pods siempre se asignan tanto a una dirección IPv4 como a una dirección IPv6, mientras que los servicios pueden ser de pila doble o de una sola pila en cualquiera de las familias de direcciones.
AKS configura los servicios auxiliares necesarios para las redes de doble pila. Esta configuración incluye:
- Si utilizas una red virtual administrada, una configuración de red virtual de doble pila.
- Direcciones de nodo y pod IPv4 e IPv6.
- Reglas de salida para el tráfico IPv4 e IPv6.
- Configuración del equilibrador de carga para los servicios IPv4 e IPv6.
Nota:
Cuando se usan redes de doble pila con un tipo de salida de enrutamiento definido por el usuario, puede elegir tener una ruta predeterminada para IPv6 en función de si necesita el tráfico IPv6 para acceder a Internet. Si no tiene una ruta predeterminada para IPv6, aparece una advertencia al crear un clúster, pero no impide la creación del clúster.
Parámetros de clúster de pila doble
Los parámetros siguientes admiten clústeres de doble pila:
| Parámetro | Valores aceptados | Valor predeterminado | Restricciones |
|---|---|---|---|
--ip-families |
ipv4 o ipv4,ipv6 |
No especificado | Proporcione una lista separada por comas de familias ip para habilitar en el clúster. |
--pod-cidrs |
Intervalos CIDR separados por comas | 10.244.0.0/16,fd12:3456:789a::/64 |
El recuento y el orden de los intervalos deben coincidir con --ip-families. |
--service-cidrs |
Intervalos CIDR separados por comas | 10.0.0.0/16,fd12:3456:789a:1::/108 |
El recuento y el orden de los intervalos deben coincidir con --ip-families. La subred IPv6 no puede ser mayor que /108. |
Implementar un clúster de AKS de pila doble
Cree un grupo de recursos de Azure para el clúster mediante el
az group createcomando .az group create --location <region> --name <resourceGroupName>Cree un clúster de AKS de pila doble mediante el comando
az aks createcon el parámetro--ip-familiesestablecido enipv4,ipv6.az aks create \ --location <region> \ --resource-group <resourceGroupName> \ --name <clusterName> \ --network-plugin azure \ --network-plugin-mode overlay \ --ip-families ipv4,ipv6 \ --generate-ssh-keysDespués de crear el clúster, obtenga las credenciales del clúster mediante el
az aks get-credentialscomando .az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Inspección de los nodos para ver ambas familias de direcciones IP
Una vez aprovisionado el clúster, confirme que los nodos se aprovisionan con redes de doble pila mediante el kubectl get nodes comando .
kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"
La salida del comando kubectl get nodes muestra que los nodos tienen direcciones y espacio de asignación de IP de pods tanto de IPv4 como de 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
Creación de una carga de trabajo de ejemplo
Despliegue un servidor web NGINX con tres réplicas para verificar la asignación de direcciones IP dual-stack a los pods.
Instalación de un servidor web NGINX
Cree un servidor web NGINX ejecutando el
kubectl create deployment nginxcomando .kubectl create deployment nginx --image=nginx:latest --replicas=3Para ver los recursos del pod, ejecute el
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"La salida muestra que los pods tienen direcciones IPv4 e IPv6. Los pods no muestran direcciones IP hasta que estén listos.
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
Exposición de la carga de trabajo a través de un servicio de tipo LoadBalancer
Importante
Azure Load Balancer envía sondeos de estado a los destinos IPv6 desde una dirección local de vínculo. En los grupos de nodos de Azure Linux, el tráfico hacia los servicios IPv6 que usan externalTrafficPolicy: Cluster falla. En los ejemplos siguientes se establece externalTrafficPolicy: Local en el servicio IPv6 para que kube-proxy responda al sondeo en el nodo.
Exponga la implementación de NGINX con servicios IPv4 e IPv6
LoadBalancerindependientes mediante elkubectl 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"]}}'Obtendrá una salida que indica que los servicios están expuestos.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedDespués de exponer la implementación y aprovisionar completamente los
LoadBalancerservicios, obtenga las direcciones IP de los servicios mediante elkubectl 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 63sCompruebe la funcionalidad de una máquina virtual Linux o una máquina local con una dirección IPv6 asignada y un enrutamiento IPv6 configurado. Azure Cloud Shell no admite 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>