Konfigurieren von Azure CNI-Überlagerungsnetzwerken in Azure Kubernetes Service (AKS)

In diesem Artikel werden der Einrichtungsprozess, die Konfiguration von Dual-Stack-Netzwerk und eine Beispielarbeitsauslastungsbereitstellung für Azure CNI Overlay in Azure Kubernetes Service (AKS)-Clustern erläutert. Eine Übersicht über das Azure CNI-Overlaynetzwerk finden Sie in der Übersicht über das Azure CNI-Overlaynetzwerk in Azure Kubernetes Service (AKS).

Wichtig

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 Ankündigung zur Außerdienststellung von Azure Updates. Um über Ankündigungen und Updates auf dem Laufenden zu bleiben, folgen Sie den AKS-Release-Notes.

Voraussetzungen

  • Ein Azure-Abonnement. Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
  • Azure CLI, Version 2.48.0 oder höher. Informationen zum Installieren oder Aktualisieren der Azure CLI finden Sie unter Installieren der Azure CLI.
  • Eine vorhandene Azure-Ressourcengruppe. Wenn Sie eine erstellen müssen, lesen Sie " Erstellen von Ressourcengruppen".
  • Wenn Sie Ihr eigenes virtuelles Netzwerk mitbringen, überprüfen Sie die Voraussetzungen für das virtuelle Netzwerk.

Verwenden Sie für duale Stapelnetzwerke eine unterstützte Kubernetes-Version in AKS , die in Ihrer Region verfügbar ist.

Wichtige Parameter für Azure CNI Overlay AKS-Cluster

In der folgenden Tabelle werden die wichtigsten Parameter für die Konfiguration des Azure CNI-Overlaynetzwerks in AKS-Clustern beschrieben:

Parameter Description
--network-plugin Setzen Sie azure, um die Azure Container Networking Interface (CNI)-Netzwerkschnittstelle zu verwenden.
--network-plugin-mode Setzen Sie diese Einstellung auf overlay, um das Azure CNI-Overlaynetzwerk zu aktivieren. Diese Einstellung gilt nur, wenn --network-plugin=azure.
--pod-cidr Geben Sie einen benutzerdefinierten Pod-CIDR-Block (Classless Inter-Domain Routing) für den Cluster an. Der Standardwert lautet 10.244.0.0/16.

Das Standardverhalten für Netzwerk-Plug-Ins hängt davon ab, ob Sie explizit folgendes festlegen --network-plugin:

  • Wenn Sie nicht angeben --network-plugin, wird AKS standardmäßig auf Azure CNI Overlay festgelegt.
  • Wenn Sie --network-plugin=azure angeben und --network-plugin-mode weglassen, verwendet AKS absichtlich den Modus des virtuellen Netzwerks (Knotensubnetz) für die Rückwärtskompatibilität.

Erstellen eines Azure CNI Overlay AKS-Clusters

Erstellen Sie einen Azure CNI Overlay AKS-Cluster mithilfe des az aks create Befehls mit --network-plugin=azure und --network-plugin-mode=overlay. Wenn Sie keinen Wert für --pod-cidr angeben, weist AKS den Standardwert 10.244.0.0/16 zu.

az aks create \
  --name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $REGION \
  --network-plugin azure \
  --network-plugin-mode overlay \
  --pod-cidr 192.168.0.0/16 \
  --generate-ssh-keys

Hinzufügen eines neuen Knotenpools zu einem dedizierten Subnetz

Fügen Sie einen Knotenpool einem anderen Subnetz innerhalb desselben virtuellen Netzwerks hinzu, um die IP-Adressen von virtuellen Maschinen (VMs) für den Netzwerkverkehr zu virtuellen oder gepaarten virtuellen Netzwerkressourcen zu steuern.

Fügen Sie dem Cluster mithilfe des az aks nodepool add Befehls einen neuen Knotenpool hinzu, und geben Sie die Subnetzressourcen-ID mit dem --vnet-subnet-id Parameter an. Beispiel:

az aks nodepool add \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NODE_POOL_NAME \
  --node-count 1 \
  --mode system \
  --vnet-subnet-id $SUBNET_RESOURCE_ID

Informationen zu Azure CNI Overlay AKS-Clustern mit Dual-Stack-Netzwerk

Sie können Ihre Azure CNI Overlay AKS-Cluster in einem Dual-Stack-Modus mit einem virtuellen Azure-Netzwerk bereitstellen. In dieser Konfiguration erhalten Knoten sowohl eine IPv4- als auch eine IPv6-Adresse aus dem Subnetz des virtuellen Azure-Netzwerks. Pods erhalten eine IPv4- und IPv6-Adresse aus einem anderen Adressraum als das virtuelle Azure-Netzwerk-Subnetz 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 ist NAT'd an die primäre IP-Adresse des VIRTUELLEN Knotens derselben Familie (IPv4 zu IPv4 und IPv6 zu IPv6).

Hinweis

Sie können auch Dual-Stack-Netzwerkcluster mithilfe von Azure CNI Powered by Cilium bereitstellen. Weitere Informationen finden Sie unter Dual-Stack-Netzwerk mit Azure CNI Powered by Cilium.

Dual-Stack-Netzwerkbeschränkungen

Die folgenden Features werden bei Netzwerken mit dualem Stapel nicht unterstützt:

Wichtige Parameter für duale Stapelnetzwerke

In der folgenden Tabelle werden die wichtigsten Parameter für die Konfiguration von Dual-Stack-Netzwerken in Azure CNI Overlay AKS-Clustern beschrieben:

Parameter Description
--ip-families Akzeptiert eine durch Trennzeichen getrennte Liste von IP-Familien, um das Cluster zu aktivieren. Nur ipv4 und ipv4,ipv6 werden unterstützt.
--pod-cidrs Nimmt eine durch Kommas getrennte Liste von IP-Adressbereichen in CIDR-Notation (Classless Inter-Domain Routing) entgegen, aus denen Pod-IPs zugewiesen werden sollen. Anzahl und Reihenfolge der Bereiche in dieser Liste müssen dem für --ip-families angegebenen Wert entsprechen. Wenn Sie keine Werte angeben, verwendet der Parameter den Standardwert von 10.244.0.0/16,fd12:3456:789a::/64.
--service-cidrs Akzeptiert eine durch Kommas getrennte Liste von CIDR-Notation-IP-Bereichen, aus denen Dienst-IPs zugewiesen werden sollen. Anzahl und Reihenfolge der Bereiche in dieser Liste müssen dem für --ip-families angegebenen Wert entsprechen. Wenn Sie keine Werte angeben, verwendet der Parameter den Standardwert von 10.0.0.0/16,fd12:3456:789a:1::/108. Das zugewiesene --service-cidrs IPv6-Subnetz darf nicht größer sein als /108.

Erstellen eines dualen Stapels Azure CNI Overlay AKS-Cluster (Linux)

  1. Erstellen Sie mithilfe des az group create Befehls eine Azure-Ressourcengruppe für den Cluster:

    az group create --location $REGION --name $RESOURCE_GROUP
    
  2. Erstellen Sie einen Dual-Stack-AKS-Cluster, indem Sie den az aks create Befehl mit dem --ip-families Parameter verwenden, der auf ipv4,ipv6 festgelegt ist:

    az aks create \
      --location $REGION \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME \
      --network-plugin azure \
      --network-plugin-mode overlay \
      --ip-families ipv4,ipv6 \
      --generate-ssh-keys
    

Erstellen eines dualen Stapels Azure CNI Overlay AKS-Cluster (Windows)

  1. Erstellen Sie einen Cluster mit Azure CNI Overlay mithilfe des az aks create Befehls:

    az aks create \
      --name $CLUSTER_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $REGION \
      --network-plugin azure \
      --network-plugin-mode overlay \
      --ip-families ipv4,ipv6 \
      --generate-ssh-keys
    
  2. Fügen Sie dem Cluster mithilfe des az aks nodepool add Befehls einen Windows-Knotenpool hinzu:

    az aks nodepool add \
      --resource-group $RESOURCE_GROUP \
      --cluster-name $CLUSTER_NAME \
      --os-type Windows \
      --name $WINDOWS_NODE_POOL_NAME \
      --node-count 2
    

Bereitstellen eines Beispielworkloads auf dem AKS-Cluster von Azure CNI Overlay

Stellen Sie Dual-Stack-AKS-CNI-Overlaycluster mit IPv4/IPv6-Adressen auf virtuellen Computerknoten bereit. In diesem Beispiel wird ein NGINX-Webserver bereitgestellt und mithilfe eines LoadBalancer Diensts mit IPv4- und IPv6-Adressen verfügbar gemacht.

Bevor Sie die Workload verfügbar machen, stellen Sie sicher, dass eine NGINX-Bereitstellung in Ihrem Cluster ausgeführt wird. Wenn Sie noch keines haben, erstellen Sie die Bereitstellung, und warten Sie, bis sie mit den folgenden Befehlen bereit sind:

kubectl create deployment nginx --image=nginx
kubectl rollout status deployment/nginx

Hinweis

Wir empfehlen, das Anwendungsrouting-Add-On für Ingress in AKS-Clustern zu verwenden. Zu Demonstrationszwecken stellt dieses Beispiel jedoch einen NGINX-Webserver ohne das Anwendungsrouting-Add-On bereit. Weitere Informationen zum Add-on finden Sie unter Managed NGINX Ingress mit dem Application Routing Add-on.

Stellen Sie die Arbeitslast mithilfe eines LoadBalancer-Diensts bereit

Geben Sie die NGINX-Bereitstellung mithilfe von kubectl-Befehlen oder YAML-Manifesten frei.

In diesem Abschnitt wird davon ausgegangen, dass eine benannte NGINX-Bereitstellung nginx in Ihrem Cluster ausgeführt wird. Um zu überprüfen, ob die Bereitstellung vorhanden ist und bereit ist, führen Sie kubectl get deployment nginxalle gewünschten Replikate aus, und bestätigen Sie, dass alle gewünschten Replikate bereit sind.

Wichtig

Es gibt derzeit zwei Einschränkungen für IPv6-Dienste in AKS:

  • Von Azure Load Balancer werden über eine verbindungslokale Adresse Integritätstests an IPv6-Ziele gesendet. In Azure Linux-Knotenpools können Sie diesen Datenverkehr nicht an einen Pod weiterleiten, sodass der Datenverkehr zu IPv6-Diensten, die mit externalTrafficPolicy: Cluster bereitgestellt wurden, scheitert.
  • Sie müssen IPv6-Dienste mit externalTrafficPolicy: Local bereitstellen, wodurch kube-proxy auf die Abfrage auf dem Knoten antwortet.
  1. Machen Sie die NGINX-Bereitstellung mithilfe des kubectl expose deployment nginx Befehls verfügbar. Der erste Befehl erstellt einen IPv4-Dienst LoadBalancer . Der zweite Befehl erstellt einen IPv6-Dienst LoadBalancer und verwendet den --overrides JSON-Code, um ipFamilies auf IPv6 und den erforderlichen externalTrafficPolicy auf Local:

    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"]}}'
    

    Ihre Ausgabe sollte die verfügbar gemachten Dienste anzeigen. Beispiel:

    service/nginx-ipv4 exposed
    service/nginx-ipv6 exposed
    
  2. Nachdem das Deployment freigegeben und die LoadBalancer Dienste vollständig bereitgestellt sind, rufen Sie die IP-Adressen der Dienste mithilfe des kubectl get services Befehls ab:

    kubectl get services
    

    Ihre Ausgabe sollte die Dienste mit ihren zugewiesenen IP-Adressen anzeigen. Beispiel:

    NAME         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
    
  3. Rufen Sie die Dienst-IP mithilfe des kubectl get services Befehls ab, und legen Sie sie auf eine Umgebungsvariable fest:

    Der Befehl verwendet den JSONPath-Ausdruck {.status.loadBalancer.ingress[0].ip} , um die externe IP-Adresse aus dem ersten Eintrag im Feld "Lastenausgleich" des Diensts zu extrahieren und in der SERVICE_IP Variablen zu speichern.

    SERVICE_IP=$(kubectl get services nginx-ipv6 -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  4. Überprüfen Sie die Funktionalität mithilfe einer curl Anforderung von einem IPv6-fähigen Host. (Azure Cloud Shell ist nicht IPv6-fähig.)

    curl -s "http://[${SERVICE_IP}]" | head -n5
    

    Ihre Ausgabe sollte den HTML-Code für die NGINX-Willkommensseite anzeigen. Beispiel:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
    

Weitere Informationen zum Azure CNI Overlay-Netzwerk auf AKS finden Sie in den folgenden Artikeln: