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

Gäller för: ✔️ AKS Automatic ✔️ AKS Standard

För de flesta produktionsarbetsbelastningar är AKS Automatic den rekommenderade produktionsklara standardinställningen för AKS. AKS Automatiska kluster innehåller en förkonfigurerad hanterad NAT-gateway.

I AKS Standard kan du skapa eller konfigurera en hanterad NAT-gateway när du vill ha EN AKS-hanterad utgående anslutning för klustret. För byo-nätverksscenarier (bring-your-own) använder du en användartilldelad NAT-gateway.

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 stöder upp till 64 512 utgående UDP- och TCP-trafikflöden per IP-adress med högst 16 IP-adresser. Tre utgående typer stöder NAT-gateway: managedNATGatewayV2 (förhandsversion), managedNATGatewayoch userAssignedNATGateway.

Den här artikeln visar hur du skapar ett AKS-kluster med hanterad NAT-gateway och användartilldelad NAT-gateway för utgående trafik. Den visar också hur du inaktiverar OutboundNAT för Windows.

Viktigt!

Den managedNATGatewayV2 utgående typen är för närvarande i förhandsversion. Se Kompletterande användarvillkor för Microsoft Azure-förhandsversioner för juridiska villkor som gäller för Azure-funktioner som är i beta, förhandsgranskning eller på annat sätt ännu inte släppta för allmän tillgänglighet.

Förutsättningar

AKS Automatiska kluster innehåller en förkonfigurerad hanterad NAT-gateway. Stegen i den här artikeln gäller främst för AKS Standard och anpassade nätverksscenarier.

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

Viktigt!

I icke-privata kluster dirigeras OCH bearbetas API-serverklustertrafik via klustrets utgående typ. Om du vill förhindra att API Server-trafik bearbetas som offentlig trafik kan du överväga att använda ett privat kluster eller kolla in api Server VNet-integreringsfunktionen.

Hanterad NAT-gateway i AKS

AKS Automatic använder hanterad NAT-gateway som en del av sin förkonfigurerade produktionsklara standard. Använd det här avsnittet om du arbetar med AKS Standard eller om du behöver förstå hur hanterad NAT-gateway fungerar i ett AKS-kluster.

Hanterad NAT-gateway är det AKS-hanterade utgående alternativet. AKS skapar och hanterar NAT-gatewayen för att tillhandahålla utgående anslutning för dina klusternoder.

Använd hanterad NAT-gateway när du vill:

  • AKS-hanterad utgående anslutning med mindre driftkostnader.
  • En produktionsvänlig standardväg för utgående trafik.
  • Enklare utgående hantering än en kundhanterad NAT Gateway-distribution.
  • En aks-standardnätverksmodell utan att ta med din egen NAT-gatewayresurs.

Skapa ett AKS-kluster med en hanterad NAT-gateway

Utgående IP-parametrar

I följande tabell beskrivs varje utgående IP-parameter och när den ska användas:

Parameter Indata IP-version Vem hanterar offentliga IP-adresser
--nat-gateway-managed-outbound-ip-count Värde i intervallet [1, 16]. Önskat antal utgående IPv4:er för utgående NAT-gatewayanslutning. IPv4 Azure
--nat-gateway-managed-outbound-ipv6-count Värde i intervallet [1, 16]. Önskat antal utgående IPv6:er för utgående NAT-gatewayanslutning. IPv6 Azure
--nat-gateway-outbound-ips Kommaavgränsade publika IP-resurs-ID:n för NAT-gatewayens utgående anslutning. IPv4 eller IPv6 Kund
--nat-gateway-outbound-ip-prefixes Offentliga IP-prefixresurs-ID:n, avgränsade med kommatecken, för utgående anslutning till NAT-gatewayen. IPv4 eller IPv6 Kund

Skapa ett AKS-kluster med en hanterad StandardV2 NAT-gateway (managedNATGatewayV2)

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

  • Skapa ett AKS-kluster med en hanterad StandardV2 NAT-gateway med hjälp av az aks create kommandot med parametrarna --outbound-type managedNATGateway, , --nat-gateway-outbound-ips--nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-ip-count, --nat-gateway-managed-outbound-ipv6-countoch --nat-gateway-idle-timeout .
  • När du konfigurerar utgående IP-adresser för en managedNATgatewayV2använder du någon av följande metoder. Du kan inte använda både Azure hanterade och kunddefinierade utgående IP-adresser.
    • Azure-hanterade IP-adresser: Använd --nat-gateway-managed-ip-outbound-count och --nat-gateway-managed-outbound-ipv6-count för att få Azure automatiskt allokera och hantera de utgående offentliga IP-adresserna åt dig.
    • Kunddefinierade IP-adresser: Använd --nat-gateway-outbound-ips och --nat-gateway-outbound-ip-prefixes för att ta med dina egna företablerade offentliga IP-adresser eller prefix, vilket ger dig fullständig kontroll över de specifika adresser som används för utgående trafik. StandardV2 NAT Gateway kräver användning av nya offentliga IP-adresser för StandardV2. Befintliga offentliga IP-adresser för Standard SKU fungerar inte med StandardV2 NAT-gateway.

Installera tillägget aks-preview Azure CLI

Den managedNATGatewayV2 utgående typen är för närvarande i förhandsversion. Om du vill använda den här utgående typen installerar aks-preview du Azure CLI-tillägget och registrerar funktionsflagganManagedNATGatewayV2Preview.

Installera eller uppdatera Azure CLI förhandsgranskningstillägget med kommandot az extension add eller az extension update. Den lägsta versionen av aks-preview Azure CLI-tillägget är 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

Registrera funktionsflaggan ManagedNATGatewayV2Preview

  1. Registrera funktionsflaggan ManagedNATGatewayV2Preview med az feature register-kommandot.

    az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    
  2. Verifiera lyckad registrering med hjälp av az feature show kommandot . Det tar några minuter innan registreringen har slutförts.

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

    När funktionen visar Registered uppdaterar du registreringen av resursprovidern Microsoft.ContainerService med hjälp av kommandot az provider register.

Skapa ett AKS-kluster med en hanterad StandardV2 NAT-gateway

Följande kommandon skapar den nödvändiga resursgruppen, de offentliga IP- och offentliga IP-prefixresurser som ska kopplas till NAT-gatewayen och AKS-klustret med en hanterad StandardV2 NAT-gateway.

  1. Skapa en resursgrupp med kommandot az group create .

    # 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. Skapa en zonredundant offentlig IPv4-IP-adress och ett offentligt IP-prefix med kommandot az network public-ip create . Lagra $MY_IP och $MY_IP_PREFIX för att använda som utgående IP-adresser för den hanterade NAT-gatewayen StandardV2.

    # 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. Skapa AKS-klustret och referera till den offentliga IP-adressen ($MY_IP_ID) och det offentliga IP-prefixet ($MY_IP_PREFIX_ID) med kommandot az aks create med parametrarna --outbound-type managedNATGatewayV2, --nat-gateway-outbound-ipsoch --nat-gateway-outbound-ip-prefixes .

    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
    

Uppdatera utgående IP-adresser, utgående IP-prefix, hanterat utgående IP-antal eller inaktivitetstid med hjälp av kommandot az aks update med parametern --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count eller --nat-gateway-idle-timeout. Det går inte att uppdatera A managedNATGatewayV2 för att växla mellan kunddefinierade och hanterade utgående IP-adresser efter skapandet. Den utgående IP-konfigurationen bestäms när StandardV2 NAT-gatewayen skapas och förblir oföränderlig.

Skapa ett AKS-kluster med en hanterad STANDARD NAT-gateway (managedNATGateway)

  • Skapa ett AKS-kluster med en hanterad NAT-standardgateway med az aks create kommandot med --outbound-type managedNATGatewayparametrarna , --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
  • Du kan inte använda en hanterad NAT-gatewayresurs i flera tillgänglighetszoner. Överväg att använda managedNATgatewayV2för zonredundant utgående anslutning.
  • Om du inte anger en zon när du skapar en hanterad NAT-gateway distribueras NAT-gatewayen till ingen zon som standard. När NAT-gatewayen inte finns i någon zon placerar Azure resursen i en zon åt dig. Mer information om distributionsmodellen som inte är zonindelad finns i NAT-gateway som inte är zonindelad.

Skapa ett AKS-kluster med en userAssignedNatGateway

Den här konfigurationen kräver bring-your-own-nätverk (via Azure CNI) och att NAT-gatewayen är förkonfigurerad i undernätet. Både Standard- och StandardV2 NAT-gatewayer stöds för detta outbound-type. Följande kommandon skapar de resurser som krävs för att distribuera en STANDARDV2 NAT-gatewayresurs för ditt AKS-kluster.

  1. Skapa en resursgrupp med kommandot az group create .

    # 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. Skapa en hanterad identitet för nätverksbehörigheter och lagra ID:t för $IDENTITY_ID senare användning.

    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)
    

    Exempel på utdata:

    /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxx
    
  3. Skapa en offentlig IP-adress för StandardV2 för NAT-gatewayen az network public-ip create med kommandot . En StandardV2 NAT-gateway kräver en offentlig IP-adress för StandardV2.

    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. Skapa NAT-gatewayen StandardV2 med kommandot az network nat gateway create .

    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
    

    Viktigt!

    För att säkerställa zonredundans distribuerar du en NAT-gatewayresurs för StandardV2, som sträcker sig över flera tillgänglighetszoner i en region. Den här konfigurationen säkerställer fortsatt utgående anslutning även om en enskild zon misslyckas. Mer information om StandardV2 NAT-gateway och dess fördelar finns i StandardV2 NAT Gateway. Som jämförelse ger en NAT-standardgatewayresurs endast återhämtning inom tillgänglighetszonen där du distribuerar den.

  5. Skapa ett virtuellt nätverk med kommandot 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. 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.

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

    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
    

Produktionsöverväganden

När du använder hanterad NAT-gateway i produktion planerar du för utgående trafikbeteende, API-serveråtkomst och återhämtning av arbetsbelastningar.

  • Använd AKS Automatic när du vill ha den rekommenderade produktionsklara standardinställningen för de flesta AKS-arbetsbelastningar.
  • Använd hanterad NAT-gateway i AKS Standard när du vill ha EN AKS-hanterad utgående anslutning utan att ta med din egen NAT-gateway.
  • Använd ett privat kluster eller API Server VNet-integrering när du vill minska exponeringen för API-servertrafik.
  • Granska utgående IP-krav innan du går live.
  • Om dina arbetsbelastningar är beroende av fasta utgående adresser kontrollerar du att den hanterade NAT-gatewayen uppfyller dessa krav före distributionen.
  • Om du behöver hantera NAT oberoende av AKS använder du en användartilldelad NAT-gateway.

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

Krav och begränsningar

  • Du behöver ett befintligt AKS-kluster med v1.26 eller senare. Om du använder Kubernetes version 1.25 eller senare uppdaterar du distributionskonfigurationen.
  • Du kan inte ange utgående klustertyp till LoadBalancer. Du kan ställa in den på NAT Gateway eller UDR:
    • NAT Gateway: NAT Gateway hanterar NAT-anslutningar automatiskt 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 vill 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 per Load Balancer (måste använda standardutgåendeNAT) har 64 portar på värd-IP-adressen.
  • SNAT per Azure Firewall (inaktivera OutboundNAT) har 2 496 portar per offentlig IP-adress.
  • SNAT per NAT Gateway (inaktivera OutboundNAT) har 64 512 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:ar inte med nätverksregler när destinations-IP-adressen är i ett privat IP-adressintervall enligt IANA RFC 1918 eller delat adressutrymme enligt IANA RFC 6598.

Inaktivera OutboundNAT manuellt för Windows

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

    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.

    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
    

    Exempel på utdata:

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

Mer information om Azure NAT Gateway och AKS Automatic finns i följande artiklar: