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

Van toepassing op: ✔️ AKS Automatic ✔️ AKS Standard

Voor de meeste productieworkloads is AKS Automatic de aanbevolen, productieklare standaardoptie voor AKS. Automatische AKS-clusters bevatten een vooraf geconfigureerde beheerde NAT-gateway.

In AKS Standard kunt u een beheerde NAT-gateway maken of configureren wanneer u uitgaande AKS-connectiviteit voor uw cluster wilt. Gebruik voor BYO-netwerkscenario's (Bring-Your-Own) een door de gebruiker toegewezen NAT-gateway.

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 ondersteunt maximaal 64.512 uitgaande UDP- en TCP-verkeersstromen per IP-adres met maximaal 16 IP-adressen. Drie uitgaande typen bieden ondersteuning voor NAT-gateway: managedNATGatewayV2 (Preview), managedNATGateway en userAssignedNATGateway.

In dit artikel leest u hoe u een AKS-cluster maakt met beheerde NAT-gateway en door de gebruiker toegewezen NAT-gateway voor uitgaand verkeer. Hierin wordt ook uitgelegd hoe u OutboundNAT in Windows uitschakelt.

Belangrijk

Het managedNATGatewayV2 type voor uitgaand verkeer is momenteel beschikbaar als 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.

Vereisten

Automatische AKS-clusters bevatten een vooraf geconfigureerde beheerde NAT-gateway. De stappen in dit artikel zijn voornamelijk bedoeld voor AKS Standard- en aangepaste netwerkscenario's.

  • 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 verkeer van API-serverclusters gerouteerd en verwerkt via het uitgaande type van het cluster. 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.

Beheerde NAT-gateway in AKS

AKS Automatic maakt gebruik van een beheerde NAT-gateway als onderdeel van de vooraf geconfigureerde standaardinstelling voor productie. Gebruik deze sectie als u met AKS Standard werkt of als u wilt weten hoe beheerde NAT-gateway zich gedraagt in een AKS-cluster.

De beheerde NAT-gateway is de door AKS beheerde optie voor uitgaand verkeer. AKS maakt en beheert de NAT-gateway om uitgaande connectiviteit te bieden voor uw clusterknooppunten.

Gebruik de beheerde NAT-gateway als u wilt:

  • Uitgaande connectiviteit met minder operationele overhead wordt beheerd door AKS.
  • Een productievriendelijk standaard uitgaand pad.
  • Eenvoudiger beheer van uitgaand verkeer dan de implementatie van een door de klant beheerde NAT-gateway.
  • Een standaard AKS-netwerkmodel zonder uw eigen NAT-gatewayresource te gebruiken.

Een AKS-cluster maken met een beheerde NAT-gateway

Uitgaande IP-parameters

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

Een AKS-cluster maken met een beheerde StandardV2 NAT-gateway (managedNATGatewayV2)

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:

  • 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 voor een managedNATgatewayV2configureert, gebruikt u een van de volgende benaderingen. U kunt zowel door Azure beheerde als door de klant gedefinieerde uitgaande IP-adressen niet gebruiken.
    • Azure beheerde IP-adressen: gebruik --nat-gateway-managed-ip-outbound-count en --nat-gateway-managed-outbound-ipv6-count laat Azure de uitgaande openbare IP-adressen automatisch namens u toewijzen en beheren.
    • Door de klant gedefinieerde IP-adressen: uw eigen vooraf ingerichte openbare IP-adressen of voorvoegsels gebruiken --nat-gateway-outbound-ips en --nat-gateway-outbound-ip-prefixes 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 standard-SKU's werken niet met de Nat-gateway StandardV2.

aks-preview De Azure CLI-extensie installeren

Het type managedNATGatewayV2 voor uitgaand verkeer is momenteel in preview. Als u dit uitgaande type wilt gebruiken, installeert u de aks-preview Azure CLI-extensie en registreert u de ManagedNATGatewayV2Preview functievlag.

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 aks-preview Azure CLI-extensie 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

ManagedNATGatewayV2Preview De functievlag registreren

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

    az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    
  2. 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.

Een AKS-cluster maken met een beheerde StandardV2 NAT-gateway

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.

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

    # Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names
    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"
    
    # Create the resource group
    az group create --name $MY_RG --location "eastus2"
    
  2. 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.

    # Create a zone redundant IPv4 public IP address and store the ID to $MY_IP_ID for later use
    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 publicIp.id \
        --output tsv)
    
    # Create a zone redundant IPv4 public IP prefix and store the ID to $MY_IP_PREFIX_ID for later use
    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)
    
  3. Maak het AKS-cluster en verwijs naar het openbare IP-adres ($MY_IP_ID) en het openbare IP-voorvoegsel ($MY_IP_PREFIX_ID) met behulp van de az aks create opdracht met de --outbound-type managedNATGatewayV2, --nat-gateway-outbound-ipsen --nat-gateway-outbound-ip-prefixes parameters.

    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 beheerde Standard NAT-gateway (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-counten --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.
  • U kunt geen beheerde NAT-gatewayresource gebruiken in meerdere beschikbaarheidszones. Overweeg managedNATgatewayV2 te gebruiken voor zone-redundante uitgaande connectiviteit.
  • Als u geen zone opgeeft bij het maken van een beheerde NAT-gateway, wordt de NAT-gateway standaard geïmplementeerd in geen zone . Wanneer de NAT-gateway zich in geen zone bevindt, plaatst Azure de resource in een zone voor u. 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.

    # Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names
    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    
    # Create the resource group
    az group create --name $MY_RG --location southcentralus
    
  2. Maak een beheerde identiteit voor netwerkmachtigingen en sla de id op $IDENTITY_ID voor later gebruik.

    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)
    

    Voorbeelduitvoer:

    /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

    Als u zoneredundantie wilt garanderen, implementeert u een StandardV2 NAT-gatewayresource, die meerdere beschikbaarheidszones in een regio omvat. Deze configuratie 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 u deze implementeert.

  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
    

Overwegingen voor productie

Wanneer u beheerde NAT-gateway in productie gebruikt, plant u het gedrag van uitgaand verkeer, toegang tot API-servers en workloadtolerantie.

  • Gebruik AKS Automatic als u de aanbevolen productierijpe standaardinstelling voor de meeste AKS-workloads wilt.
  • Gebruik beheerde NAT-gateway in AKS Standard wanneer u uitgaande AKS-connectiviteit wilt beheren zonder uw eigen NAT-gateway mee te nemen.
  • Gebruik een privécluster of API Server VNet-integratie als u de blootstelling van API-serververkeer wilt verminderen.
  • Controleer de vereisten voor uitgaande IP voordat u live gaat.
  • Als uw workloads afhankelijk zijn van vaste uitgaande adressen, controleert u of de beheerde NAT-gateway voldoet aan deze vereisten vóór de implementatie.
  • Als u NAT onafhankelijk van AKS wilt beheren, gebruikt u een door de gebruiker toegewezen NAT-gateway.

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 en beperkingen

  • U hebt een bestaand AKS-cluster met v1.26 of hoger nodig. Als u Kubernetes versie 1.25 of ouder gebruikt, werkt u de implementatieconfiguratie bij.
  • U kunt het uitgaande clustertype niet instellen op LoadBalancer. U kunt deze instellen als NAT Gateway of UDR.
    • NAT-gateway: NAT Gateway verwerkt automatisch NAT-verbindingen en is krachtiger dan Standard Load Balancer. Er worden mogelijk extra kosten in rekening gebracht met behulp van deze optie.
    • 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 by Load Balancer (moet de standaard-uitgaandeNAT gebruiken) heeft 64 poorten op het host-IP-adres.
  • SNAT door Azure Firewall (outboundNAT uitschakelen) heeft 2496 poorten per openbaar IP-adres.
  • SNAT by NAT Gateway (outboundNAT uitschakelen) heeft 64.512 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.

    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
    

    Voorbeelduitvoer:

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

Zie de volgende artikelen voor meer informatie over Azure NAT Gateway en AKS Automatic: