Een beheerde of door de gebruiker toegewezen NAT-gateway maken voor uw Azure Kubernetes Service (AKS)-cluster

Hoewel u uitgaand verkeer via een Azure Load Balancer kunt routeren, gelden er beperkingen voor het aantal uitgaande stromen verkeer dat u kunt hebben. Azure NAT Gateway maximaal 64.512 uitgaande UDP- en TCP-verkeerstromen per IP-adres met maximaal 16 IP-adressen toestaat. Er zijn drie uitgaande typen die ondersteuning bieden voor NAT-gateway - managedNATGatewayV2 (Preview), managedNATGateway, en userAssignedNATGateway.

In een beheerd NAT-gatewaymodel beheert AKS de NAT-gateway om uitgaande connectiviteit voor uw clusterknooppunten te bieden. AKS ondersteunt twee beheerde NAT-gatewayopties: de nieuwer managedNATGatewayV2 en het origineel managedNATGateway. managedNATgatewayV2 maakt gebruik van StandardV2 NAT-gateway die standaard zone-redundant is, waardoor continue uitgaande connectiviteit wordt geboden, zelfs als één beschikbaarheidszone uitvalt. In tegenstelling tot standard NAT-gateway hoeft u geen zone op te geven -zone redundantie automatisch is ingebouwd. StandardV2 NAT-gateway ondersteunt ook IPv6, hogere doorvoer en stroomlogboeken. Zie StandardV2 NAT-gateway-SKU voor meer informatie.

Belangrijk

Het managedNATGatewayV2 uitgaande type bevindt zich momenteel in PREVIEW. Zie de Aanvullende gebruiksvoorwaarden voor Microsoft Azure previews voor juridische voorwaarden die van toepassing zijn op Azure functies die beschikbaar zijn in bèta, preview of anderszins nog niet beschikbaar zijn voor algemene beschikbaarheid.

userAssignedNATGateway is een door de klant beheerde NAT-gatewayresource die u onafhankelijk van AKS configureert en nodig is wanneer u eigen virtuele netwerken gebruikt.

In dit artikel leest u hoe u een Azure Kubernetes Service (AKS)-cluster maakt met een beheerde NAT-gateway en een door de gebruiker toegewezen NAT-gateway voor uitgaand verkeer. U ziet ook hoe u uitgaande NAT uitschakelt op Windows.

Voordat u begint

  • Zorg ervoor dat u de nieuwste versie van Azure CLI gebruikt.
  • Zorg ervoor dat u Kubernetes versie 1.20.x of hoger gebruikt.
  • Beheerde NAT-gateway is niet compatibel met aangepaste virtuele netwerken.

Belangrijk

In niet-privéclusters wordt het verkeer van API-serverclusters gerouteerd en verwerkt via het uitgaande type van de clusters. Als u wilt voorkomen dat API-serververkeer als openbaar verkeer wordt verwerkt, kunt u overwegen een privécluster te gebruiken of de functie VNet-integratie van API Server te bekijken.

Een AKS-cluster maken met een managedNATgatewayV2

  • Maak een AKS-cluster met een beheerde StandardV2 NAT-gateway met behulp van de az aks create-opdracht en de parameters --outbound-type managedNATGateway, --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-ip-count, --nat-gateway-managed-outbound-ipv6-count en --nat-gateway-idle-timeout.
  • Wanneer u uitgaande IP-adressen configureert voor een managedNATgatewayV2, moet u one van de volgende benaderingen gebruiken: u kunt niet zowel door Azure beheerde als door de klant gedefinieerde uitgaande IP-adressen gebruiken:
    • Azure beheerde IP-adressen — Gebruik --nat-gateway-managed-ip-outbound-count en/of --nat-gateway-managed-outbound-ipv6-count om de uitgaande openbare IP-adressen automatisch namens u toe Azure te wijzen en te beheren.
    • Door de klant gedefinieerde IP-adressen : gebruik --nat-gateway-outbound-ips en/of --nat-gateway-outbound-ip-prefixes om uw eigen vooraf ingerichte openbare IP-adressen of voorvoegsels te gebruiken, zodat u volledige controle hebt over de specifieke adressen die worden gebruikt voor uitgaand verkeer. StandardV2 NAT-gateway vereist het gebruik van nieuwe openbare IP-adressen van StandardV2. Bestaande openbare IP-adressen van standaard-SKU's werken niet met StandardV2 NAT-gateway.

De volgende tabel beschrijft elke uitgaande IP-parameter en wanneer u deze gebruikt:

Kenmerk Invoer IP-versie Wie beheert de openbare IP-adressen
--nat-gateway-managed-outbound-ip-count Waarde in het bereik van [1, 16]. Gewenst aantal uitgaande IPv4's voor uitgaande NAT-gatewayverbinding. IPv4 Azure
--nat-gateway-managed-outbound-ipv6-count Waarde in het bereik van [1, 16]. Gewenst aantal IPv6-adressen voor uitgaande verbindingen van de NAT-gateway. IPv6 Azure
--nat-gateway-outbound-ips Door komma's gescheiden openbare IP-resource-id's voor uitgaande NAT-gatewayverbindingen. IPv4 of IPv6 Klant
--nat-gateway-outbound-ip-prefixes Door komma's gescheiden resource-ID's voor publieke IP-prefixen voor uitgaande NAT-gatewayverbindingen. IPv4 of IPv6 Klant

managedNATGatewayV2 uitgaand type is momenteel in Preview. Om dit uitgaand type te gebruiken, zijn de volgende stappen nodig om de aks-preview Azure CLI-uitbreiding te installeren en de functievlag ManagedNATGatewayV2Preview te registreren.

Belangrijk

AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning naar best vermogen. Zodoende zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:

  1. Installeer of werk de Azure CLI preview-extensie bij met behulp van de opdracht az extension add of az extension update.

    De minimale versie van de extensie aks-preview Azure CLI is 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. ManagedNATGatewayV2Preview De functievlag registreren

    Registreer de ManagedNATGatewayV2Preview functievlag met behulp van de az feature register opdracht.

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

    Controleer of de registratie is geslaagd met behulp van de az feature show opdracht. Het duurt enkele minuten voordat de registratie is voltooid.

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

    Zodra de functie Registered weergeeft, vernieuwt u de registratie van de resourceprovider Microsoft.ContainerService met behulp van de opdracht az provider register.

    Met de volgende opdrachten maakt u de vereiste resourcegroep, de bronnen voor het openbare IP-adres en het openbare IP-voorvoegsel om te koppelen aan de NAT-gateway, en het AKS-cluster met een beheerde StandardV2 NAT-gateway.

  3. Maak een resourcegroep met behulp van de az group create opdracht.

    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. Maak een zoneredundant IPv4 openbaar IP-adres en openbaar IP-voorvoegsel met behulp van de az network public-ip create opdracht. Sla $MY_IP en $MY_IP_PREFIX op, en gebruik ze als uitgaande IP-adressen voor de beheerde StandardV2 NAT-gateway.

    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. Maak het AKS-cluster en verwijs naar het openbare IP-adres ($MY_IP_ID) en het openbare IP-voorvoegsel ($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
    

Werk de uitgaande IP-adressen, uitgaande IP-voorvoegsels, het aantal beheerde uitgaande IP's of de inactieve time-outperiode bij met behulp van de az aks update opdracht met de --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count of --nat-gateway-idle-timeout parameter. Een managedNATGatewayV2 kan niet worden bijgewerkt om te schakelen tussen door de klant gedefinieerde en uitgaande IP-adressen die beheerd worden na het aanmaken. De uitgaande IP-configuratie wordt bepaald wanneer de StandardV2 NAT-gateway in eerste instantie wordt gemaakt en onveranderbaar blijft.

Een AKS-cluster maken met een managedNATgateway

  • Maak een AKS-cluster met een beheerde Standard NAT-gateway met behulp van de az aks create opdracht met --outbound-type managedNATGateway. --nat-gateway-managed-outbound-ip-count- en --nat-gateway-idle-timeout-parameters. Als u wilt dat de NAT-gateway buiten een specifieke beschikbaarheidszone werkt, geeft u de zone op met behulp van --zones.

  • Een beheerde NAT-gatewayresource kan niet worden gebruikt in meerdere beschikbaarheidszones. Overweeg managedNATgatewayV2 te gebruiken voor zone-redundante uitgaande connectiviteit.

  • Als er geen zone is opgegeven bij het maken van een beheerde NAT-gateway, wordt de NAT-gateway standaard geïmplementeerd in 'geen zone'. Wanneer de NAT-gateway in no-zone wordt geplaatst, Azure de resource voor u in een zone plaatst. Zie niet-zonegebonden NAT-gateway voor meer informatie over het niet-zonegebonden implementatiemodel.

Een AKS-cluster maken met een userAssignedNatGateway

Deze configuratie vereist dat je eigen netwerken meeneemt (via Azure CNI) en dat de NAT-gateway vooraf op het subnet is geconfigureerd. Hiervoor worden zowel Standard- als StandardV2 NAT-gateways ondersteund outbound-type. Met de volgende opdrachten maakt u de vereiste resources voor het implementeren van een StandardV2 NAT-gatewayresource voor uw AKS-cluster.

  1. Maak een resourcegroep met behulp van de az group create opdracht.

    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    az group create --name $MY_RG --location southcentralus
    
  2. Maak een beheerde identiteit voor netwerkmachtigingen en sla de id op voor later gebruik $IDENTITY_ID.

    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)
    

    Resultaten:

    /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxx
    
  3. Maak een openbaar IP-adres van StandardV2 voor de NAT-gateway met behulp van de az network public-ip create opdracht. Voor een StandardV2 NAT-gateway is een openbaar StandaardV2-IP-adres vereist.

    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. Maak de StandardV2 NAT-gateway met behulp van de az network nat gateway create opdracht.

    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
    

    Belangrijk

    Om zoneredundantie te garanderen, is het raadzaam om een StandardV2 NAT-gatewayresource te implementeren, die meerdere beschikbaarheidszones in een regio omvat. Dit zorgt voor continue uitgaande connectiviteit, zelfs als één zone mislukt. Zie StandardV2 NAT-gateway voor meer informatie over de StandardV2 NAT-gateway en de voordelen ervan. Ter vergelijking: een Standaard NAT-gatewayresource biedt alleen tolerantie binnen de beschikbaarheidszone waarin deze wordt geïmplementeerd.

  5. Maak een virtueel netwerk met behulp van de az network vnet create opdracht.

    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. Maak een subnet in het virtuele netwerk met behulp van de NAT-gateway en sla de ID op voor later gebruik.

    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. Maak een AKS-cluster met behulp van het subnet met de NAT-gateway en de beheerde identiteit met behulp van de az aks create opdracht.

    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
    

UitgaandeNAT uitschakelen voor Windows

Windows OutboundNAT kan bepaalde problemen met verbinding en communicatie met uw AKS-pods veroorzaken. Een voorbeeld van een probleem is het hergebruik van knooppuntpoorten. In dit voorbeeld gebruikt Windows UitgaandeNAT poorten om uw pod-IP te vertalen naar het host-IP-adres van uw Windows knooppunt, wat kan leiden tot een instabiele verbinding met de externe service vanwege een probleem met poortuitputting.

Windows schakelt outboundNAT standaard in. U kunt outboundNAT nu handmatig uitschakelen bij het maken van nieuwe Windows agentgroepen.

Vereisten

Beperkingen

  • U kunt het uitgaande clustertype niet instellen op LoadBalancer. U kunt deze instellen als NAT Gateway of UDR.
    • NAT-gateway: NAT-gateway kan automatisch nat-verbinding verwerken en is krachtiger dan Standard Load Balancer. Voor deze optie worden mogelijk extra kosten in rekening gebracht.
    • UDR (UserDefinedRouting): u moet rekening houden met poortbeperkingen bij het configureren van routeringsregels.
    • Als u wilt overschakelen van een load balancer naar NAT-gateway, kunt u een NAT-gateway toevoegen aan het VNet of uitvoeren az aks upgrade om het uitgaande type bij te werken.

Notitie

UserDefinedRouting heeft de volgende beperkingen:

  • SNAT door Load Balancer (moet de standaard-uitgaandeNAT gebruiken) heeft '64 poorten op het host-IP-adres'.
  • SNAT by Azure Firewall (outboundNAT uitschakelen) heeft 2496 poorten per openbaar IP-adres.
  • SNAT by NAT Gateway (outboundNAT uitschakelen) heeft 64512 poorten per openbaar IP-adres.
  • Als het Azure Firewall poortbereik niet voldoende is voor uw toepassing, moet u NAT Gateway gebruiken.
  • Azure Firewall gebruikt geen SNAT met netwerkregels als het bestemmings-IP-adres zich in een privé-IP-adresbereik bevindt volgens IANA RFC 1918 of gedeelde adresruimte volgens IANA RFC 6598.

OutboundNAT handmatig uitschakelen voor Windows

  • Handmatig OutboundNAT uitschakelen voor Windows bij het aanmaken van nieuwe Windows-agentpools met de opdracht az aks nodepool add en de vlag --disable-windows-outbound-nat.

    Notitie

    U kunt een bestaand AKS-cluster gebruiken, maar mogelijk moet u het uitgaande type bijwerken en een knooppuntgroep toevoegen om dit in te schakelen --disable-windows-outbound-nat.

    Met de volgende opdracht wordt een Windows-knooppuntgroep toegevoegd aan een bestaand AKS-cluster, waardoor UitgaandeNAT wordt uitgeschakeld.

      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
    

    Resultaten:

    {
      "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"
    }
    

Volgende stappen

Zie Azure NAT Gateway voor meer informatie over Azure NAT Gateway.