Creare un gateway NAT gestito o assegnato dall'utente per il cluster Servizio Azure Kubernetes (AKS)

Si applica a: ✔️ Servizio Azure Kubernetes Standard automatico ✔️ Servizio Azure Kubernetes standard

Per la maggior parte dei carichi di lavoro di produzione, AKS Automatic è l'opzione predefinita consigliata e pronta per la produzione per AKS. I cluster automatici di AKS includono un gateway NAT gestito preconfigurato.

In Servizio Azure Kubernetes Standard è possibile creare o configurare un gateway NAT gestito quando si vuole la connettività in uscita gestita dal servizio Azure Kubernetes per il cluster. Per gli scenari di rete BYO (Bring Your Own), usare un gateway NAT assegnato dall'utente.

Sebbene sia possibile instradare il traffico in uscita attraverso un Azure Load Balancer, esistono limitazioni per il numero di flussi in uscita del traffico che è possibile avere. Gateway NAT di Azure supporta fino a 64.512 flussi di traffico UDP e TCP in uscita per ogni indirizzo IP con un massimo di 16 indirizzi IP. Due tipi in uscita supportano il gateway NAT: managedNATGateway e userAssignedNATGateway.

Questo articolo illustra come creare un cluster AKS con un gateway NAT gestito e un gateway NAT assegnato dall'utente per il traffico in uscita. Viene inoltre illustrato come disabilitare OutboundNAT per Windows.

Nota

A partire dalla versione API 2026-06-01, outboundType: managedNATGateway usa per impostazione predefinita Gateway NAT StandardV2, che viene visualizzato come natGatewayProfile.sku: StandardV2 anziché il managedNATGatewayV2 tipo di uscita usato durante l'anteprima. Le versioni di anteprima dell'API da 2026-01-02-preview a 2026-05-02-preview continuano ad accettare managedNATGatewayV2 per circa un anno, offrendo il tempo necessario per passare a managedNATGateway con un valore sku esplicito. Per le date di deprecazione delle API di anteprima, vedere la documentazione del ciclo di vita dell'API di anteprima di AKS.

Prerequisiti

I cluster automatici di AKS includono un gateway NAT gestito preconfigurato. I passaggi descritti in questo articolo si applicano principalmente ad AKS Standard e agli scenari di rete personalizzata.

  • Assicurarsi di usare la versione più recente di interfaccia della riga di comando di Azure.
  • Assicurarsi di usare Kubernetes versione 1.20.x o successiva.
  • Il gateway NAT gestito non è compatibile con reti virtuali personalizzate.

Importante

Nei cluster non privati, il traffico del cluster del server API viene instradato ed elaborato tramite il tipo di traffico in uscita del cluster. Per evitare che il traffico del server API venga elaborato come traffico pubblico, prendere in considerazione l'uso di un cluster privato o consultare la funzionalità Integrazione rete virtuale del server API.

Gateway NAT gestito in AKS

AKS Automatic usa un gateway NAT gestito come parte della configurazione predefinita preconfigurata e pronta per la produzione. Usare questa sezione se si usa il servizio Azure Kubernetes Standard o se è necessario comprendere il comportamento del gateway NAT gestito in un cluster del servizio Azure Kubernetes.

Il gateway NAT gestito è l'opzione in uscita gestita da AKS. AKS crea e gestisce il gateway NAT per fornire connettività in uscita ai nodi del cluster.

Usare il gateway NAT gestito quando si vuole:

  • Connettività in uscita gestita da AKS con minore overhead operativo.
  • Percorso di uscita predefinito adatto alla produzione.
  • Gestione in uscita più semplice rispetto a una distribuzione di gateway NAT gestita dal cliente.
  • Modello di rete AKS standard senza usare una risorsa gateway NAT propria.

Creare un cluster AKS con un gateway NAT gestito

Parametri IP in uscita

La tabella seguente descrive ogni parametro IP in uscita e quando usarlo:

Parametro Inserimento Versione IP Chi gestisce gli indirizzi IP pubblici
--nat-gateway-managed-outbound-ip-count Valore compreso nell'intervallo di [1, 16]. Numero desiderato di IPv4 in uscita per la connessione in uscita del gateway NAT. IPv4 Azure
--nat-gateway-managed-outbound-ipv6-count Valore compreso nell'intervallo di [1, 16]. Numero desiderato di IPv6 in uscita per la connessione in uscita del gateway NAT. IPv6 Azure
--nat-gateway-outbound-ips ID delle risorse IP pubbliche separati da virgole per la connessione in uscita del gateway NAT. IPv4 o IPv6 Cliente
--nat-gateway-outbound-ip-prefixes ID delle risorse del prefisso IP pubblico separati da virgole per la connessione in uscita del gateway NAT. IPv4 o IPv6 Cliente

Scegliere uno SKU del gateway NAT gestito

A partire dalla versione 2026-06-01 dell'API, managedNATGateway supporta gli SKU StandardV2 e Standard fino a networkProfile.natGatewayProfile.sku. StandardV2 è l'impostazione predefinita per i nuovi cluster nelle aree supportate quando la richiesta usa questa versione dell'API o versione successiva. Le richieste che usano una versione precedente dell'API mantengono il comportamento Standard esistente.

Scenario Behavior
Nuovo cluster senza SKU specificato L'impostazione predefinita è StandardV2 laddove disponibile. AKS convalida la disponibilità regionale prima di applicare il valore predefinito. Nelle aree in cui StandardV2 non è disponibile, AKS usa Standard.
Cluster Standard esistente Continua a usare tale risorsa gateway NAT. La versione 2026-06-01 dell'API e versioni successive restituisce la proprietà di sola lettura natGatewayProfile.sku come Standard.
Eseguire l'aggiornamento da Standard a StandardV2 Impostare networkProfile.natGatewayProfile.sku su StandardV2.
Effettuare il downgrade da StandardV2 a Standard Non supportato.

Il gateway NAT StandardV2 è consigliato perché è a ridondanza di zona per impostazione predefinita e offre una maggiore larghezza di banda e velocità effettiva. StandardV2 richiede indirizzi IP pubblici StandardV2 e prefissi. Le risorse IP pubbliche dello SKU Standard esistenti non sono compatibili con il gateway NAT StandardV2. Esamina le limitazioni principali del gateway NAT StandardV2 per l'elenco corrente di regioni non supportate.

Il requisito dell'indirizzo IP pubblico StandardV2 si applica solo agli indirizzi IP in uscita del gateway NAT. Il servizio di bilanciamento del carico gestito da AKS che gestisce i servizi type: LoadBalancer rimane un servizio di bilanciamento del carico Standard e richiede indirizzi IP pubblici Standard. Se si esegue il preprovisioning dell'inventario ip pubblico con tag, pianificare entrambi gli SKU: StandardV2 per il gateway NAT in uscita e Standard per i servizi in ingresso.

Funzionalità dello SKU del gateway NAT gestito

Il managedNATGateway tipo in uscita supporta funzionalità diverse a seconda del valore di networkProfile.natGatewayProfile.sku.

Capability StandardV2 Standard
Impostazione predefinita per i nuovi cluster Valore predefinito dove disponibile, a meno che il cliente non selezioni esplicitamente Standard. Usato se selezionato in modo esplicito o quando StandardV2 non è disponibile nell'area.
Comportamento della zona di disponibilità Ridondanza della zona per impostazione predefinita. Zonale o non di zona, a seconda della configurazione del cluster.
indirizzi IPv4 in uscita gestiti da Azure Supported. Supported.
indirizzi IPv6 in uscita gestiti da Azure Supported. Non supportato.
Indirizzi IP e prefissi in uscita definiti dal cliente Supportato con indirizzi IP pubblici StandardV2 e prefissi. Non supportato per un gateway NAT gestito da AKS.

Crea un cluster AKS

Creare un cluster AKS eseguendo il comando az aks create con il parametro --outbound-type managedNATGateway. AKS usa per impostazione predefinita SKU StandardV2 nelle aree supportate e SKU Standard nelle aree non supportate.

az aks create \
    --resource-group <resource-group> \
    --name <cluster-name> \
    --location <location> \
    --outbound-type managedNATGateway \
    --nat-gateway-managed-outbound-ip-count 1 \
    --generate-ssh-keys

Importante

È possibile aggiornare un gateway NAT Standard gestito esistente a StandardV2, ma non è possibile effettuare il downgrade di un gateway NAT StandardV2 gestito a Standard.

Configurare gli indirizzi IP in uscita per un gateway NAT StandardV2 gestito

Nelle aree in cui sono StandardV2 disponibili configurare gli indirizzi in uscita usando uno degli approcci seguenti. Non è possibile combinare la configurazione IP in uscita gestita da Azure e quella definita dal cliente.

Usare indirizzi IP gestiti da Azure

Usare managedOutboundIPProfile per consentire ad AKS di allocare e gestire gli indirizzi IPv4 e IPv6 pubblici in uscita.

{
  "properties": {
    "networkProfile": {
      "outboundType": "managedNATGateway",
      "natGatewayProfile": {
          "managedOutboundIPProfile": {
          "count": 1,
          "countIPv6": 1
        }
      }
    }
  }
}

Usare indirizzi IP e prefissi definiti dal cliente

Usare outboundIPs e outboundIPPrefixes per fornire pre-creati indirizzi IP pubblici o prefissi. Queste risorse devono usare lo SKU StandardV2. Gli indirizzi IP pubblici e i prefissi dello SKU Standard esistenti non sono compatibili con un gateway NAT StandardV2.

  1. Creare un indirizzo IP pubblico StandardV2 con ridondanza della zona e un prefisso IP pubblico.

    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)
    
    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)
    
  2. Distribuire un tipo di traffico in uscita con gateway NAT gestito in un'area che supporta StandardV2 NAT Gateway e fare riferimento all'indirizzo IP pubblico e al prefisso nella configurazione del cluster AKS.

    {
      "properties": {
        "networkProfile": {
          "outboundType": "managedNATGateway",
          "natGatewayProfile": {
            "outboundIPs": {
              "publicIPs": [
                "<standard-v2-public-ip-resource-id>"
              ]
            },
            "outboundIPPrefixes": {
              "publicIPPrefixes": [
                "<standard-v2-public-ip-prefix-resource-id>"
              ]
            }
          }
        }
      }
    }
    

Il modello di proprietà IP in uscita viene determinato quando viene creato inizialmente il gateway NAT StandardV2. È possibile modificare le singole risorse IP in uscita all'interno del modello selezionato, ma non è possibile passare un gateway NAT esistente tra indirizzi IP in uscita gestiti da Azure e definiti dal cliente. Non è anche possibile modificare lo SKU del gateway NAT. Il downgrade da StandardV2 a Standard non è supportato.

Creare un cluster AKS con un userAssignedNatGateway

Questa configurazione richiede una rete personalizzata (tramite Azure CNI) e che il gateway NAT sia preconfigurato sulla subnet. I gateway NAT Standard e StandardV2 sono supportati per questo outbound-type. I comandi seguenti creano le risorse necessarie per distribuire una risorsa NAT Gateway StandardV2 per il cluster AKS.

  1. Creare un gruppo di risorse usando il comando 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. Creare un'identità gestita per le autorizzazioni di rete e archiviare l'ID in $IDENTITY_ID per usarlo in un secondo momento.

    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)
    

    Output di esempio:

    /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxx
    
  3. Creare un indirizzo IP pubblico StandardV2 per il gateway NAT usando il az network public-ip create comando . Un gateway NAT StandardV2 richiede un indirizzo IP pubblico 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. Creare il gateway NAT StandardV2 usando il az network nat gateway create comando .

    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
    

    Importante

    Per garantire la ridondanza tra zone, distribuisci una risorsa Gateway NAT StandardV2, che si estende tra più zone di disponibilità in un'area geografica. Questa configurazione garantisce una connettività in uscita continua anche se una singola zona non riesce. Per altre informazioni sul gateway NAT StandardV2 e sui relativi vantaggi, vedere Gateway NAT StandardV2. Per confronto, una risorsa gateway NAT Standard offre resilienza solo all'interno della zona di disponibilità in cui viene distribuita.

  5. Creare una rete virtuale usando il comando 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. Creare una subnet nella rete virtuale usando il gateway NAT e archiviare l'ID per $SUBNET_ID per un uso successivo.

    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. Creare un cluster AKS utilizzando la subnet con il gateway NAT e l'identità gestita usando il comando az aks create.

    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
    

Considerazioni sulla produzione

Quando si usa il gateway NAT gestito nell'ambiente di produzione, pianificare il comportamento del traffico in uscita, l'accesso al server API e la resilienza del carico di lavoro.

  • Usa AKS Automatic quando vuoi la configurazione predefinita consigliata, pronta per la produzione, per la maggior parte dei carichi di lavoro AKS.
  • Usare il gateway NAT gestito in AKS Standard se si desidera una connettività in uscita gestita da AKS senza dover usare un gateway NAT personalizzato.
  • Usate un cluster privato o l'integrazione della rete virtuale del server API quando si desidera ridurre l'esposizione del traffico del server API.
  • Esaminare i requisiti IP in uscita prima di passare alla pubblicazione.
  • Se i carichi di lavoro dipendono da indirizzi in uscita fissi, verificare che il gateway NAT gestito soddisfi tali requisiti prima della distribuzione.
  • Se è necessario gestire il NAT indipendentemente da AKS, usare un gateway NAT assegnato dall'utente.

Disabilitare OutboundNAT per Windows

Windows OutboundNAT può causare determinati problemi di connessione e comunicazione con i pod AKS. Un problema di esempio è il riutilizzo della porta del nodo. In questo esempio, Windows OutboundNAT usa le porte per convertire l'IP del pod nell'IP host del nodo Windows, che può causare una connessione instabile al servizio esterno a causa di un problema di esaurimento delle porte.

Windows abilita OutboundNAT per impostazione predefinita. È ora possibile disabilitare manualmente OutboundNAT durante la creazione di nuovi pool di agenti Windows.

Prerequisiti e limitazioni

  • È necessario un cluster del servizio Azure Kubernetes esistente con v1.26 o versione successiva. Se si usa Kubernetes versione 1.25 o precedente, aggiornare la configurazione della distribuzione.
  • Non è possibile impostare il tipo in uscita del cluster su LoadBalancer. È possibile impostarlo su Gateway NAT o UDR:
    • Gateway NAT: il gateway NAT gestisce automaticamente le connessioni NAT ed è più potente di Load Balancer Standard. È possibile che vengano addebitati costi aggiuntivi usando questa opzione.
    • Route definita dall'utente (UserDefinedRouting): è necessario tenere presenti le limitazioni delle porte durante la configurazione delle regole di routing.
    • Per passare da un servizio di bilanciamento del carico al gateway NAT, è possibile aggiungere un gateway NAT alla rete virtuale oppure eseguire az aks upgrade per aggiornare il tipo in uscita.

Nota

UserDefinedRouting presenta le limitazioni seguenti:

  • SNAT tramite Load Balancer (deve usare OutboundNAT predefinito) dispone di 64 porte sull'IP host.
  • SNAT di Firewall di Azure (con OutboundNAT disabilitato) ha 2.496 porte per IP pubblico.
  • SNAT tramite NAT Gateway (disabilita OutboundNAT) ha 64.512 porte per IP pubblico.
  • Se l'intervallo di porte Firewall di Azure non è sufficiente per l'applicazione, è necessario usare il gateway NAT.
  • Firewall di Azure non esegue SNAT con regole di rete quando l'indirizzo IP di destinazione si trova in un intervallo di indirizzi IP privati conforme a IANA RFC 1918 o nello spazio di indirizzi condivisi conforme a IANA RFC 6598.

Disabilitare manualmente OutboundNAT per Windows

  • Disabilitare manualmente OutboundNAT per Windows durante la creazione di nuovi pool di agenti Windows usando il comando az aks nodepool add con il flag --disable-windows-outbound-nat.

    Nota

    È possibile utilizzare un cluster AKS esistente, ma potrebbe essere necessario aggiornare il tipo di uscita e aggiungere un pool di nodi per abilitare --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
    

    Output di esempio:

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

Per altre informazioni su Gateway NAT di Azure e AKS Automatic, consulta i seguenti articoli: