Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Ihre AKS-Cluster in einem Dual-Stack-Modus bereitstellen, wenn Sie ein virtuelles Azure-Netzwerk mit dualem Stapel verwenden. In dieser Konfiguration erhalten Knoten sowohl eine IPv4- als auch eine IPv6-Adresse aus dem Subnetz des virtuellen Azure-Netzwerks. Pods erhalten sowohl eine IPv4- als auch eine IPv6-Adresse aus einem logisch unterschiedlichen Adressraum für das Subnetz des virtuellen Azure-Netzwerks der Knoten. Die Netzwerkadressübersetzung (NAT, Network Address Translation) wird dann so konfiguriert, dass die Pods Ressourcen im virtuellen Azure-Netzwerk erreichen können. Die Quell-IP-Adresse des Datenverkehrs wird mittels NAT in die primäre IP-Adresse des Knotens innerhalb der gleichen IP-Adressfamilie übersetzt (also IPv4 in IPv4 und IPv6 in IPv6).
In diesem Artikel erfahren Sie, wie Sie duale Stapelnetzwerke mit einem AKS-Cluster verwenden. Weitere Informationen zu Netzwerkoptionen und Überlegungen finden Sie unter Netzwerkkonzepte für Kubernetes und AKS.
Von Bedeutung
Ab dem 30. November 2025 unterstützt Azure Kubernetes Service (AKS) keine Sicherheitsupdates für Azure Linux 2.0 mehr oder stellt diese bereit. Das Azure Linux 2.0-Knoten-Image wurde mit der 202512.06.0-Veröffentlichung eingefroren. Ab dem 31. Oktober 2026 werden Knotenimages entfernt, und Sie können Ihre Knotenpools nicht skalieren. Migrieren Sie zu einer unterstützten Azure Linux-Version, indem Sie Ihre Knotenpools auf eine unterstützte Kubernetes-Version aktualisieren oder zu osSku AzureLinux3 migrieren. Weitere Informationen finden Sie im GitHub-Issue "Retirement" und in der Azure Updates Ankündigung der Einstellung. Um über Ankündigungen und Updates auf dem Laufenden zu bleiben, folgen Sie den AKS-Versionshinweisen.
Einschränkungen
- In Azure Linux-Knotenpools erfordern IPv6-Dienste
externalTrafficPolicy: Local. - Dual-Stack-Netzwerke sind für das virtuelle Azure-Netzwerk und den Pod CIDR erforderlich.
- IPv6-Only-Single-Stack wird nicht für Knoten- oder Pod-IP-Adressen unterstützt. Dienste können auf IPv4 oder IPv6 bereitgestellt werden.
- Azure CNI Overlay unterstützt keine Azure- oder Calico-Netzwerkrichtlinien mit dualen Stapelnetzwerken. Um Netzwerkrichtlinien zu verwenden, verwenden Sie Azure CNI Powered by Cilium.
- Standardmäßiges NAT-Gateway unterstützt nur IPv4. Verwenden Sie für Dual-Stack-Egress das StandardV2 NAT-Gateway. Der von AKS verwaltete Typ für ausgehenden Datenverkehr
managedNATGatewayV2ist als Vorschau verfügbar. - Das Add-On für virtuelle Knoten wird mit dualen Stapelnetzwerken nicht unterstützt.
Voraussetzungen
- Azure CLI, Version 2.48.1 oder höher. Führen Sie
az --versionaus, um die installierte Version zu ermitteln. Informationen zum Installieren oder Aktualisieren des Azure CLI finden Sie unter Installieren Azure CLI. - Verwenden Sie eine unterstützte Kubernetes-Version in AKS , die in Ihrer Region verfügbar ist.
In diesem Artikel wird Azure CNI Overlay verwendet. Sie können auch einen Dual-Stack-Cluster mit Azure CNI Powered by Cilium auf Linux-Clustern bereitstellen, auf denen Kubernetes Version 1.29 oder höher ausgeführt wird.
Übersicht über duale Stapelnetzwerke in Kubernetes
Kubernetes v1.23 bietet stabile Upstreamunterstützung für IPv4/IPv6 Dual-Stack-Cluster , einschließlich Pod- und Dienstnetzwerke. Knoten und Pods wird immer sowohl eine IPv4- als auch eine IPv6-Adresse zugewiesen. Dienste können dagegen entweder mit einem dualen oder einem einzelnen Stapel in einer der IP-Adressfamilien verwendet werden.
AKS konfiguriert die erforderlichen Unterstützenden Dienste für Dual-Stack-Netzwerke. Diese Konfiguration umfasst:
- Wenn Sie ein verwaltetes virtuelles Netzwerk verwenden: eine Dual-Stack-Konfiguration für das virtuelle Netzwerk.
- IPv4- und IPv6-Knoten- und Podadressen.
- Ausgehende Regeln für IPv4- und IPv6-Datenverkehr.
- Einrichtung des Lastverteilers für IPv4- und IPv6-Dienste.
Hinweis
Wenn Sie Dual-Stack-Netzwerke mit einem ausgehenden Typ von benutzerdefiniertem Routing verwenden, können Sie eine Standardroute für IPv6 verwenden, je nachdem, ob Sie Ihren IPv6-Datenverkehr benötigen, um das Internet zu erreichen. Wenn Sie keine Standardroute für IPv6 haben, wird beim Erstellen eines Clusters eine Warnung angezeigt, aber die Clustererstellung wird nicht verhindert.
Parameter für Dual-Stack-Cluster
Die folgenden Parameter unterstützen Dual-Stack-Cluster:
| Parameter | Zulässige Werte | Standardwert | Einschränkungen |
|---|---|---|---|
--ip-families |
ipv4 oder ipv4,ipv6 |
Nicht angegeben | Stellen Sie eine durch Trennzeichen getrennte Liste von IP-Familien bereit, die im Cluster aktiviert werden sollen. |
--pod-cidrs |
Durch Trennzeichen getrennte CIDR-Bereiche | 10.244.0.0/16,fd12:3456:789a::/64 |
Die Anzahl und Reihenfolge der Bereiche müssen mit --ip-families übereinstimmen. |
--service-cidrs |
Durch Trennzeichen getrennte CIDR-Bereiche | 10.0.0.0/16,fd12:3456:789a:1::/108 |
Die Anzahl und Reihenfolge der Bereiche müssen mit --ip-families übereinstimmen. Das IPv6-Subnetz darf nicht größer sein als /108. |
Bereitstellen eines AKS-Clusters mit dualem Stapel
Erstellen Sie mithilfe des
az group createBefehls eine Azure-Ressourcengruppe für den Cluster.az group create --location <region> --name <resourceGroupName>Erstellen Sie einen AKS-Cluster mit dualem Stapel mit dem Befehl „
az aks create“, wobei der--ip-families-Parameter auf „ipv4,ipv6“ festgelegt sein sollte.az aks create \ --location <region> \ --resource-group <resourceGroupName> \ --name <clusterName> \ --network-plugin azure \ --network-plugin-mode overlay \ --ip-families ipv4,ipv6 \ --generate-ssh-keysNachdem Sie den Cluster erstellt haben, rufen Sie die Clusteranmeldeinformationen mithilfe des
az aks get-credentialsBefehls ab.az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Überprüfen Sie die Knoten, um beide IP-Familien anzusehen.
Vergewissern Sie sich nach der Bereitstellung des Clusters mit dem Befehl kubectl get nodes, dass die Knoten mit einer Dual-Stack-Netzwerkkonfiguration bereitgestellt wurden.
kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"
Die Ausgabe aus dem kubectl get nodes Befehl zeigt, dass die Knoten Adressen und pod-IP-Zuordnungsraum sowohl von IPv4 als auch von IPv6 aufweisen.
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
Erstellen einer Beispielworkload
Stellen Sie einen NGINX-Webserver mit drei Replikaten bereit, um die Dual-Stack-IP-Zuweisung für Pods zu überprüfen.
Installieren eines NGINX-Webservers
Erstellen Sie einen NGINX-Webserver, indem Sie den
kubectl create deployment nginxBefehl ausführen.kubectl create deployment nginx --image=nginx:latest --replicas=3Zeigen Sie die Podressourcen an, indem Sie den
kubectl get podsBefehl ausführen.kubectl get pods -o custom-columns="NAME:.metadata.name,IPs:.status.podIPs[*].ip,NODE:.spec.nodeName,READY:.status.conditions[?(@.type=='Ready')].status"Die Ausgabe zeigt, dass die Pods sowohl IPv4- als auch IPv6-Adressen enthalten. Die Pods zeigen IP-Adressen erst an, wenn sie bereit sind.
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
Verfügbarmachen der Workload über einen Dienst vom Typ „LoadBalancer“
Von Bedeutung
Von Azure Load Balancer werden über eine verbindungslokale Adresse Integritätstests an IPv6-Ziele gesendet. In Azure Linux-Knotenpools schlägt der Datenverkehr zu IPv6-Diensten, die externalTrafficPolicy: Cluster verwenden, fehl. Die folgenden Beispiele setzen externalTrafficPolicy: Local für den IPv6-Dienst, sodass kube-proxy auf die Sonde am Knoten antwortet.
Machen Sie die NGINX-Bereitstellung mit separaten IPv4- und IPv6-Diensten
LoadBalancermithilfe deskubectl expose deployment nginxBefehls verfügbar.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"]}}'Sie erhalten eine Ausgabe, die anzeigt, dass die Dienste verfügbar gemacht werden.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedNachdem Sie die Bereitstellung verfügbar gemacht und die
LoadBalancerDienste vollständig bereitgestellt haben, rufen Sie die IP-Adressen der Dienste mithilfe deskubectl get servicesBefehls ab.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 63sÜberprüfen Sie die Funktionalität von einem virtuellen Linux-Computer oder einem lokalen Computer mit einer konfigurierten IPv6-Adresse und konfiguriertem IPv6-Routing. Azure Cloud Shell unterstützt IPv6 nicht.
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>