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

Çıkış trafiğini bir Azure Load Balancer aracılığıyla yönlendirebilirsiniz ancak trafiğin giden akış sayısıyla ilgili sınırlamalar vardır. Azure NAT Gateway, IP adresi başına en fazla 16 IP adresi ile en fazla 64.512 giden UDP ve TCP trafik akışına izin verir.

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

Başlamadan önce

Önemli

Özel olmayan kümelerde API sunucusu küme trafiği, giden küme türü üzerinden 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.

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

  • , --nat-gateway-managed-outbound-ip-countve --nat-gateway-idle-timeout parametreleriyle komutunu kullanarak az aks create yeni yönetilen NAT ağ geçidine sahip --outbound-type managedNATGatewaybir AKS kümesi oluşturun. NAT ağ geçidinin belirli bir kullanılabilirlik alanında çalıştırılmasını istiyorsanız, kullanarak --zonesbölgeyi belirtin.

  • Yönetilen NAT ağ geçidi oluşturulurken bölge belirtilmezse, NAT ağ geçidi varsayılan olarak "bölge yok" olarak dağıtılır. NAT ağ geçidi hiçbir bölgeye yerleştirilince 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.

  • Yönetilen NAT ağ geçidi kaynağı birden çok kullanılabilirlik alanında kullanılamaz.

      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
    
  • veya --nat-gateway-idle-timeout parametresiyle komutunu kullanarak giden IP adresini veya boşta kalma zaman aşımını az aks update güncelleştirin--nat-gateway-managed-outbound-ip-count.

    az aks update \ 
        --resource-group myResourceGroup \
        --name myNatCluster\
        --nat-gateway-managed-outbound-ip-count 5
    

Kullanıcı tarafından atanan NAT ağ geçidiyle AKS kümesi oluşturma

Bu yapılandırma için kendi ağını getir (Kubenet veya Azure CNI aracılığıyla) gerekir ve NAT ağ geçidinin alt ağda önceden yapılandırılmış olması gerekir. Aşağıdaki komutlar bu senaryo için gerekli kaynakları oluşturur.

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

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Ağ izinleri için yönetilen bir kimlik oluşturun ve kimliği $IDENTITY_ID daha sonra kullanmak üzere olarak depolayın.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. komutunu kullanarak az network public-ip create NAT ağ geçidi için bir genel IP oluşturun.

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. komutunu kullanarak NAT ağ geçidini az network nat gateway create oluşturun.

    az network nat gateway create \
        --resource-group myResourceGroup \
        --name myNatGateway \
        --location southcentralus \
        --public-ip-addresses myNatGatewayPip
    

    Önemli

    Tek bir NAT ağ geçidi kaynağı birden çok kullanılabilirlik alanında kullanılamaz. Bölge dayanıklılığını sağlamak için her kullanılabilirlik alanına bir NAT ağ geçidi kaynağı dağıtmanız ve her bölgedeki AKS kümelerini içeren alt ağlara atamanız önerilir. Bu dağıtım modeli hakkında daha fazla bilgi için bkz . Her bölge için NAT ağ geçidi. NAT ağ geçidi için hiçbir bölge yapılandırılmamışsa varsayılan bölge yerleşimi", Azure'ın NAT ağ geçidini sizin için bir bölgeye yerleştirdiği "bölge yok" olur.

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

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --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.

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

    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
    

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

Windows OutboundNAT, AKS podlarınızla ilgili belirli bağlantı ve iletişim sorunlarına neden olabilir. Düğüm bağlantı noktasının yeniden kullanılması ö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.

Önkoşullar

  • v1.26 veya üzeri yüklü mevcut AKS kümesi. Kubernetes sürüm 1.25 veya üzerini kullanıyorsanız dağıtım yapılandırmanızı güncelleştirmeniz gerekir.

Sınırlamalar

  • Küme giden türünü LoadBalancer olarak ayarlayamazsınız. Bunu Nat Gateway veya UDR olarak ayarlayabilirsiniz:
    • NAT Ağ Geçidi: NAT Ağ Geçidi, NAT bağlantısını otomatik olarak işleyebilir ve Standart Load Balancer daha güçlüdür. Bu seçenekle 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 dengeleyiciden NAT Ağ Geçidi'ne geçmeniz gerekiyorsa, sanal ağa bir NAT ağ geçidi ekleyebilir veya giden türü güncelleştirmek için komutunu çalıştırabilirsiniz az aks upgrade .

Not

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

  • Load Balancer tarafından kullanılan SNAT (varsayılan OutboundNAT kullanmalıdır) "Konak IP'sinde 64 bağlantı noktası" vardır.
  • Azure Güvenlik Duvarı tarafından SNAT (OutboundNAT'yi devre dışı bırakma) genel IP başına 2496 bağlantı noktası vardır.
  • NAT Gateway tarafından SNAT (OutboundNAT'yi devre dışı bırakma) genel IP başına 64512 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 bir özel IP adresi aralığında olduğunda Ağ kurallarıyla SNAT yapmazIANA RFC 1918 veya IANA RFC 6598 başına paylaşılan adres alanı.

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

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

    Not

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

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myNatCluster \
        --name mynp \
        --node-count 3 \
        --os-type Windows \
        --disable-windows-outbound-nat
    

Sonraki adımlar

Azure NAT Gateway hakkında daha fazla bilgi için bkz . Azure NAT Gateway.