Skapa en hanterad eller användartilldelad NAT-gateway för ditt AkS-kluster (Azure Kubernetes Service)

Du kan dirigera utgående trafik via en Azure Load Balancer, men det finns begränsningar för hur många utgående trafikflöden du kan ha. Azure NAT Gateway tillåter upp till 64 512 utgående UDP- och TCP-trafikflöden per IP-adress med högst 16 IP-adresser.

Den här artikeln visar hur du skapar ett AkS-kluster (Azure Kubernetes Service) med en hanterad NAT-gateway och en användartilldelad NAT-gateway för utgående trafik. Den visar också hur du inaktiverar OutboundNAT i Windows.

Innan du börjar

  • Kontrollera att du använder den senaste versionen av Azure CLI.
  • Kontrollera att du använder Kubernetes version 1.20.x eller senare.
  • Hanterad NAT-gateway är inte kompatibel med anpassade virtuella nätverk.

Skapa ett AKS-kluster med en hanterad NAT-gateway

  • Skapa ett AKS-kluster med en ny hanterad NAT-gateway med az aks create kommandot med parametrarna --outbound-type managedNATGateway, --nat-gateway-managed-outbound-ip-countoch --nat-gateway-idle-timeout . Om du vill att NAT-gatewayen ska fungera från en specifik tillgänglighetszon anger du zonen med .--zones

  • Om ingen zon anges när du skapar en hanterad NAT-gateway distribueras NAT-gatewayen till "ingen zon" som standard. När NAT-gatewayen placeras i ingen zon placerar Azure resursen i en zon åt dig. Mer information om en icke-zonindelad distributionsmodell finns i NAT-gateway som inte är zonindelad.

  • En hanterad NAT-gatewayresurs kan inte användas i flera tillgänglighetszoner.

      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
    
  • Uppdatera den utgående IP-adressen eller tidsgränsen az aks update för inaktivitet med hjälp av kommandot med parametern --nat-gateway-managed-outbound-ip-count eller --nat-gateway-idle-timeout .

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

Skapa ett AKS-kluster med en användartilldelad NAT-gateway

Den här konfigurationen kräver bring-your-own-nätverk (via Kubenet eller Azure CNI) och att NAT-gatewayen är förkonfigurerad i undernätet. Följande kommandon skapar de resurser som krävs för det här scenariot.

  1. Skapa en resursgrupp med kommandot az group create .

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Skapa en hanterad identitet för nätverksbehörigheter och lagra ID:t för $IDENTITY_ID senare användning.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. Skapa en offentlig IP-adress för NAT-gatewayen az network public-ip create med kommandot .

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. Skapa NAT-gatewayen med kommandot az network nat gateway create .

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

    Viktigt!

    En enda NAT-gatewayresurs kan inte användas i flera tillgänglighetszoner. För att säkerställa zonåterhämtning rekommenderar vi att du distribuerar en NAT-gatewayresurs till varje tillgänglighetszon och tilldelar till undernät som innehåller AKS-kluster i varje zon. Mer information om den här distributionsmodellen finns i NAT-gateway för varje zon. Om ingen zon har konfigurerats för NAT-gateway är standardzonens placering "ingen zon", där Azure placerar NAT-gateway i en zon åt dig.

  5. Skapa ett virtuellt nätverk med kommandot az network vnet create .

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --location southcentralus \
        --address-prefixes 172.16.0.0/20 
    
  6. Skapa ett undernät i det virtuella nätverket med hjälp av NAT-gatewayen och lagra ID:t för $SUBNET_ID senare användning.

    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. Skapa ett AKS-kluster med hjälp av undernätet med NAT-gatewayen och den hanterade identiteten az aks create med kommandot .

    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
    

Inaktivera OutboundNAT för Windows

Windows OutboundNAT kan orsaka vissa anslutning- och kommunikationsproblem med dina AKS-poddar. Ett exempelproblem är återanvändning av nodport. I det här exemplet använder Windows OutboundNAT portar för att översätta din podd-IP till din Windows-nods värd-IP, vilket kan orsaka en instabil anslutning till den externa tjänsten på grund av ett portöverbelastningsproblem.

Windows aktiverar OutboundNAT som standard. Nu kan du inaktivera OutboundNAT manuellt när du skapar nya Windows-agentpooler.

Förutsättningar

Begränsningar

  • Du kan inte ange utgående klustertyp till LoadBalancer. Du kan ställa in den på Nat Gateway eller UDR:
    • NAT Gateway: NAT Gateway kan automatiskt hantera NAT-anslutning och är kraftfullare än Standard Load Balancer. Du kan debiteras extra avgifter med det här alternativet.
    • UDR (UserDefinedRouting): Du måste ha portbegränsningar i åtanke när du konfigurerar routningsregler.
    • Om du behöver växla från en lastbalanserare till NAT Gateway kan du antingen lägga till en NAT-gateway i det virtuella nätverket eller köra az aks upgrade för att uppdatera utgående typ.

Kommentar

UserDefinedRouting har följande begränsningar:

  • SNAT by Load Balancer (måste använda standardvärdet OutboundNAT) har "64 portar på värd-IP".
  • SNAT by Azure Firewall (inaktivera OutboundNAT) har 2 496 portar per offentlig IP-adress.
  • SNAT by NAT Gateway (inaktivera OutboundNAT) har 64512 portar per offentlig IP-adress.
  • Om Azure Firewall-portintervallet inte räcker för ditt program måste du använda NAT Gateway.
  • Azure Firewall SNAT med nätverksregler när mål-IP-adressen ligger i ett privat IP-adressintervall per IANA RFC 1918 eller delat adressutrymme per IANA RFC 6598.

Inaktivera OutboundNAT för Windows manuellt

  • Inaktivera OutboundNAT för Windows manuellt när du skapar nya Windows-agentpooler med kommandot az aks nodepool add med --disable-windows-outbound-nat flaggan .

    Kommentar

    Du kan använda ett befintligt AKS-kluster, men du kan behöva uppdatera den utgående typen och lägga till en nodpool för att aktivera --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
    

Nästa steg

Mer information om Azure NAT Gateway finns i Azure NAT Gateway.