Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile distribuire i cluster AKS in modalità dual-stack quando si utilizza una rete virtuale di Azure dual-stack. In questa configurazione, i nodi ricevono sia un indirizzo IPv4 che IPv6 dalla subnet della rete virtuale di Azure. I pod ricevono un indirizzo IPv4 e IPv6 da uno spazio di indirizzi logicamente diverso dalla subnet della rete virtuale Azure dei nodi. Nat (Network Address Translation) viene quindi configurato in modo che i pod possano raggiungere le risorse nella rete virtuale di Azure. L'indirizzo IP di origine del traffico è NAT verso l'indirizzo IP primario del nodo della stessa famiglia (da IPv4 a IPv4 e IPv6 a IPv6).
Questo articolo illustra come usare la rete dual-stack con un cluster AKS. Per altre informazioni sulle opzioni di rete e le relative considerazioni, vedere Concetti relativi alla rete per le applicazioni nel servizio Azure Kubernetes.
Importante
A partire dal 30 novembre 2025, il servizio Azure Kubernetes non supporta più o fornisce aggiornamenti della sicurezza per Azure Linux 2.0. L'immagine del nodo Linux 2.0 di Azure è bloccata alla versione 202512.06.0. A partire dal 31 ottobre 2026, le immagini dei nodi verranno rimosse e non sarà possibile ridimensionare i pool di nodi. Eseguire la migrazione a una versione di Linux di Azure supportata aggiornando i pool di nodi a una versione di Kubernetes supportata o eseguendo la migrazione ad osSku AzureLinux3. Per altre informazioni, vedere il problema di ritiro di GitHub e l'annuncio di ritiro degli aggiornamenti di Azure. Per rimanere informati sugli annunci e sugli aggiornamenti, seguire le note di rilascio di AKS.
Limitazioni
- In Azure pool di nodi Linux i servizi IPv6 richiedono
externalTrafficPolicy: Local. - La rete dual-stack è necessaria per la rete virtuale di Azure e il CIDR del pod.
- Solo IPv6 a stack singolo non è supportato per gli indirizzi IP del nodo o del pod. È possibile effettuare il provisioning dei servizi in IPv4 o IPv6.
- Azure CNI Overlay non supporta le policy di rete di Azure o Calico con il networking dual-stack. Per usare i criteri di rete, usare Azure CNI basato su Cilium.
- Il gateway NAT standard supporta solo IPv4. Per il traffico in uscita dual-stack, usare gateway NAT StandardV2. Il tipo in uscita
managedNATGatewayV2gestito da AKS è in modalità anteprima. - Il componente aggiuntivo dei nodi virtuali non è supportato con la rete dual-stack.
Prerequisiti
- interfaccia della riga di comando di Azure versione 2.48.1 o successiva. Eseguire
az --versionper trovare la versione installata. Per installare o aggiornare il interfaccia della riga di comando di Azure, vedere Installare interfaccia della riga di comando di Azure. - Usare una versione di Kubernetes supportata in AKS disponibile nella tua area geografica.
Questo articolo usa Azure overlay CNI. È anche possibile distribuire un cluster dual stack con Azure CNI basato su Cilium in cluster Linux che eseguono Kubernetes versione 1.29 o successiva.
Panoramica della rete dual stack in Kubernetes
Kubernetes v1.23 offre un supporto stabile a monte per i cluster dual stack IPv4/IPv6, inclusa la rete di pod e servizi. I nodi e i pod vengono sempre assegnati sia un indirizzo IPv4 che un indirizzo IPv6, mentre i servizi possono essere a doppio stack o a uno stack singolo in una delle due famiglie di indirizzi.
AKS configura i servizi di supporto necessari per il networking dual-stack. Questa configurazione include:
- Se si usa una rete virtuale gestita, una configurazione di rete virtuale dual stack.
- Indirizzi di nodi e pod IPv4 e IPv6.
- Regole in uscita per il traffico IPv4 e IPv6.
- Configurazione del servizio di bilanciamento del carico per i servizi IPv4 e IPv6.
Annotazioni
Quando si usa la rete dual stack con un tipo di routing definito dall'utente in uscita , è possibile scegliere di avere una route predefinita per IPv6 a seconda che sia necessario il traffico IPv6 per raggiungere Internet. Se non si ha una route predefinita per IPv6, viene visualizzato un avviso quando si crea un cluster ma non si impedisce la creazione del cluster.
Parametri del cluster a doppio stack
I parametri seguenti supportano cluster dual-stack:
| Parametro | Valori accettati | Valore predefinito | Vincoli |
|---|---|---|---|
--ip-families |
ipv4 oppure ipv4,ipv6 |
Non specificato | Specificare un elenco delimitato da virgole di famiglie IP da abilitare nel cluster. |
--pod-cidrs |
Intervalli CIDR delimitati da virgole | 10.244.0.0/16,fd12:3456:789a::/64 |
Il conteggio e l'ordine degli intervalli devono corrispondere a --ip-families. |
--service-cidrs |
Intervalli CIDR delimitati da virgole | 10.0.0.0/16,fd12:3456:789a:1::/108 |
Il conteggio e l'ordine degli intervalli devono corrispondere a --ip-families. La subnet IPv6 non può essere maggiore di /108. |
Distribuire un cluster servizio Azure Kubernetes dual-stack
- Interfaccia della riga di comando di Azure
- Gestore Risorse di Azure
- Bicipite
Creare un gruppo di risorse di Azure per il cluster usando il
az group createcomando .az group create --location <region> --name <resourceGroupName>Creare un cluster servizio Azure Kubernetes dual-stack usando il comando
az aks createcon il parametro--ip-familiesimpostato suipv4,ipv6.az aks create \ --location <region> \ --resource-group <resourceGroupName> \ --name <clusterName> \ --network-plugin azure \ --network-plugin-mode overlay \ --ip-families ipv4,ipv6 \ --generate-ssh-keysDopo aver creato il cluster, ottenere le credenziali del cluster usando il
az aks get-credentialscomando .az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Esaminare i nodi per visualizzare entrambe le famiglie IP
Dopo il provisioning del cluster, verificare che i nodi siano stati sottoposti a provisioning con rete dual-stack utilizzando il comando kubectl get nodes.
kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"
L'output del comando kubectl get nodes mostra che i nodi hanno indirizzi e spazio di assegnazione IP per i pod sia per IPv4 che per 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
Creare un carico di lavoro di esempio
Distribuisci un server web NGINX con tre repliche per verificare l'assegnazione dual-stack degli indirizzi IP dei pod.
Distribuire un server Web NGINX
- kubectl
- YAML
Creare un server Web NGINX eseguendo il
kubectl create deployment nginxcomando .kubectl create deployment nginx --image=nginx:latest --replicas=3Visualizzare le risorse del pod eseguendo il
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"L'output mostra che i pod hanno indirizzi IPv4 e IPv6. I pod non mostrano gli indirizzi IP finché non sono pronti.
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
Esporre il carico di lavoro tramite un servizio di tipo LoadBalancer
Importante
Azure Load Balancer invia probe di integrità alle destinazioni IPv6 da un indirizzo locale di collegamento. Nei pool di nodi Linux di Azure, il traffico verso i servizi IPv6 che usano externalTrafficPolicy: Cluster non funziona. Gli esempi seguenti impostano externalTrafficPolicy: Local sul servizio IPv6 in modo che kube-proxy risponda al probe sul nodo.
- kubectl
- YAML
Esporre la distribuzione NGINX con servizi IPv4 e IPv6
LoadBalancerseparati usando ilkubectl 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"]}}'Si ottiene un output che indica che i servizi sono esposti.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedDopo aver esposto la distribuzione e aver completato il provisioning dei servizi
LoadBalancer, recupera gli indirizzi IP dei servizi utilizzando il 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 63sVerificare la funzionalità da una macchina virtuale Linux o da un computer locale con un indirizzo IPv6 assegnato e il routing IPv6 configurato. Azure Cloud Shell non supporta 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>