Freigeben über


Erstellung eines verwalteten oder vom Benutzer zugewiesenen NAT-Gateways für Ihren Azure Kubernetes Service (AKS-Cluster)

Sie können den Datenverkehr zwar über eine Azure Load Balancer weiterleiten, es gibt jedoch Einschränkungen hinsichtlich der Anzahl ausgehender Datenverkehrsströme, die Sie haben können. Azure NAT Gateway ermöglicht bis zu 64.512 ausgehende UDP- und TCP-Datenverkehrsflüsse pro IP-Adresse mit maximal 16 IP-Adressen. Es gibt drei ausgehende Typen, die NAT-Gateway unterstützen: managedNATGatewayV2 (Vorschau), managedNATGateway und userAssignedNATGateway.

In einem verwalteten NAT-Gatewaymodell verwaltet AKS das NAT-Gateway, um ausgehende Verbindungen für Ihre Clusterknoten bereitzustellen. AKS unterstützt zwei verwaltete NAT-Gatewayoptionen: die neuere managedNATGatewayV2 und die ursprüngliche managedNATGateway. managedNATgatewayV2 verwendet standardV2 NAT-Gateway, das standardmäßig zonenredundant ist und eine fortgesetzte ausgehende Konnektivität bereitstellt, auch wenn eine Verfügbarkeitszone abläuft. Im Gegensatz zum Standard-NAT-Gateway müssen Sie keine spezifische Zone angeben; die Zonen-Redundanz ist automatisch integriert. StandardV2 NAT-Gateway unterstützt auch IPv6, hohen Durchsatz und Flussprotokolle. Weitere Informationen finden Sie unter StandardV2 NAT-Gateway-SKU.

Wichtig

Der ausgehende Typ managedNATGatewayV2 befindet sich derzeit in der VORSCHAU. Lesen Sie die Supplemental-Nutzungsbedingungen für Microsoft Azure Previews für rechtliche Bedingungen, die für Azure Features gelten, die sich in der Betaversion, vorschau oder auf andere Weise noch nicht in der allgemeinen Verfügbarkeit befinden.

userAssignedNATGateway ist eine vom Kunden verwaltete NAT-Gateway-Ressource, die Sie unabhängig von AKS konfigurieren und benötigen, wenn Sie ein eigenes virtuelles Netzwerk verwenden.

In diesem Artikel erfahren Sie, wie Sie einen Azure Kubernetes Service (AKS)-Cluster mit einem verwalteten NAT-Gateway und einem vom Benutzer zugewiesenen NAT-Gateway für den Ausgehenden Datenverkehr erstellen. Außerdem wird gezeigt, wie Sie "OutboundNAT" für Windows deaktivieren.

Bevor Sie beginnen

  • Stellen Sie sicher, dass Sie die neueste Version von Azure CLI 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.

Wichtig

In nicht privaten Clustern wird der API-Serverclusterdatenverkehr über den ausgehenden Clustertyp weitergeleitet und verarbeitet. Um zu verhindern, dass API-Serverdatenverkehr als öffentlicher Datenverkehr verarbeitet wird, sollten Sie einen privaten Clusterverwenden oder das Feature API-Server-VNET-Integration ausprobieren.

Erstellen Sie einen AKS-Cluster mit einem managedNATgatewayV2

  • Erstellen Sie einen AKS-Cluster mit einem verwalteten StandardV2 NAT-Gateway mithilfe des az aks create Befehls mit den Parametern --outbound-type managedNATGateway, , --nat-gateway-outbound-ips--nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-ip-countund --nat-gateway-managed-outbound-ipv6-count--nat-gateway-idle-timeout .
  • Beim Konfigurieren ausgehender IPs für einen managedNATgatewayV2 müssen Sie one der folgenden Ansätze verwenden – Sie können nicht sowohl Azure verwaltete als auch kundendefinierte ausgehende IPs verwenden:
    • Azure-managed IPs – Verwenden Sie --nat-gateway-managed-ip-outbound-count und/oder --nat-gateway-managed-outbound-ipv6-count, um Azure die ausgehenden öffentlichen IPs in Ihrem Auftrag automatisch zuzuweisen und zu verwalten.
    • Kundendefinierte IPs – Verwenden --nat-gateway-outbound-ips und/oder --nat-gateway-outbound-ip-prefixes um Ihre eigenen vorab bereitgestellten öffentlichen IP-Adressen oder Präfixe mitzubringen, sodass Sie die vollständige Kontrolle über die spezifischen Adressen erhalten, die für ausgehenden Datenverkehr verwendet werden. StandardV2 NAT Gateway erfordert die Verwendung neuer öffentlicher StandardV2-IPs. Vorhandene öffentliche Standard-SKU-IPs funktionieren nicht mit StandardV2 NAT-Gateway.

In der folgenden Tabelle werden die einzelnen ausgehenden IP-Parameter und deren Verwendung beschrieben:

Parameter Eingabe IP-Version Wer verwaltet die öffentlichen IPs
--nat-gateway-managed-outbound-ip-count Wert im Bereich von [1, 16]. Gewünschte Anzahl ausgehender IPv4s für ausgehende NAT-Gatewayverbindung. IPv4 Azure
--nat-gateway-managed-outbound-ipv6-count Wert im Bereich von [1, 16]. Gewünschte Anzahl ausgehender IPv6s für ausgehende NAT-Gatewayverbindung. IPv6 Azure
--nat-gateway-outbound-ips Durch Trennzeichen getrennte öffentliche IP-Ressourcen-IDs für ausgehende NAT-Gatewayverbindung. IPv4 oder IPv6 Customer
--nat-gateway-outbound-ip-prefixes Durch Kommas getrennte IP-Präfix-Ressourcen-IDs für ausgehende NAT-Gateway-Verbindungen. IPv4 oder IPv6 Customer

managedNATGatewayV2 Der ausgehende Typ befindet sich derzeit in der Vorschau. Um diesen ausgehenden Typ zu verwenden, sind die folgenden Schritte erforderlich: Installieren Sie die Azure CLI-Erweiterung aks-preview und registrieren Sie das Feature-Flag ManagedNATGatewayV2Preview.

Wichtig

AKS-Preview-Funktionen stehen auf Selbstbedienungs- und Opt-in-Basis zur Verfügung. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

  1. Installieren oder aktualisieren Sie die Azure CLI Vorschauerweiterung mithilfe des Befehls az extension add oder az extension update.

    Die Mindestversion der Aks-Vorschau-Azure CLI Erweiterung ist 20.0.0b1.

    # Install the aks-preview extension
    az extension add --name aks-preview
    # Update the extension to make sure you have the latest version installed
    az extension update --name aks-preview
    
  2. Registriere die ManagedNATGatewayV2Preview-Feature-Flag

    Registrieren Sie das Featureflag ManagedNATGatewayV2Preview mithilfe des Befehls az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    

    Überprüfen Sie die erfolgreiche Registrierung mithilfe des az feature show Befehls. Es dauert ein paar Minuten, bis die Registrierung abgeschlossen ist.

    az feature show --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    

    Sobald das Feature Registered angezeigt wird, aktualisieren Sie die Registrierung des ressourcenanbieters Microsoft.ContainerService mithilfe des Befehls az provider register.

    Die folgenden Befehle erstellen die erforderliche Ressourcengruppe, die öffentlichen IP- und öffentlichen IP-Präfixressourcen, die an das NAT-Gateway angefügt werden sollen, und den AKS-Cluster mit einem verwalteten StandardV2 NAT-Gateway.

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

    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    export MY_AKS="myNatV2Cluster$RANDOM_SUFFIX"
    export MY_IP="myNatOutboundIP$RANDOM_SUFFIX"
    export MY_IP_PREFIX="myNatOutboundIPPrefix$RANDOM_SUFFIX"
    az group create --name $MY_RG --location "eastus2"
    
  4. Erstellen Sie eine zoneredundante öffentliche IPv4-Adresse und ein zoneredundantes öffentliches IP-Präfix mithilfe des az network public-ip create Befehls. Speichern Sie $MY_IP und $MY_IP_PREFIX, um diese als ausgehende IPs für das verwaltete StandardV2-NAT-Gateway zu verwenden.

    export MY_IP_ID=$(az network public-ip create \
        --resource-group $MY_RG \
        --name $MY_IP \
        --location eastus2 \
        --sku StandardV2 \
        --allocation-method Static \
        --version IPv4 \
        --zone 1 2 3 \
        --query id \
        --output tsv)
    
    export MY_IP_PREFIX_ID=$(az network public-ip prefix create \
        --resource-group $MY_RG \
        --name $MY_IP_PREFIX \
        --location eastus2 \
        --length 31 \
        --sku StandardV2 \
        --version IPv4 \
        --zone 1 2 3 \
        --query id \
        --output tsv)
    
  5. Erstellen Sie den AKS-Cluster, und verweisen Sie auf die öffentliche IP-Adresse ($MY_IP_ID) und das öffentliche IP-Präfix ($MY_IP_PREFIX_ID).

    az aks create \
        --resource-group $MY_RG \
        --name $MY_AKS \
        --node-count 3 \
        --outbound-type managedNATGatewayV2 \
        --nat-gateway-outbound-ips $MY_IP_ID \
        --nat-gateway-outbound-ip-prefixes $MY_IP_PREFIX_ID \
        --nat-gateway-idle-timeout 4 \
        --generate-ssh-keys
    

Aktualisieren Sie die ausgehenden IPs, die ausgehenden IP-Präfixe, die Anzahl der verwalteten ausgehenden IPs oder das Leerlauf-Timeout mithilfe des Befehls mit dem Parameter az aks update, --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count oder --nat-gateway-idle-timeout. Eine managedNATGatewayV2 lässt sich nach der Erstellung nicht aktualisieren, um zwischen benutzerdefinierten und verwalteten ausgehenden IP-Adressen zu wechseln. Die ausgehende IP-Konfiguration wird bestimmt, wenn das StandardV2 NAT-Gateway anfangs erstellt wird und unveränderlich bleibt.

Erstellen Sie einen AKS-Cluster mit einem managedNATgateway

  • Erstellen Sie einen AKS-Cluster mit einem verwalteten Standard-NAT-Gateway mithilfe des az aks create Befehls mit --outbound-type managedNATGateway. --nat-gateway-managed-outbound-ip-count und --nat-gateway-idle-timeout Parameter. Wenn das NAT-Gateway aus einer bestimmten Verfügbarkeitszone heraus betrieben werden soll, geben Sie die Zone mit --zones an.

  • Eine verwaltete NAT-Gatewayressource kann nicht über mehrere Verfügbarkeitszonen hinweg verwendet werden. Bei zonenredundanten ausgehenden Verbindungen sollten Sie #create-an-aks-cluster-with-a-managed-nat-gateway-v2 verwenden.

  • Wenn beim Erstellen eines verwalteten NAT-Gateways keine Zone angegeben wird, wird das NAT-Gateway standardmäßig in „Keine Zone“ bereitgestellt. Wenn das NAT-Gateway in no 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.

Erstellen Sie einen AKS-Cluster mit einem userAssignedNatGateway

Diese Konfiguration erfordert bring-your-own Networking (über Azure CNI) und dass das NAT-Gateway im Subnetz vorkonfiguriert ist. Sowohl Standard- als auch StandardV2-NAT-Gateways werden hierfür outbound-typeunterstützt. Die folgenden Befehle erstellen die erforderlichen Ressourcen zum Bereitstellen einer StandardV2 NAT-Gatewayressource für Ihren AKS-Cluster.

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

    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    az group create --name $MY_RG --location southcentralus
    
  2. Erstellen Sie eine verwaltete Identität für Netzwerkberechtigungen, und speichern Sie die ID in $IDENTITY_ID zur späteren Verwendung.

    export IDENTITY_NAME="myNatClusterId$RANDOM_SUFFIX"
    export IDENTITY_ID=$(az identity create \
        --resource-group $MY_RG \
        --name $IDENTITY_NAME \
        --location southcentralus \
        --query id \
        --output tsv)
    

    Ergebnisse:

    /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxx
    
  3. Erstellen Sie eine öffentliche StandardV2-IP für das NAT-Gateway mit dem az network public-ip create Befehl. Ein Nat-Gateway mit StandardV2 erfordert eine öffentliche StandardV2-IP-Adresse.

    export PIP_NAME="myNatGatewayPip$RANDOM_SUFFIX"
    az network public-ip create \
        --resource-group $MY_RG \
        --name $PIP_NAME \
        --location southcentralus \
        --allocation-method Static \
        --version IPv4 \
        --zone 1 2 3 \
        --sku standard-v2
    
  4. Erstellen Sie das StandardV2 NAT-Gateway mithilfe des az network nat gateway create Befehls.

    export NATGATEWAY_NAME="myNatGateway$RANDOM_SUFFIX"
    az network nat gateway create \
        --resource-group $MY_RG \
        --name $NATGATEWAY_NAME \
        --location southcentralus \
        --public-ip-addresses $PIP_NAME \
        --sku StandardV2
        --idle-timeout 4
    

    Wichtig

    Um Zonenredundanz sicherzustellen, empfiehlt es sich, eine StandardV2 NAT-Gatewayressource bereitzustellen, die sich über mehrere Verfügbarkeitszonen in einer Region erstreckt. Dadurch wird eine fortgesetzte ausgehende Verbindung sichergestellt, auch wenn eine einzelne Zone fehlschlägt. Weitere Informationen zu StandardV2 NAT-Gateway und seinen Vorteilen finden Sie unter StandardV2 NAT Gateway. Im Vergleich dazu bietet eine Standardmäßige NAT-Gatewayressource Resilienz nur innerhalb der Verfügbarkeitszone, in der sie bereitgestellt wird.

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

    export VNET_NAME="myVnet$RANDOM_SUFFIX"
    az network vnet create \
        --resource-group $MY_RG \
        --name $VNET_NAME \
        --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.

    export SUBNET_NAME="myNatCluster$RANDOM_SUFFIX"
    export SUBNET_ID=$(az network vnet subnet create \
        --resource-group $MY_RG \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 172.16.0.0/22 \
        --nat-gateway $NATGATEWAY_NAME \
        --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.

    export AKS_NAME="myNatCluster$RANDOM_SUFFIX"
    az aks create \
        --resource-group $MY_RG \
        --name $AKS_NAME \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --assign-identity $IDENTITY_ID \
        --generate-ssh-keys
    

OutboundNAT für Windows deaktivieren

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 in Ihre Windows Knotenhost-IP zu übersetzen, was zu einer instabilen Verbindung mit dem externen Dienst aufgrund eines Portausschöpfungsproblems führen kann.

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

Voraussetzungen

Begrenzungen

  • Sie können den ausgehenden Clustertyp nicht auf LoadBalancer festlegen. Sie können es auf NAT-Gateway oder UDR festlegen:
    • NAT-Gateway: NAT-Gateway kann nat-Verbindung automatisch verarbeiten und ist leistungsstärker als Load Balancer Standard. 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 by Azure Firewall (Disable OutboundNAT) 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 führt kein SNAT mit Netzwerkregeln aus, wenn sich die Ziel-IP-Adresse in einem privaten IP-Adressbereich laut IANA RFC 1918 oder in einem gemeinsam genutzten Adressbereich laut IANA RFC 6598 befindet.

Manuelles Deaktivieren von OutboundNAT für Windows

  • Deaktivieren Sie "OutboundNAT" für Windows manuell, wenn Sie neue Windows-Agentpools mithilfe des Befehls az aks nodepool add mit dem Flag --disable-windows-outbound-nat erstellen.

    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.

    Mit dem folgenden Befehl wird einem vorhandenen AKS-Cluster ein Windows Knotenpool hinzugefügt, wobei OutboundNAT deaktiviert wird.

      export WIN_NODEPOOL_NAME="win$(head -c 1 /dev/urandom | xxd -p)"
      az aks nodepool add \
        --resource-group $MY_RG \
        --cluster-name $MY_AKS \
        --name $WIN_NODEPOOL_NAME \
        --node-count 3 \
        --os-type Windows \
        --disable-windows-outbound-nat
    

    Ergebnisse:

    {
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx/agentPools/mynpxxx",
      "name": "mynpxxx",
      "osType": "Windows",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroupxxx",
      "type": "Microsoft.ContainerService/managedClusters/agentPools"
    }
    

Nächste Schritte

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