Azure Kubernetes Service (AKS) kümeniz için yönetilen veya kullanıcı tarafından atanan nat ağ geçidi oluşturma

Şunlar için geçerlidir: ✔️ AKS Otomatik ✔️ AKS Standart

Çoğu üretim iş yükü için AKS Otomatik, AKS için önerilen üretime hazır varsayılan değerdir. AKS Otomatik kümeleri önceden yapılandırılmış bir yönetilen NAT ağ geçidi içerir.

AKS Standard'da, kümeniz için AKS tarafından yönetilen giden bağlantı sağlamak istediğinizde yönetilen bir NAT ağ geçidi oluşturabilir veya yapılandırabilirsiniz. Kendi ağını kullan (BYO) ağ oluşturma senaryoları için kullanıcı tarafından atanmış bir NAT ağ geçidi kullanın.

Çıkış trafiğini bir Azure Load Balancer üzerinden yönlendirebilirsiniz ancak trafiğin giden akış sayısıyla ilgili sınırlamalar vardır. Azure NAT Gateway, en fazla 16 IP adresiyle, IP adresi başına 64.512’ye kadar giden UDP ve TCP trafik akışını destekler. Üç giden trafik türü NAT ağ geçidini destekler: managedNATGatewayV2 (Önizleme), managedNATGateway ve userAssignedNATGateway.

Bu makalede, giden trafik için yönetilen NAT ağ geçidi ve kullanıcı tarafından atanan NAT ağ geçidi ile AKS kümesi oluşturma gösterilmektedir. Ayrıca Windows için OutboundNAT'yi nasıl devre dışı bırakabileceğiniz de gösterilir.

Önemli

Giden managedNATGatewayV2 türü şu anda önizleme aşamasındadır. Beta, önizleme veya başka bir şekilde genel kullanıma sunulmamış Azure özellikler için geçerli olan yasal koşullar için Microsoft Azure Önizlemeler için Sürümsel Kullanım Koşulları'na bakın.

Önkoşullar

AKS Otomatik kümeleri önceden yapılandırılmış bir yönetilen NAT ağ geçidi içerir. Bu makaledeki adımlar öncelikli olarak AKS Standart ve özel ağ senaryolarına yöneliktir.

  • Azure CLI en son sürümünü kullandığınızdan emin olun.
  • Kubernetes sürüm 1.20.x veya üzerini kullandığınızdan emin olun.
  • Yönetilen NAT ağ geçidi özel sanal ağlarla uyumlu değildir.

Önemli

Özel olmayan kümelerde API sunucusu kümesi trafiği, kümenin giden türü aracılığıyla yönlendirilir ve işlenir. API sunucusu trafiğinin genel trafik olarak işlenmesini önlemek için özel bir küme kullanmayı göz önünde bulundurun veya API Server Sanal Ağ Tümleştirmesi özelliğini gözden geçirin.

AKS'de yönetilen NAT ağ geçidi

AKS Otomatik, önceden yapılandırılmış üretime hazır varsayılanının bir parçası olarak yönetilen NAT ağ geçidini kullanır. AKS Standard ile çalışıyorsanız veya yönetilen NAT ağ geçidinin AKS kümesinde nasıl davrandığını anlamanız gerekiyorsa bu bölümü kullanın.

Yönetilen NAT ağ geçidi, AKS tarafından yönetilen giden trafik seçeneğidir. AKS, küme düğümleriniz için giden bağlantı sağlamak üzere NAT ağ geçidini oluşturur ve yönetir.

Aşağıdaki durumlarda yönetilen NAT ağ geçidini kullanın:

  • Daha az operasyonel ek yükle AKS yönetimli dışa yönelik bağlantı.
  • Üretime uygun varsayılan çıkış yolu.
  • Müşteri tarafından yönetilen NAT ağ geçidi dağıtımından daha basit çıkış yönetimi.
  • Kendi NAT ağ geçidi kaynağınızı kullanmadan standart bir AKS ağ modeli.

Yönetilen NAT ağ geçidi ile AKS kümesi oluşturma

Giden IP parametreleri

Aşağıdaki tabloda her giden IP parametresi ve ne zaman kullanılacağı açıklanmaktadır:

Parametre Giriş IP sürümü Genel IP'leri kim yönetir?
--nat-gateway-managed-outbound-ip-count [1, 16] aralığındaki değer. NAT ağ geçidinin giden bağlantısı için istenen IPv4 sayısı. IPv4 Azure
--nat-gateway-managed-outbound-ipv6-count [1, 16] aralığındaki değer. NAT ağ geçidinden giden bağlantı için istenen giden IPv6 adresleri sayısı. IPv6 Azure
--nat-gateway-outbound-ips NAT ağ geçidinin giden bağlantısı için virgülle ayrılmış genel IP kaynak kimlikleri. IPv4 veya IPv6 Müşteri
--nat-gateway-outbound-ip-prefixes NAT ağ geçidinin dışa doğru bağlantısı için virgülle ayrılmış genel IP ön eki kaynak kimlikleri. IPv4 veya IPv6 Müşteri

Yönetilen StandardV2 NAT ağ geçidiyle (managedNATGatewayV2) bir AKS kümesi oluşturma

managedNATGatewayV2 StandardV2 NAT Ağ Geçidi SKU’sunu kullanır. Standart NAT Ağ Geçidi SKU'su ile karşılaştırıldığında farklılıklar ve geliştirmeler hakkında ayrıntılı bilgi için bkz. Azure NAT Gateway SKU'ları. Aşağıdaki bölümde kullanarak managedNATGatewayV2AKS kümesinin nasıl oluşturulacağı açıklanmaktadır.

Önemli

AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:

  • --nat-gateway-outbound-ips komutunu --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-ipv6-count, --nat-gateway-managed-outbound-ip-count, --nat-gateway-idle-timeout, az aks create ve --outbound-type managedNATGatewayV2 parametreleriyle kullanarak yönetilen bir StandardV2 NAT ağ geçidine sahip bir AKS kümesi oluşturun.
  • Bir managedNATgatewayV2 için giden IP'leri yapılandırırken aşağıdaki yaklaşımlardan birini kullanın. Hem Azure yönetilen hem de müşteri tanımlı giden IP'leri kullanamazsınız.
    • Azure tarafından yönetilen IP'ler: Azure'un sizin adınıza giden genel IP adreslerini otomatik olarak ayırmasını ve yönetmesini sağlamak için --nat-gateway-managed-ip-outbound-count ve --nat-gateway-managed-outbound-ipv6-count kullanın.
    • Müşteri tanımlı IP'ler: --nat-gateway-outbound-ips ve --nat-gateway-outbound-ip-prefixes kullanarak kendi önceden sağlanmış genel IP adreslerinizi ya da öneklerinizi kullanın; böylece çıkış trafiği için kullanılan belirli adresler üzerinde tam denetim sahibi olursunuz. StandardV2 NAT Ağ Geçidi, yeni StandardV2 genel IP'lerinin kullanılmasını gerektirir. Mevcut Standart SKU ortak IP'leri, StandardV2 NAT ağ geçidiyle birlikte çalışmaz.

aks-preview Azure CLI uzantısını yükleme

Giden managedNATGatewayV2 türü şu anda önizleme aşamasındadır. Bu giden türünü kullanmak için Azure CLI uzantısını aks-preview yükleyin ve özellik bayrağını ManagedNATGatewayV2Preview kaydedin.

az extension add veya az extension update komutunu kullanarak Azure CLI önizleme uzantısını yükleyin veya güncelleştirin. Azure CLI uzantısının aks-preview en düşük sürümü: 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

Özellik bayrağını ManagedNATGatewayV2Preview kaydetme

  1. ManagedNATGatewayV2Preview özellik bayrağını az feature register komutunu kullanarak kaydedin.

    az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    
  2. komutunu kullanarak kaydın başarılı olduğunu az feature show doğrulayın. Kaydın tamamlanması birkaç dakika sürer.

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

    Özellik Registered gösterdikten sonra Microsoft.ContainerService komutunu kullanarak az provider register kaynak sağlayıcısının kaydını yenileyin.

Yönetilen StandardV2 NAT ağ geçidi ile AKS kümesi oluşturma

Aşağıdaki komutlar gerekli kaynak grubunu, NAT ağ geçidine eklenecek genel IP ve genel IP ön eki kaynaklarını ve yönetilen StandardV2 NAT ağ geçidine sahip AKS kümesini oluşturur.

  1. komutunu kullanarak az group create bir kaynak grubu oluşturun.

    # 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. komutunu kullanarak az network public-ip create alanlar arası yedekli bir IPv4 genel IP adresi ve genel IP ön eki oluşturun. $MY_IP ve $MY_IP_PREFIX'i yönetilen StandardV2 NAT ağ geçidi için giden IP'ler olarak depolayın ve kullanın.

    # 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. AKS kümesini oluşturun ve $MY_IP_ID, $MY_IP_PREFIX_ID ve az aks create parametreleriyle --outbound-type managedNATGatewayV2 komutunu kullanarak genel IP adresine (--nat-gateway-outbound-ips) ve genel IP ön ekine (--nat-gateway-outbound-ip-prefixes) başvurun.

    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
    

az aks update --nat-gateway-outbound-ips,--nat-gateway-outbound-ip-prefixes,--nat-gateway-managed-outbound-count,--nat-gateway-managed-outbound-ipv6-count, veya --nat-gateway-idle-timeout parametresini kullanarak, giden IP'leri, giden IP ön eklerini, yönetilen giden IP sayısını veya boşta kalma zaman aşımını güncelleştirin. managedNATGatewayV2 Oluşturulduktan sonra müşteri tarafından tanımlanan ve yönetilen giden IP adresleri arasında geçiş yapmak için güncelleştirilemez. Giden IP yapılandırması, StandardV2 NAT ağ geçidi ilk oluşturulduğunda belirlenir ve sabit kalır.

Yönetilen Standart NAT ağ geçidine sahip bir AKS kümesi oluşturun (managedNATGateway)

  • az aks create, --outbound-type managedNATGateway ve --nat-gateway-managed-outbound-ip-count parametreleriyle --nat-gateway-idle-timeout komutunu kullanarak yönetilen Standart NAT ağ geçidine sahip bir AKS kümesi oluşturun. NAT ağ geçidinin belirli bir kullanılabilirlik alanı dışında çalıştırılmasını istiyorsanız, kullanarak --zonesbölgeyi belirtin.
  • Yönetilen NAT ağ geçidi kaynağını birden çok kullanılabilirlik alanında kullanamazsınız. Bölge yedekliliği sağlamak için giden bağlantıda managedNATgatewayV2 kullanmayı göz önünde bulundurun.
  • Yönetilen NAT ağ geçidi oluştururken bölge belirtmezseniz, NAT ağ geçidi varsayılan olarak hiçbir bölgeye dağıtılmaz. NAT ağ geçidi hiçbir bölgede olmadığında, Azure kaynağı sizin için bir bölgeye yerleştirir. Bölgesel olmayan dağıtım modeli hakkında daha fazla bilgi için bkz. Bölgesel olmayan NAT ağ geçidi.

ile AKS kümesi oluşturma userAssignedNatGateway

Bu yapılandırma, kendi ağınızı getirmenizi (Azure CNI aracılığıyla) ve NAT ağ geçidinin alt ağda önceden yapılandırılmış olmasını gerektirir. Bu outbound-typeiçin hem Standard hem de StandardV2 NAT ağ geçitleri desteklenir. Aşağıdaki komutlar AKS kümeniz için bir StandardV2 NAT ağ geçidi kaynağı dağıtmak için gerekli kaynakları oluşturur.

  1. komutunu kullanarak az group create bir kaynak grubu oluşturun.

    # 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. Ağ izinleri için yönetilen bir kimlik oluşturun ve kimliği daha sonra kullanmak üzere içinde $IDENTITY_ID depolayın.

    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)
    

    Örnek çıkış:

    /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxx
    
  3. az network public-ip create komutunu kullanarak NAT ağ geçidi için bir StandardV2 genel IP oluşturun. StandardV2 NAT ağ geçidi için StandardV2 genel IP adresi gerekir.

    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. komutunu kullanarak StandardV2 NAT ağ geçidini az network nat gateway create oluşturun.

    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
    

    Önemli

    Alanlar arası yedeklilik sağlamak için, bir bölgedeki birden çok kullanılabilirlik alanına yayılan bir StandardV2 NAT ağ geçidi kaynağı dağıtın. Bu yapılandırma, tek bir bölge başarısız olsa bile giden bağlantının devam etmesini sağlar. StandardV2 NAT ağ geçidi ve avantajları hakkında daha fazla bilgi için bkz. StandardV2 NAT Gateway. Karşılaştırmak gerekirse, Standart NAT ağ geçidi kaynağı yalnızca dağıttığınız kullanılabilirlik alanında dayanıklılık sağlar.

  5. komutunu kullanarak az network vnet create bir sanal ağ oluşturun.

    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. NAT ağ geçidini kullanarak sanal ağda bir alt ağ oluşturun ve kimliğini daha sonra kullanmak üzere $SUBNET_ID olarak depolayın.

    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. Komutu kullanarak az aks create NAT ağ geçidi ve yönetilen kimliği içeren alt ağı kullanarak bir AKS kümesi oluşturun.

    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
    

Üretimle ilgili dikkat edilmesi gerekenler

Üretimde yönetilen NAT ağ geçidini kullandığınızda giden trafik davranışını, API sunucusu erişimini ve iş yükü dayanıklılığını planlayın.

  • ÇOĞU AKS iş yükü için önerilen üretime hazır varsayılan değeri istiyorsanız AKS Otomatik'i kullanın.
  • Kendi NAT ağ geçidinizi sağlamadan AKS tarafından yönetilen giden bağlantı kullanmak istediğinizde, AKS Standard’da yönetilen NAT ağ geçidini kullanın.
  • API sunucusu trafiğinin görünür olmasını azaltmak istediğinizde özel küme veya API Server Sanal Ağ Tümleştirmesi kullanın.
  • Canlı yayına geçmeden önce giden IP gereksinimlerini gözden geçirin.
  • İş yükleriniz sabit giden adreslere bağlıysa, yönetilen NAT ağ geçidinin dağıtımdan önce bu gereksinimleri karşıladığını doğrulayın.
  • NAT'yi AKS'ye göre bağımsız olarak yönetmeniz gerekiyorsa kullanıcı tarafından atanan nat ağ geçidini kullanın.

Windows için OutboundNAT'yi devre dışı bırakma

Windows OutboundNAT, AKS podlarınızda belirli bağlantı ve iletişim sorunlarına neden olabilir. "Node Port" yeniden kullanımı örnek bir sorundur. Bu örnekte Windows OutboundNAT, pod IP'nizi Windows düğüm ana bilgisayar IP'nize çevirmek için bağlantı noktalarını kullanır ve bu da bağlantı noktası tükenmesi sorunu nedeniyle dış hizmete kararsız bir bağlantıya neden olabilir.

Windows varsayılan olarak OutboundNAT'ı etkinleştirir. Artık yeni Windows aracı havuzları oluştururken OutboundNAT'yi el ile devre dışı bırakabilirsiniz.

Ön koşullar ve sınırlamalar

  • v1.26 veya sonraki sürümlere sahip mevcut bir AKS kümesine ihtiyacınız vardır. Kubernetes sürüm 1.25 veya üzerini kullanıyorsanız dağıtım yapılandırmanızı güncelleştirin.
  • Kümenin dışa giden türünü LoadBalancer olarak ayarlayamazsınız. Bunu NAT Ağ Geçidi veya UDR olarak ayarlayabilirsiniz:
    • NAT Ağ Geçidi: NAT Ağ Geçidi, NAT bağlantılarını otomatik olarak işler ve Standart Load Balancer daha güçlüdür. Bu seçeneği kullanarak ek ücret ödemeniz gerekebilir.
    • UDR (UserDefinedRouting): Yönlendirme kurallarını yapılandırırken bağlantı noktası sınırlamalarını göz önünde bulundurmanız gerekir.
    • Yük dengeleyicisinden NAT ağ geçidine geçmek için VNet'e bir NAT ağ geçidi ekleyebilir veya giden türünü güncellemek için az aks upgrade komutunu çalıştırabilirsiniz.

Not

UserDefinedRouting aşağıdaki sınırlamalara sahiptir:

  • SNAT by Load Balancer (varsayılan OutboundNAT kullanılmalıdır) ana bilgisayar IP'sinde 64 bağlantı noktası vardır.
  • Azure Güvenlik Duvarı’daki SNAT’ta (OutboundNAT devre dışı bırakıldığında), her ortak IP için 2.496 bağlantı noktası vardır.
  • NAT Ağ Geçidi ile SNAT'te (OutboundNAT devre dışı bırakıldığında), genel IP başına 64.512 bağlantı noktası vardır.
  • Azure Güvenlik Duvarı bağlantı noktası aralığı uygulamanız için yeterli değilse NAT Ağ Geçidi'ni kullanmanız gerekir.
  • Azure Güvenlik Duvarı, hedef IP adresi IANA RFC 1918 veya IANA RFC 6598 başına paylaşılan adres alanı başına özel bir IP adresi aralığında olduğunda Ağ kurallarıyla SNAT yapmaz.

Windows için OutboundNAT'yi el ile devre dışı bırakma

  • az aks nodepool add bayrağıyla --disable-windows-outbound-nat komutunu kullanarak yeni Windows aracı havuzları oluştururken outboundNAT'yi Windows için el ile devre dışı bırakın.

    Not

    Mevcut bir AKS kümesini kullanabilirsiniz, ancak --disable-windows-outbound-nat etkinleştirmek için giden türünü güncellemeniz ve bir düğüm havuzu eklemeniz gerekebilir.

    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
    

    Örnek çıkış:

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

Azure NAT Gateway ve AKS Otomatik hakkında daha fazla bilgi için aşağıdaki makalelere bakın: