Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 consente fino a 64.512 flussi di traffico UDP e TCP in uscita per ogni indirizzo IP con un massimo di 16 indirizzi IP. Esistono tre tipi in uscita che supportano il gateway NAT - managedNATGatewayV2 (anteprima), managedNATGatewaye userAssignedNATGateway.
In un modello di gateway NAT gestito, Azure Kubernetes Service (AKS) gestisce il gateway NAT per fornire connettività in uscita per i nodi del cluster. AKS supporta due opzioni di gateway NAT gestito: l'opzione più recente managedNATGatewayV2 e quella originale managedNATGateway.
managedNATgatewayV2 usa il gateway NAT StandardV2, con ridondanza della zona per impostazione predefinita, fornendo connettività in uscita continua anche se una zona di disponibilità diventa inattiva. A differenza del gateway NAT Standard, non è necessario specificare una zona poiché la ridondanza di zona è integrata automaticamente. Il gateway NAT StandardV2 supporta anche IPv6, una velocità effettiva più alta e i log di flusso. Per altre informazioni, vedere SKU del gateway NAT StandardV2.
Importante
Il managedNATGatewayV2 tipo in uscita è attualmente in VERSIONE DI ANTEPRIMA.
Vedi le Condizioni supplementari d'uso per le anteprime di Microsoft Azure per conoscere le condizioni legali applicabili alle funzionalità di Azure che sono in beta, in anteprima o non ancora rilasciate nella disponibilità generale.
userAssignedNATGateway è una risorsa gateway NAT gestita dal cliente che viene configurata indipendentemente da AKS ed è necessaria quando si utilizza la rete virtuale personalizzata.
Questo articolo illustra come creare un cluster Servizio Azure Kubernetes (AKS) con un gateway NAT gestito e un gateway NAT assegnato dall'utente per il traffico in uscita. Viene inoltre illustrato come disabilitare OutboundNAT in Windows.
Operazioni preliminari
- 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 le reti virtuali personalizzate.
Importante
Nei cluster non privati, il traffico del server API viene instradato ed elaborato attraverso 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.
Creare un cluster AKS con un managedNATgatewayV2
- Creare un cluster AKS con un gateway NAT StandardV2 gestito usando il comando
az aks createcon i parametri--outbound-type managedNATGateway,--nat-gateway-outbound-ips,--nat-gateway-outbound-ip-prefixes,--nat-gateway-managed-outbound-ip-count,--nat-gateway-managed-outbound-ipv6-counte--nat-gateway-idle-timeout. - Quando si configurano indirizzi IP in uscita per un
managedNATgatewayV2, è necessario usare uno degli approcci seguenti: non è possibile usare indirizzi IP in uscita Azure gestiti e definiti dal cliente:- IP gestiti da Azure: usare
--nat-gateway-managed-ip-outbound-counte/o--nat-gateway-managed-outbound-ipv6-countper fare in modo che Azure allochi e gestisca automaticamente gli indirizzi IP pubblici in uscita per vostro conto. -
INDIRIZZI IP definiti dal cliente : usare
--nat-gateway-outbound-ipse/o--nat-gateway-outbound-ip-prefixesper portare i propri indirizzi IP pubblici o prefissi di cui è stato effettuato il provisioning, offrendo il controllo completo sugli indirizzi specifici usati per il traffico in uscita. Il gateway NAT StandardV2 richiede l'uso di nuovi indirizzi IP pubblici StandardV2. Gli INDIRIZZI IP pubblici dello SKU Standard esistenti non funzionano con il gateway NAT StandardV2.
- IP gestiti da Azure: usare
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 |
managedNATGatewayV2 tipo di uscita è attualmente in fase di anteprima, per utilizzare questo tipo di uscita, è necessario eseguire i seguenti passaggi per installare l'estensione aks-preview interfaccia della riga di comando di Azure e registrare il flag di funzionalità ManagedNATGatewayV2Preview.
Importante
Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
- Criteri di supporto di AKS
- Domande frequenti su supporto tecnico di Azure
Installare o aggiornare l'estensione di anteprima di interfaccia della riga di comando di Azure utilizzando il comando
az extension addoraz extension update.La versione minima dell'estensione interfaccia della riga di comando di Azure aks-preview è
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-previewRegistrare il flag di funzionalità
ManagedNATGatewayV2PreviewRegistrare il flag della funzionalità
ManagedNATGatewayV2Previewusando il comandoaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"Verificare la corretta registrazione usando il
az feature showcomando . Per completare la registrazione sono necessari alcuni minuti.az feature show --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"Una volta visualizzata la funzionalità
Registered, aggiornare la registrazione del provider di risorse /Microsoft.ContainerServiceusando il comandoaz provider register.I comandi seguenti creano il gruppo di risorse richiesto, l'indirizzo IP pubblico e le risorse di prefisso IP pubblico per collegarsi al gateway NAT ed il cluster AKS con un gateway NAT StandardV2 gestito.
Creare un gruppo di risorse usando il comando
az group create.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" az group create --name $MY_RG --location "eastus2"Creare un indirizzo IP pubblico IPv4 con ridondanza della zona e un prefisso IP pubblico usando il comando
az network public-ip create. Memorizza$MY_IPe$MY_IP_PREFIXper utilizzarli come indirizzi IP in uscita per il gateway NAT StandardV2 gestito.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 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)Creare il cluster AKS e fare riferimento all'indirizzo IP pubblico (
$MY_IP_ID) e al prefisso IP pubblico ($MY_IP_PREFIX_ID).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
Aggiorna gli indirizzi IP in uscita, i prefissi di IP in uscita, il numero di indirizzi IP in uscita gestiti o il timeout di inattività usando il comando az aks update con il parametro --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count o --nat-gateway-idle-timeout. Non è possibile aggiornare un managedNATGatewayV2 oggetto per passare tra indirizzi IP in uscita definiti dal cliente e gestiti dopo la creazione. La configurazione IP in uscita viene determinata quando viene inizialmente creato il gateway NAT StandardV2 e rimane non modificabile.
Creare un cluster AKS con un managedNATgateway
Creare un cluster AKS con un gateway NAT Standard gestito, utilizzando il comando
az aks createcon--outbound-type managedNATGateway.--nat-gateway-managed-outbound-ip-count,--nat-gateway-idle-timeoute parametri. Se si vuole che il gateway NAT funzioni fuori da una zona di disponibilità specifica, specificare la zona usando--zones.Non è possibile usare una risorsa gateway NAT gestita in più zone di disponibilità. Per la connettività in uscita con ridondanza della zona, è consigliabile usare #create-an-aks-cluster-with-a-managed-nat-gateway-v2.
Se non viene specificata alcuna zona durante la creazione di un gateway NAT gestito, il gateway NAT viene distribuito in "nessuna zona" per impostazione predefinita. Quando il gateway NAT viene inserito in nessuna zona, Azure posiziona la risorsa in una zona per te. Per altre informazioni sul modello di distribuzione non di zona, vedere gateway NAT non di zona.
Creare un cluster dell'Azure Kubernetes Service con un userAssignedNatGateway
Questa configurazione richiede una rete bring-your-own (tramite Azure CNI) e che il gateway NAT sia preconfigurato nella 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.
Creare un gruppo di risorse usando il comando
az group create.export RANDOM_SUFFIX=$(openssl rand -hex 3) export MY_RG="myResourceGroup$RANDOM_SUFFIX" az group create --name $MY_RG --location southcentralusCreare un'identità gestita per le autorizzazioni di rete e archiviare l'ID in
$IDENTITY_IDper 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)Risultati:
/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxxCreare un indirizzo IP pubblico StandardV2 per il gateway NAT usando il
az network public-ip createcomando . 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-v2Creare il gateway NAT StandardV2 usando il
az network nat gateway createcomando .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 4Importante
Per garantire la ridondanza delle zone, è consigliabile distribuire una risorsa StandardV2 del gateway NAT, che si estende su più zone di disponibilità in un'area. In questo modo si garantisce una connettività in uscita continua anche se una singola zona ha esito negativo. 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.
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/20Creare una subnet nella rete virtuale usando il gateway NAT e archiviare l'ID per
$SUBNET_IDper 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)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
Disabilitare OutboundNAT per Windows
Windows OutboundNAT può causare determinati problemi di connessione e comunicazione con i pod di 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
- Cluster del servizio Azure Kubernetes esistente con versione 1.26 o successiva. Se si usa Kubernetes versione 1.25 o precedente, è necessario aggiornare la configurazione della distribuzione.
Limiti
- Non è possibile impostare il tipo in uscita del cluster su LoadBalancer. È possibile impostarlo su Gateway NAT o UDR:
- NAT Gateway: il gateway NAT può gestire automaticamente la connessione NAT ed è più potente di Load Balancer Standard. È possibile che vengano addebitati costi aggiuntivi con questa opzione.
- Route definita dall'utente (UserDefinedRouting): è necessario tenere presenti le limitazioni delle porte durante la configurazione delle regole di routing.
- Se è necessario passare da un servizio di bilanciamento del carico al gateway NAT, è possibile aggiungere un gateway NAT nella rete virtuale o eseguire
az aks upgradeper aggiornare il tipo in uscita.
Nota
UserDefinedRouting presenta le limitazioni seguenti:
- SNAT dal Load Balancer (deve utilizzare il OutboundNAT predefinito) ha "64 porte sull'IP host".
- SNAT di Firewall di Azure (disabilita OutboundNAT) ha 2496 porte per IP pubblico.
- SNAT tramite NAT Gateway (disabilita OutboundNAT) offre 64512 porte per ogni 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 le regole di rete quando l'indirizzo IP di destinazione si trova in un intervallo di indirizzi IP privati secondo gli IANA RFC 1918 o nello spazio di indirizzi condivisi secondo gli 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 addcon 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.Il comando seguente aggiunge un pool di nodi Windows a un cluster del servizio Azure Kubernetes esistente, disabilitando OutboundNAT.
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-natRisultati:
{ "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" }
Passaggi successivi
Per altre informazioni sulle Gateway NAT di Azure, vedere Gateway NAT di Azure.