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-Knotenimage ist eingefroren bei der Version 202512.06.0. Ab dem 31. März 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 den Azure Linux-Knotenpools werden Dienstobjekte nur mit
externalTrafficPolicy: Localunterstützt. - 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-Überlagerung ist erforderlich
Voraussetzungen
- AKS Dual-Stack-Cluster erfordern Kubernetes Version v1.21.2 oder höher. v1.22.2 oder höher wird empfohlen.
- Wenn Sie Azure Resource Manager-Vorlagen verwenden, ist die Schemaversion 2021-10-01 erforderlich.
Ü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, ist eine Dual-Stack-Virtualnetzwerk-Konfiguration erforderlich.
- 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 Dualstack mit einem ausgehenden Routingtyp verwenden, können Sie eine Standardroute für IPv6 verwenden, je nachdem, ob Sie Ihren IPv6-Datenverkehr benötigen, um das Internet zu erreichen oder nicht. Wenn Sie keine Standardroute für IPv6 haben, wird beim Erstellen eines Clusters eine Warnung angezeigt, aber die Clustererstellung wird nicht verhindert.
Bereitstellen eines Dual-Stack-Clusters
Zur Unterstützung von Clustern mit dualem Stapel werden die folgenden Attribute bereitgestellt:
-
--ip-families: Akzeptiert eine durch Kommas getrennte Liste mit IP-Adressfamilien, die im Cluster aktiviert werden sollen.- Nur
ipv4oderipv4,ipv6werden unterstützt.
- Nur
-
--pod-cidrs: Akzeptiert eine durch Kommas getrennte Liste mit IP-Bereichen (in CIDR-Notation), aus denen Pod-IP-Adressen zugewiesen werden sollen.- Anzahl und Reihenfolge der Bereiche in dieser Liste müssen dem für
--ip-familiesangegebenen Wert entsprechen. - Wenn keine Werte angegeben sind, wird der Standardwert „
10.244.0.0/16,fd12:3456:789a::/64“ verwendet.
- Anzahl und Reihenfolge der Bereiche in dieser Liste müssen dem für
-
--service-cidrs: Akzeptiert eine durch Kommas getrennte Liste mit IP-Bereichen (in CIDR-Notation), aus denen Dienst-IP-Adressen zugewiesen werden sollen.- Anzahl und Reihenfolge der Bereiche in dieser Liste müssen dem für
--ip-familiesangegebenen Wert entsprechen. - Wenn keine Werte angegeben sind, wird der Standardwert „
10.0.0.0/16,fd12:3456:789a:1::/108“ verwendet. - Das IPv6-Subnetz, das
--service-cidrszugewiesen ist, darf nicht größer als /108 sein.
- Anzahl und Reihenfolge der Bereiche in dieser Liste müssen dem für
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> \ --ip-families ipv4,ipv6 \ --generate-ssh-keysNachdem der Cluster erstellt wurde, rufen Sie die Anmeldeinformationen des Clusteradministrators 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.
Nachdem der Cluster bereitgestellt wurde, stellen Sie mithilfe des
kubectl get nodesBefehls sicher, dass die Knoten mit Dual-Stack-Netzwerken bereitgestellt werden.kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"Die Ausgabe aus dem
kubectl get nodesBefehl 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
Nachdem der Cluster erstellt wurde, können Sie Ihre Workloads bereitstellen. Dieser Artikel führt Sie durch eine beispielhafte Workloadbereitstellung eines NGINX-Webservers.
Installieren eines NGINX-Webservers
Erstellen Sie einen NGINX-Webserver mit dem
kubectl create deployment nginxBefehl.kubectl create deployment nginx --image=nginx:latest --replicas=3Zeigen Sie die Pod-Ressourcen mithilfe des
kubectl get podsBefehls an.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
Ab AKS v1.27 können Sie einen Dual-Stack LoadBalancer-Dienst erstellen, der mit einer öffentlichen IPv4-IP und einer öffentlichen IPv6-IP bereitgestellt wird. In älteren Versionen wird jedoch nur die erste IP-Adresse für einen Dienst für den Lastenausgleich bereitgestellt, sodass ein Dual-Stack-Dienst nur eine öffentliche IP für die erste aufgeführte IP-Familie empfängt. Wenn Sie für eine einzelne Bereitstellung einen Dienst mit dualem Stapel bereitstellen möchten, müssen zwei auf den gleichen Selektor ausgerichtete Dienste erstellt werden: einer für IPv4 und einer für IPv6.
AKS ab v1.27
Machen Sie die NGINX-Bereitstellung mit dem Befehl „
kubectl expose deployment nginx“ verfügbar.kubectl expose deployment nginx --name=nginx --port=80 --type=LoadBalancer --overrides='{"spec":{"ipFamilyPolicy": "PreferDualStack", "ipFamilies": ["IPv4", "IPv6"]}}'Ihnen wir eine Ausgabe angezeigt, die besagt, dass die Dienste verfügbar gemacht wurden.
service/nginx exposedNachdem die Bereitstellung verfügbar gemacht wurde und die
LoadBalancer-Dienste vollständig bereitgestellt wurden, rufen Sie die IP-Adressen der Dienste mithilfe des Befehls „kubectl get services“ ab.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"]Überprüfen Sie die Funktionalität über eine Befehlszeilenwebanforderung von einem IPv6-fähigen Host. Azure Cloud Shell ist nicht IPv6-fähig.
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 älter als v1.27
Machen Sie die NGINX-Bereitstellung mit dem Befehl „
kubectl expose deployment nginx“ 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":{"ipFamilies": ["IPv6"]}}'Ihnen wir eine Ausgabe angezeigt, die besagt, dass die Dienste verfügbar gemacht wurden.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedNachdem die Bereitstellung verfügbar gemacht wurde und die
LoadBalancer-Dienste vollständig bereitgestellt wurden, rufen Sie die IP-Adressen der Dienste mithilfe des Befehls „kubectl get services“ 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 über eine Befehlszeilenwebanforderung von einem IPv6-fähigen Host. Azure Cloud Shell ist nicht IPv6-fähig.
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>