Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Bár a kimenő forgalmat az Azure Load Balanceren keresztül irányíthatja, a kimenő forgalom száma korlátozott. Az Azure NAT Gateway legfeljebb 64 512 kimenő UDP- és TCP-forgalmat tesz lehetővé IP-címenként, legfeljebb 16 IP-címmel.
Ez a cikk bemutatja, hogyan hozhat létre Azure Kubernetes Service-fürtöt (AKS) felügyelt NAT-átjáróval és felhasználó által hozzárendelt NAT-átjáróval a kimenő forgalom számára. Azt is bemutatja, hogyan tilthatja le az OutboundNAT-t Windows rendszeren.
Mielőtt elkezdené
- Győződjön meg arról, hogy az Azure CLI legújabb verzióját használja.
- Győződjön meg arról, hogy a Kubernetes 1.20.x vagy újabb verzióját használja.
- A felügyelt NAT-átjáró nem kompatibilis az egyéni virtuális hálózatokkal.
Fontos
A nem privát fürtökben az API-kiszolgáló fürt forgalmát a rendszer a kimenő típuson keresztül irányítja és dolgozza fel. Ha meg szeretné akadályozni, hogy az API-kiszolgáló forgalma nyilvános forgalomként legyen feldolgozva, fontolja meg egy privát fürt használatát, vagy tekintse meg az API Server virtuális hálózatok integrációjának funkcióját.
Hozzon létre egy AKS-fürtöt felügyelt NAT-átjáróval.
- Hozzon létre egy AKS-fürtöt egy új felügyelt NAT-átjáróval a
az aks create,--outbound-type managedNATGateway,--nat-gateway-managed-outbound-ip-countés--nat-gateway-idle-timeoutparanccsal. Ha azt szeretné, hogy a NAT-átjáró egy adott rendelkezésre állási zónából működjön, adja meg a zónát a következővel--zones: . - Ha egy felügyelt NAT-átjáró létrehozásakor nincs zóna megadva, a NAT-átjáró alapértelmezés szerint a "nincs zóna" értékre lesz üzembe helyezve. Ha a NAT-átjáró nincs elhelyezve egy zónában, az Azure saját maga helyezi el az erőforrást egy zónában. A nem zonális üzemi modellről további információt a nem zonális NAT-átjáróban talál.
- A felügyelt NAT-átjáró-erőforrás nem használható több rendelkezésre állási zónában.
A következő parancsok először létrehozzák a szükséges erőforráscsoportot, majd egy felügyelt NAT-átjáróval rendelkező AKS-fürtöt.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_RG="myResourceGroup$RANDOM_SUFFIX"
export MY_AKS="myNatCluster$RANDOM_SUFFIX"
az group create --name $MY_RG --location "eastus2"
Eredmények:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx",
"location": "eastus2",
"managedBy": null,
"name": "myResourceGroupxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
az aks create \
--resource-group $MY_RG \
--name $MY_AKS \
--node-count 3 \
--outbound-type managedNATGateway \
--nat-gateway-managed-outbound-ip-count 2 \
--nat-gateway-idle-timeout 4 \
--generate-ssh-keys
Eredmények:
{
"aadProfile": null,
"agentPoolProfiles": [
{
...
"name": "nodepool1",
...
"provisioningState": "Succeeded",
...
}
],
"dnsPrefix": "myNatClusterxxx-dns-xxx",
"fqdn": "myNatClusterxxx-dns-xxx.xxxxx.xxxxxx.cloudapp.azure.com",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx",
"name": "myNatClusterxxx",
...
"resourceGroup": "myResourceGroupxxx",
...
"provisioningState": "Succeeded",
...
"type": "Microsoft.ContainerService/ManagedClusters"
}
- Frissítse a kimenő IP-címet vagy az inaktivitási időtúllépést a
az aks updateparanccsal a--nat-gateway-managed-outbound-ip-countvagy--nat-gateway-idle-timeoutparaméterrel.
Az alábbi példa 5-re növeli az AKS-fürt NAT átjáró által kezelt kimenő IP-címek számát.
az aks update \
--resource-group $MY_RG \
--name $MY_AKS \
--nat-gateway-managed-outbound-ip-count 5
Eredmények:
{
"aadProfile": null,
"agentPoolProfiles": [
{
...
"name": "nodepool1",
...
"provisioningState": "Succeeded",
...
}
],
"dnsPrefix": "myNatClusterxxx-dns-xxx",
"fqdn": "myNatClusterxxx-dns-xxx.xxxxx.xxxxxx.cloudapp.azure.com",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx",
"name": "myNatClusterxxx",
...
"resourceGroup": "myResourceGroupxxx",
...
"provisioningState": "Succeeded",
...
"type": "Microsoft.ContainerService/ManagedClusters"
}
Felhasználó által hozzárendelt NAT-átjáróval rendelkező AKS-fürt létrehozása
Ehhez a konfigurációhoz saját hálózatkezelésre van szükség (Kubeneten vagy Azure CNI-n keresztül), és hogy a NAT-átjáró előre konfigurálva legyen az alhálózaton. A következő parancsok hozzák létre a forgatókönyvhöz szükséges erőforrásokat.
Hozzon létre egy erőforráscsoportot a
az group createparanccsal.export RANDOM_SUFFIX=$(openssl rand -hex 3) export MY_RG="myResourceGroup$RANDOM_SUFFIX" az group create --name $MY_RG --location southcentralusEredmények:
{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx", "location": "southcentralus", "managedBy": null, "name": "myResourceGroupxxx", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }Hozzon létre egy felügyelt identitást a hálózati engedélyekhez, és tárolja az azonosítót
$IDENTITY_IDkésőbbi használatra.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)Eredmények:
/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxxHozzon létre egy nyilvános IP-címet a NAT-átjáróhoz a
az network public-ip createparanccsal.export PIP_NAME="myNatGatewayPip$RANDOM_SUFFIX" az network public-ip create \ --resource-group $MY_RG \ --name $PIP_NAME \ --location southcentralus \ --sku standardEredmények:
{ "publicIp": { "ddosSettings": null, "dnsSettings": null, "etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"", "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/publicIPAddresses/myNatGatewayPipxxx", "ipAddress": null, "ipTags": [], "location": "southcentralus", "name": "myNatGatewayPipxxx", ... "provisioningState": "Succeeded", ... "sku": { "name": "Standard", "tier": "Regional" }, "type": "Microsoft.Network/publicIPAddresses", ... } }Hozza létre a NAT-átjárót a
az network nat gateway createparanccsal.export NATGATEWAY_NAME="myNatGateway$RANDOM_SUFFIX" az network nat gateway create \ --resource-group $MY_RG \ --name $NATGATEWAY_NAME \ --location southcentralus \ --public-ip-addresses $PIP_NAMEEredmények:
{ "etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"", "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/natGateways/myNatGatewayxxx", "location": "southcentralus", "name": "myNatGatewayxxx", "provisioningState": "Succeeded", "publicIpAddresses": [ { "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/publicIPAddresses/myNatGatewayPipxxx" } ], ... "type": "Microsoft.Network/natGateways" }Fontos
Egyetlen NAT-átjáró-erőforrás nem használható több rendelkezésre állási zónában. A zónarugalmasság biztosítása érdekében ajánlott NAT-átjáróerőforrást üzembe helyezni minden rendelkezésre állási zónában, és hozzárendelni az egyes zónákban lévő AKS-fürtöket tartalmazó alhálózatokhoz. Az üzembe helyezési modellről további információt az egyes zónák NAT-átjárójában talál. Ha a NAT-átjáróhoz nincs zóna konfigurálva, az alapértelmezett zónaelhelyezés a "nincs zóna", amelyben az Azure a NAT-átjárót egy zónába helyezi.
Hozzon létre egy virtuális hálózatot a
az network vnet createparanccsal.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/20Eredmények:
{ "newVNet": { "addressSpace": { "addressPrefixes": [ "172.16.0.0/20" ] }, ... "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/virtualNetworks/myVnetxxx", "location": "southcentralus", "name": "myVnetxxx", "provisioningState": "Succeeded", ... "type": "Microsoft.Network/virtualNetworks", ... } }Hozzon létre egy alhálózatot a virtuális hálózaton a NAT-átjáróval, és tárolja az azonosítót
$SUBNET_IDkésőbbi használatra.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)Eredmények:
/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/virtualNetworks/myVnetxxx/subnets/myNatClusterxxxHozzon létre egy AKS-fürtöt az alhálózat NAT-átjárójával és felügyelt identitás használatával a
az aks createparancs segítségével.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-keysEredmények:
{ "aadProfile": null, "agentPoolProfiles": [ { ... "name": "nodepool1", ... "provisioningState": "Succeeded", ... } ], "dnsPrefix": "myNatClusterxxx-dns-xxx", "fqdn": "myNatClusterxxx-dns-xxx.xxxxx.xxxxxx.cloudapp.azure.com", "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx", "name": "myNatClusterxxx", ... "resourceGroup": "myResourceGroupxxx", ... "provisioningState": "Succeeded", ... "type": "Microsoft.ContainerService/ManagedClusters" }
OutboundNAT letiltása Windowshoz
A Windows OutboundNAT bizonyos kapcsolati és kommunikációs problémákat okozhat az AKS-podokkal. Ilyen probléma például a csomópontportok újrafelhasználása. Ebben a példában a Windows OutboundNAT portok segítségével fordítja le a pod IP-címét a Windows-csomópont gazdagépének IP-címére, ami a portkimerülés okozta probléma miatt instabil kapcsolatot eredményezhet a külső szolgáltatással.
A Windows alapértelmezés szerint engedélyezi az OutboundNAT-t. Új Windows-ügynökkészletek létrehozásakor mostantól manuálisan is letilthatja a kimenőNAT-t.
Előfeltételek
- Meglévő AKS-fürt 1.26-os vagy újabb verzióval. Ha a Kubernetes 1.25-ös vagy újabb verzióját használja, frissítenie kell az üzembehelyezési konfigurációt.
Korlátozások
- A fürt kimeneti típusát nem állíthatja be LoadBalancerre. Beállíthatja NAT-átjáróra vagy UDR-re:
- NAT-átjáró: A NAT-átjáró képes automatikusan kezelni a NAT-kapcsolatot, és nagyobb teljesítményű, mint a Standard Load Balancer. Ezzel a lehetőséggel további díjak merülhetnek fel.
- UDR (UserDefinedRouting): Az útválasztási szabályok konfigurálásakor szem előtt kell tartania a portkorlátozásokat.
- Ha terheléselosztóról NAT-átjáróra kell váltania, hozzáadhat egy NAT-átjárót a virtuális hálózathoz, vagy futtathatja
az aks upgradea kimenő típus frissítéséhez.
Feljegyzés
A UserDefinedRouting a következő korlátozásokkal rendelkezik:
- A Load Balancer által használt SNAT (az alapértelmezett OutboundNAT-t kell használnia) "64 porttal rendelkezik a hoszt IP-címéhez".
- Az Azure Firewall által létrehozott SNAT (outboundNAT letiltása) nyilvános IP-címenként 2496 porttal rendelkezik.
- A NAT-átjáró által létrehozott SNAT (outboundNAT letiltása) nyilvános IP-címenként 64512 porttal rendelkezik.
- Ha az Azure Firewall porttartománya nem elég az alkalmazáshoz, a NAT Gatewayt kell használnia.
- Az Azure Firewall nem SNAT hálózati szabályokkal rendelkezik, ha a cél IP-cím az IANA RFC 1918-ban egy privát IP-címtartományban van, vagy az IANA RFC 6598-onként megosztott címtérben van.
OutboundNAT manuális letiltása Windowshoz
Amikor új Windows-ügynökkészleteket hoz létre, manuálisan tiltsa le az OutboundNAT funkciót a
az aks nodepool addparanccsal és a--disable-windows-outbound-natjelzővel.Feljegyzés
Használhat egy meglévő AKS-fürtöt, de lehet, hogy frissítenie kell a kimenő típusát, és hozzá kell adnia egy csomópontkészletet a
--disable-windows-outbound-nataktiválásához.Az alábbi parancs hozzáad egy Windows-csomópontkészletet egy meglévő AKS-fürthöz, letiltva a kimenőNAT-t.
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-natEredmények:
{ "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" }
Következő lépések
További információ az Azure NAT Gatewayről: Azure NAT Gateway.