Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt uw AKS-clusters implementeren in een dual-stackmodus wanneer u een virtueel Azure-netwerk met twee stacks gebruikt. In deze configuratie ontvangen knooppunten zowel een IPv4- als IPv6-adres van het subnet van het virtuele Azure-netwerk. Pods ontvangen zowel een IPv4- als IPv6-adres van een logisch andere adresruimte naar het subnet van het virtuele Azure-netwerk van de knooppunten. Nat (Network Address Translation) wordt vervolgens geconfigureerd, zodat de pods resources in het virtuele Azure-netwerk kunnen bereiken. Het bron-IP-adres van het verkeer wordt genat naar het primaire IP-adres van het knooppunt uit dezelfde IP-familie (IPv4 naar IPv4 en IPv6 naar IPv6).
In dit artikel leest u hoe u dual-stack-netwerken gebruikt met een AKS-cluster. Zie Netwerkconcepten voor Kubernetes en AKS voor meer informatie over netwerkopties en overwegingen.
Belangrijk
Vanaf 30 november 2025 ondersteunt Azure Kubernetes Service (AKS) geen beveiligingsupdates meer voor Azure Linux 2.0. De installatiekopieën van het Azure Linux 2.0-knooppunt zijn bevroren bij de release 202512.06.0. Vanaf 31 maart 2026 worden knooppuntafbeeldingen verwijderd en kunt u uw knooppoolen niet schalen. Migreer naar een ondersteunde Versie van Azure Linux door uw knooppuntgroepen te upgraden naar een ondersteunde Kubernetes-versie of door te migreren naar osSku AzureLinux3. Zie het Probleem met buitengebruikstelling van GitHub en de aankondiging van de buitengebruikstelling van Azure Updates voor meer informatie. Als u op de hoogte wilt blijven van aankondigingen en updates, volg de AKS-release-opmerkingen.
Beperkingen
- In Azure Linux-knooppuntgroepen worden serviceobjecten alleen ondersteund met
externalTrafficPolicy: Local. - Dual-stack-netwerken zijn vereist voor het virtuele Azure-netwerk en de POD CIDR.
- IPv6-only met een enkele stack wordt niet ondersteund voor IP-adressen van knooppunten of pods. Services kunnen worden aangeboden op IPv4 of IPv6.
- Azure CNI-overlay is vereist
Vereiste voorwaarden
- Voor AKS-clusters met dubbele stack is Kubernetes versie v1.21.2 of hoger vereist. v1.22.2 of hoger wordt aanbevolen.
- Als u Azure Resource Manager-sjablonen gebruikt, is schemaversie 2021-10-01 vereist.
Overzicht van dual-stack-netwerken in Kubernetes
Kubernetes v1.23 biedt stabiele upstream-ondersteuning voor IPv4-/IPv6-clusters met dubbele stack , waaronder pod- en servicenetwerken. Knooppunten en pods krijgen altijd zowel een IPv4- als een IPv6-adres toegewezen, terwijl services dual-stack of single-stack kunnen zijn op een van beide adresfamilies.
AKS configureert de vereiste ondersteunende services voor dual-stack-netwerken. Deze configuratie omvat:
- Als u een beheerd virtueel netwerk gebruikt, wordt een dubbele stackconfiguratie gebruikt.
- IPv4- en IPv6-knooppunt- en podadressen.
- Uitgaande regels voor zowel IPv4- als IPv6-verkeer.
- Load balancer instellen voor IPv4- en IPv6-services.
Opmerking
Wanneer u Dualstack gebruikt met een uitgaand type door de gebruiker gedefinieerde routering, kunt u ervoor kiezen om een standaardroute voor IPv6 te hebben, afhankelijk van of u uw IPv6-verkeer nodig hebt om internet te bereiken of niet. Als u geen standaardroute voor IPv6 hebt, wordt er een waarschuwing weergegeven bij het maken van een cluster, maar wordt het maken van een cluster niet voorkomen.
Een cluster met dubbele stack implementeren
De volgende kenmerken zijn beschikbaar ter ondersteuning van clusters met dubbele stack:
-
--ip-families: maakt gebruik van een door komma's gescheiden lijst met IP-families om het cluster in te schakelen.- Alleen
ipv4ofipv4,ipv6worden ondersteund.
- Alleen
-
--pod-cidrs: Maakt gebruik van een door komma's gescheiden lijst met IP-adresbereiken voor CIDR-notatie om POD-IP-adressen toe te wijzen.- Het aantal en de volgorde van reeksen in deze lijst moeten overeenkomen met de waarde die aan
--ip-familiesis opgegeven. - Als er geen waarden worden opgegeven, wordt de standaardwaarde
10.244.0.0/16,fd12:3456:789a::/64gebruikt.
- Het aantal en de volgorde van reeksen in deze lijst moeten overeenkomen met de waarde die aan
-
--service-cidrs: Maakt gebruik van een door komma's gescheiden lijst met IP-adresbereiken voor CIDR-notatie om service-IP-adressen toe te wijzen.- Het aantal en de volgorde van reeksen in deze lijst moeten overeenkomen met de waarde die aan
--ip-familiesis opgegeven. - Als er geen waarden worden opgegeven, wordt de standaardwaarde
10.0.0.0/16,fd12:3456:789a:1::/108gebruikt. - Het toegewezen IPv6-subnet
--service-cidrsmag niet groter zijn dan een /108.
- Het aantal en de volgorde van reeksen in deze lijst moeten overeenkomen met de waarde die aan
Een AKS-cluster met twee stacks implementeren
Maak een Azure-resourcegroep voor het cluster met behulp van de
az group createopdracht.az group create --location <region> --name <resourceGroupName>Maak een dual-stack AKS-cluster met de
az aks createopdracht waarbij de--ip-familiesparameter is ingesteld opipv4,ipv6.az aks create \ --location <region> \ --resource-group <resourceGroupName> \ --name <clusterName> \ --ip-families ipv4,ipv6 \ --generate-ssh-keysZodra het cluster is gemaakt, haalt u de referenties van de clusterbeheerder op met behulp van de
az aks get-credentialsopdracht.az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Controleer de knooppunten om beide IP-families te zien
Zodra het cluster is ingericht, controleert u of de knooppunten zijn ingericht met dubbele stack-netwerken met behulp van de
kubectl get nodesopdracht.kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"In de uitvoer van de
kubectl get nodesopdracht ziet u dat de knooppunten adressen en ip-toewijzingsruimte voor pods hebben van zowel IPv4 als 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
Een voorbeeldworkload maken
Zodra het cluster is gemaakt, kunt u uw workloads implementeren. In dit artikel wordt een voorbeeld van een workloadimplementatie van een NGINX-webserver beschreven.
Een NGINX-webserver implementeren
Maak een NGINX-webserver met behulp van de
kubectl create deployment nginxopdracht.kubectl create deployment nginx --image=nginx:latest --replicas=3Bekijk de pod-resources met behulp van de
kubectl get podsopdracht.kubectl get pods -o custom-columns="NAME:.metadata.name,IPs:.status.podIPs[*].ip,NODE:.spec.nodeName,READY:.status.conditions[?(@.type=='Ready')].status"In de uitvoer ziet u dat de pods zowel IPv4- als IPv6-adressen hebben. De pods tonen geen IP-adressen totdat ze klaar zijn.
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
Maak de workload beschikbaar via een LoadBalancer type-service.
Belangrijk
Vanaf AKS v1.27 kunt u een dual-stack LoadBalancer-service maken die wordt ingericht met 1 openbaar IPv4-IP-adres en 1 IPv6 openbaar IP-adres. In oudere versies wordt echter alleen het eerste IP-adres voor een service ingericht voor de load balancer, dus een service met dubbele stack ontvangt alleen een openbaar IP-adres voor de eerst vermelde IP-familie. Als u een service met twee stacks voor één implementatie wilt bieden, maakt u twee services die gericht zijn op dezelfde selector, één voor IPv4 en één voor IPv6.
AKS vanaf v1.27
Stel de NGINX-implementatie beschikbaar met behulp van de
kubectl expose deployment nginxopdracht.kubectl expose deployment nginx --name=nginx --port=80 --type=LoadBalancer --overrides='{"spec":{"ipFamilyPolicy": "PreferDualStack", "ipFamilies": ["IPv4", "IPv6"]}}'U ontvangt een uitvoer waaruit blijkt dat de services zijn blootgesteld.
service/nginx exposedZodra de implementatie beschikbaar is en de
LoadBalancerservices volledig zijn ingericht, haalt u de IP-adressen van de services op met behulp van dekubectl get servicesopdracht.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"]Controleer de functionaliteit via een opdrachtregelwebaanvraag van een host die geschikt is voor IPv6. Azure Cloud Shell is niet geschikt voor 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 ouder dan v1.27
Stel de NGINX-implementatie beschikbaar met behulp van de
kubectl expose deployment nginxopdracht.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"]}}'U ontvangt een uitvoer waaruit blijkt dat de services zijn blootgesteld.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedZodra de implementatie beschikbaar is en de
LoadBalancerservices volledig zijn ingericht, haalt u de IP-adressen van de services op met behulp van dekubectl get servicesopdracht.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 63sControleer de functionaliteit via een opdrachtregelwebaanvraag van een host die geschikt is voor IPv6. Azure Cloud Shell is niet geschikt voor 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>