Erstellen eines verwalteten oder benutzerseitig zugewiesenen NAT-Gateways für Ihren AKS-Cluster (Azure Kubernetes Service)

Sie können den ausgehenden Datenverkehr zwar über einen Azure Load Balancer leiten, aber es gibt Grenzwerte für die Anzahl der ausgehenden Datenströme, die Sie nutzen können. Azure NAT Gateway lässt pro IP-Adresse bis zu 64.512 ausgehende UDP- und TCP-Datenverkehrsflüsse sowie maximal 16 IP-Adressen zu.

In diesem Artikel erfahren Sie, wie Sie einen AKS-Cluster (Azure Kubernetes Service) mit einem verwalteten NAT-Gateway und einem benutzerseitig zugewiesenen NAT-Gateway für ausgehenden Datenverkehr erstellen. Außerdem wird gezeigt, wie Sie OutboundNAT unter Windows deaktivieren können.

Voraussetzungen

  • Stellen Sie sicher, dass Sie die aktuelle Version der Azure-Befehlszeilenschnittstelle verwenden.
  • Stellen Sie sicher, dass Sie Kubernetes Version 1.20.x oder höher verwenden.
  • Das verwaltete NAT-Gateway ist nicht mit benutzerdefinierten virtuellen Netzwerken kompatibel.

Erstellen eines AKS-Clusters mit einem verwalteten NAT Gateway

  • Erstellen Sie einen AKS-Cluster mit einem neuen verwalteten NAT-Gateway, indem Sie den Befehl az aks create mit den Parametern --outbound-type managedNATGateway, --nat-gateway-managed-outbound-ip-countund --nat-gateway-idle-timeout verwenden. Wenn das NAT-Gateway aus einer bestimmten Verfügbarkeitszone ausgeführt werden soll, geben Sie die Zone mithilfe von --zones.

  • Wenn beim Erstellen eines verwalteten NAT-Gateways keine Zone angegeben wird, wird das NAT-Gateway standardmäßig in "no zone" bereitgestellt. Wenn ein NAT-Gateway in keine Zone platziert wird, platziert Azure die Ressource in einer Zone für Sie. Weitere Informationen zum nicht zonalen Bereitstellungsmodell finden Sie unter Nicht-zonales NAT-Gateway.

  • Eine verwaltete NAT-Gatewayressource kann nicht in mehreren Verfügbarkeitszonen verwendet werden.

      az aks create \
          --resource-group myResourceGroup \
          --name myNatCluster \
          --node-count 3 \
          --outbound-type managedNATGateway \
          --nat-gateway-managed-outbound-ip-count 2 \
          --nat-gateway-idle-timeout 4
    
  • Aktualisieren Sie die ausgehende IP-Adresse oder das Leerlauftimeout mit dem Befehl az aks update mit dem Parameter --nat-gateway-managed-outbound-ip-count oder --nat-gateway-idle-timeout.

    az aks update \ 
        --resource-group myResourceGroup \
        --name myNatCluster\
        --nat-gateway-managed-outbound-ip-count 5
    

Erstellen eines AKS-Clusters mit einem benutzerseitig zugewiesenen NAT Gateway

Diese Konfiguration setzt voraus, dass Sie ein eigenes Netzwerk mitbringen (über Kubenet oder Azure CNI) und dass das NAT-Gateway im Subnetz vorkonfiguriert ist. Die folgenden Befehle erstellen die erforderlichen Ressourcen für dieses Szenario.

  1. Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe.

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Erstellen Sie eine verwaltete Identität für Netzwerkberechtigungen, und speichern Sie die ID in $IDENTITY_ID zur späteren Verwendung.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. Erstellen Sie mit dem Befehl az network public-ip create eine öffentliche IP-Adresse für das NAT-Gateway.

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. Erstellen Sie das NAT-Gateway mit dem Befehl az network nat gateway create.

    az network nat gateway create \
        --resource-group myResourceGroup \
        --name myNatGateway \
        --location southcentralus \
        --public-ip-addresses myNatGatewayPip
    

    Wichtig

    Eine einzelne NAT-Gatewayressource kann nicht in mehreren Verfügbarkeitszonen verwendet werden. Um Zonenresilienz zu gewährleisten, wird empfohlen, eine NAT-Gatewayressource für jede Verfügbarkeitszone bereitzustellen und Subnetze zuzuweisen, die AKS-Cluster in jeder Zone enthalten. Weitere Informationen zu diesem Bereitstellungsmodell finden Sie unter NAT-Gateway für jede Zone. Wenn keine Zone für das NAT-Gateway konfiguriert ist, lautet die Standardzonenplatzierung „keine Zone”, in der Azure das NAT-Gateway für Sie in einer Zone platziert.

  5. Erstellen Sie ein virtuelles Netzwerk mit dem Befehl az network vnet create.

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --location southcentralus \
        --address-prefixes 172.16.0.0/20 
    
  6. Erstellen Sie ein Subnetz im virtuellen Netzwerk mithilfe des NAT Gateways, und speichern Sie die ID in $SUBNET_ID zur späteren Verwendung.

    SUBNET_ID=$(az network vnet subnet create \
        --resource-group myResourceGroup \
        --vnet-name myVnet \
        --name myNatCluster \
        --address-prefixes 172.16.0.0/22 \
        --nat-gateway myNatGateway \
        --query id \
        --output tsv)
    
  7. Erstellen Sie einen AKS-Cluster unter Verwendung des Subnetzes mit dem NAT Gateway und der verwalteten Identität mit dem Befehl az aks create.

    az aks create \
        --resource-group myResourceGroup \
        --name myNatCluster \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID
    

Deaktivieren von OutboundNAT für Windows (Vorschau)

Windows OutboundNAT kann bestimmte Verbindungs- und Kommunikationsprobleme mit Ihren AKS-Pods verursachen. Ein Beispielproblem ist die Wiederverwendung von Knotenports. In diesem Beispiel verwendet Windows OutboundNAT Ports, um Ihre Pod-IP-Adresse in Ihre Windows-Knotenhost-IP-Adresse zu übersetzen, was aufgrund eines Problems durch Portauslastung zu einer instabilen Verbindung mit dem externen Dienst führen kann.

Windows aktiviert OutboundNAT standardmäßig. Sie können OutboundNAT jetzt manuell deaktivieren, wenn Sie neue Windows-Agentpools erstellen.

Voraussetzungen

  • Wenn Sie Kubernetes, Version 1.25 oder niedriger, verwenden, müssen Sie Ihre Bereitstellungskonfiguration aktualisieren.

  • Sie müssen aks-preview installieren oder aktualisieren und das Feature-Flag registrieren.

    1. Installieren oder aktualisieren Sie aks-preview mit dem Befehl az extension add oder az extension update.
    # Install aks-preview
    az extension add --name aks-preview
    
    # Update aks-preview
    az extension update --name aks-preview
    
    1. Registrieren Sie das Featureflag mit dem Befehl az feature register.
    az feature register --namespace Microsoft.ContainerService --name DisableWindowsOutboundNATPreview
    
    1. Überprüfen Sie den Registrierungsstatus mit dem Befehl az feature list.
    az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/DisableWindowsOutboundNATPreview')].{Name:name,State:properties.state}"
    
    1. Aktualisieren Sie die Registrierung des Microsoft.ContainerService Ressourcenanbieters mithilfe des Befehls az provider register.
    az provider register --namespace Microsoft.ContainerService
    

Begrenzungen

  • Sie können den ausgehenden Clustertyp nicht auf LoadBalancer festlegen. Sie können ihn auf NAT-Gateway oder UDR festlegen:
    • NAT-Gateway: NAT-Gateway kann nat-Verbindung automatisch verarbeiten und ist leistungsstärker als der Standard-Load Balancer. Mit dieser Option können zusätzliche Gebühren anfallen.
    • UDR (UserDefinedRouting): Beim Konfigurieren von Routingregeln müssen Portbeschränkungen beachtet werden.
    • Wenn Sie von einem Lastenausgleich zum NAT Gateway wechseln müssen, können Sie entweder im VNet ein NAT Gateway hinzufügen oder az aks upgrade ausführen, um den Typ der ausgehenden Kommunikation zu aktualisieren.

Hinweis

UserDefinedRouting hat die folgenden Einschränkungen:

  • SNAT by Load Balancer (muss die standardmäßige OutboundNAT verwenden) verfügt über „64 Ports auf der Host-IP“.
  • SNAT von Azure Firewall (OutboundNAT deaktivieren) verfügt über 2496 Ports pro öffentliche IP.
  • SNAT by NAT Gateway (OutboundNAT deaktivieren) verfügt über 64512 Ports pro öffentliche IP.
  • Wenn der Azure Firewall-Portbereich für Ihre Anwendung nicht ausreicht, müssen Sie NAT-Gateway verwenden.
  • Azure Firewall bietet kein SNAT mit Netzwerkregeln, wenn die Ziel-IP-Adresse ein privater IP-Adressbereich gemäß IANA RFC 1918 oder ein geteilter Adressraum gemäß IANA RFC 6598 ist.

Manuelles Deaktivieren von OutboundNAT für Windows

  • Wenn Sie neue Windows-Agentenpools erstellen, deaktivieren Sie OutboundNAT für Windows manuell mit dem Befehl az aks nodepool add und dem Flag --disable-windows-outbound-nat.

    Hinweis

    Sie können einen vorhandenen AKS-Cluster verwenden, müssen jedoch eventuell den ausgehenden Typ aktualisieren und einen Knotenpool hinzufügen, um --disable-windows-outbound-nat zu aktivieren.

    az aks nodepool add \
        --resource-group myResourceGroup
        --cluster-name myNatCluster
        --name mynodepool
        --node-count 3
        --os-type Windows
        --disable-windows-outbound-nat
    

Nächste Schritte

Weitere Informationen zu Azure NAT Gateway finden Sie unter Azure NAT Gateway.