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

Hoewel u uitgaand verkeer kunt routeren via een Azure Load Balancer, gelden er beperkingen voor het aantal uitgaande stromen verkeer dat u kunt hebben. Met Azure NAT Gateway kunnen maximaal 64.512 uitgaande UDP- en TCP-verkeersstromen per IP-adres met maximaal 16 IP-adressen worden toegestaan.

In dit artikel wordt beschreven hoe u een AKS-cluster (Azure Kubernetes Service) maakt met een beheerde NAT-gateway en een door de gebruiker toegewezen NAT-gateway voor uitgaand verkeer. U ziet ook hoe u UitgaandeNAT kunt uitschakelen in 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.

Een AKS-cluster maken met een beheerde NAT-gateway

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

  • 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 geen zone wordt geplaatst, plaatst Azure de resource in een zone voor u. Zie niet-zonegebonden NAT-gateway voor meer informatie over het niet-zonegebonden implementatiemodel.

  • Een beheerde NAT-gatewayresource kan niet worden gebruikt in meerdere beschikbaarheidszones.

      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
    
  • Werk het uitgaande IP-adres of de time-out voor inactiviteit bij met behulp van de az aks update opdracht met de --nat-gateway-managed-outbound-ip-count of --nat-gateway-idle-timeout parameter.

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

Een AKS-cluster maken met een door de gebruiker toegewezen NAT-gateway

Deze configuratie vereist bring-your-own-netwerken (via Kubenet of Azure CNI) en dat de NAT-gateway vooraf is geconfigureerd op het subnet. Met de volgende opdrachten maakt u de vereiste resources voor dit scenario.

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

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Maak een beheerde identiteit voor netwerkmachtigingen en sla de id op voor $IDENTITY_ID later gebruik.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. Maak een openbaar IP-adres voor de NAT-gateway met behulp van de az network public-ip create opdracht.

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. Maak de NAT-gateway met behulp van de az network nat gateway create opdracht.

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

    Belangrijk

    Eén NAT-gatewayresource kan niet worden gebruikt in meerdere beschikbaarheidszones. Om zonetolerantie te garanderen, wordt aanbevolen om een NAT-gatewayresource te implementeren in elke beschikbaarheidszone en toe te wijzen aan subnetten die AKS-clusters in elke zone bevatten. Zie NAT-gateway voor elke zone voor meer informatie over dit implementatiemodel. Als er geen zone is geconfigureerd voor nat-gateway, is de standaardzoneplaatsing geen zone, waarin Azure NAT-gateway voor u in een zone plaatst.

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

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --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 $SUBNET_ID later gebruik.

    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. 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.

    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
    

UitgaandeNAT voor Windows uitschakelen

Windows OutboundNAT kan bepaalde verbindings- en communicatieproblemen 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 standaard UitgaandeNAT 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 op 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 by 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 poortbereik van Azure Firewall niet voldoende is voor uw toepassing, moet u NAT Gateway gebruiken.
  • Azure Firewall biedt geen SNAT met netwerkregels wanneer het doel-IP-adres zich in een privé-IP-adresbereik bevindt per IANA RFC 1918 of gedeelde adresruimte per IANA RFC 6598.

UitgaandeNAT voor Windows handmatig uitschakelen

  • Schakel UitgaandeNAT voor Windows handmatig uit bij het maken van nieuwe Windows-agentgroepen met behulp van de az aks nodepool add opdracht met de --disable-windows-outbound-nat vlag.

    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.

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

Volgende stappen

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