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.
Viktigt!
I icke-privata kluster dirigeras OCH bearbetas API-serverklustertrafik via utgående klustertyp. 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.
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-count
och--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 \ --generate-ssh-keys
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.
Skapa en resursgrupp med kommandot
az group create
.az group create --name myResourceGroup \ --location southcentralus
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)
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
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.
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
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)
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 \ --assign-identity $IDENTITY_ID \ --generate-ssh-keys
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
- Befintligt AKS-kluster med v1.26 eller senare. Om du använder Kubernetes version 1.25 eller senare måste du uppdatera distributionskonfigurationen.
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 mynp \ --node-count 3 \ --os-type Windows \ --disable-windows-outbound-nat
Nästa steg
Mer information om Azure NAT Gateway finns i Azure NAT Gateway.
Azure Kubernetes Service