Tworzenie zarządzanej lub przypisanej przez użytkownika bramy translatora adresów sieciowych dla klastra usługi Azure Kubernetes Service (AKS)

Chociaż możesz kierować ruch wychodzący za pośrednictwem usługi Azure Load Balancer, istnieją ograniczenia dotyczące liczby przepływów wychodzących ruchu, które możesz mieć. Usługa Azure NAT Gateway umożliwia maksymalnie 64 512 wychodzących przepływów ruchu UDP i TCP na adres IP z maksymalnie 16 adresami IP.

W tym artykule pokazano, jak utworzyć klaster usługi Azure Kubernetes Service (AKS) z zarządzaną bramą translatora adresów sieciowych i bramą translatora adresów sieciowych przypisanych przez użytkownika na potrzeby ruchu wychodzącego. Pokazano również, jak wyłączyć funkcję OutboundNAT w systemie Windows.

Zanim rozpoczniesz

  • Upewnij się, że używasz najnowszej wersji interfejsu wiersza polecenia platformy Azure.
  • Upewnij się, że używasz platformy Kubernetes w wersji 1.20.x lub nowszej.
  • Zarządzana brama translatora adresów sieciowych jest niezgodna z niestandardowymi sieciami wirtualnymi.

Tworzenie klastra usługi AKS z zarządzaną bramą translatora adresów sieciowych

  • Utwórz klaster usługi AKS z nową zarządzaną bramą translatora adresów sieciowych przy użyciu az aks create polecenia z parametrami --outbound-type managedNATGateway, --nat-gateway-managed-outbound-ip-counti --nat-gateway-idle-timeout . Jeśli chcesz, aby brama translatora adresów sieciowych działała poza określoną strefą dostępności, określ strefę przy użyciu polecenia --zones.

  • Jeśli podczas tworzenia zarządzanej bramy translatora adresów sieciowych nie określono żadnej strefy, brama translatora adresów sieciowych jest wdrażana domyślnie w "bez strefy". Gdy brama translatora adresów sieciowych nie znajduje się w żadnej strefie, platforma Azure umieszcza zasób w strefie. Aby uzyskać więcej informacji na temat nienależących do strefowego modelu wdrażania, zobacz brama translatora adresów sieciowych nienależących do stref.

  • Zarządzany zasób bramy translatora adresów sieciowych nie może być używany w wielu strefach dostępności.

      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
    
  • Zaktualizuj wychodzący adres IP lub limit czasu bezczynności przy użyciu az aks update polecenia z parametrem --nat-gateway-managed-outbound-ip-count or --nat-gateway-idle-timeout .

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

Tworzenie klastra usługi AKS przy użyciu bramy translatora adresów sieciowych przypisanych przez użytkownika

Ta konfiguracja wymaga użycia własnej sieci (za pośrednictwem rozwiązania Kubenet lub azure CNI) i że brama translatora adresów sieciowych jest wstępnie skonfigurowana w podsieci. Następujące polecenia tworzą wymagane zasoby dla tego scenariusza.

  1. Utwórz grupę zasobów przy użyciu az group create polecenia .

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Utwórz tożsamość zarządzaną dla uprawnień sieci i zapisz identyfikator do $IDENTITY_ID późniejszego użycia.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. Utwórz publiczny adres IP bramy translatora adresów az network public-ip create sieciowych przy użyciu polecenia .

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. Utwórz bramę translatora adresów az network nat gateway create sieciowych przy użyciu polecenia .

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

    Ważne

    Nie można używać pojedynczego zasobu bramy translatora adresów sieciowych w wielu strefach dostępności. Aby zapewnić odporność strefy, zaleca się wdrożenie zasobu bramy translatora adresów sieciowych w każdej strefie dostępności i przypisanie do podsieci zawierających klastry usługi AKS w każdej strefie. Aby uzyskać więcej informacji na temat tego modelu wdrażania, zobacz Brama translatora adresów sieciowych dla każdej strefy. Jeśli żadna strefa nie jest skonfigurowana dla bramy translatora adresów sieciowych, domyślna lokalizacja strefy to "brak strefy", w której platforma Azure umieszcza bramę translatora adresów sieciowych w strefie.

  5. Utwórz sieć wirtualną przy użyciu az network vnet create polecenia .

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --location southcentralus \
        --address-prefixes 172.16.0.0/20 
    
  6. Utwórz podsieć w sieci wirtualnej przy użyciu bramy translatora adresów sieciowych i zapisz identyfikator do $SUBNET_ID późniejszego użycia.

    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. Utwórz klaster usługi AKS przy użyciu podsieci z bramą translatora adresów sieciowych i tożsamością zarządzaną przy użyciu az aks create polecenia .

    az aks create \
        --resource-group myResourceGroup \
        --name myNatCluster \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID
    

Wyłączanie ruchu wychodzącegoNAT dla systemu Windows

Funkcja Windows OutboundNAT może powodować pewne problemy z połączeniem i komunikacją z zasobnikami usługi AKS. Przykładem problemu jest ponowne użycie portu węzła. W tym przykładzie system Windows OutboundNAT używa portów do tłumaczenia adresu IP zasobnika na adres IP hosta węzła systemu Windows, co może spowodować niestabilne połączenie z usługą zewnętrzną z powodu problemu z wyczerpaniem portów.

System Windows domyślnie włącza funkcję OutboundNAT. Teraz możesz ręcznie wyłączyć funkcję OutboundNAT podczas tworzenia nowych pul agentów systemu Windows.

Wymagania wstępne

  • Istniejący klaster usługi AKS z systemem w wersji 1.26 lub nowszej. Jeśli używasz platformy Kubernetes w wersji 1.25 lub starszej, musisz zaktualizować konfigurację wdrożenia.

Ograniczenia

  • Nie można ustawić typu ruchu wychodzącego klastra na LoadBalancer. Można ustawić dla bramy translatora adresów sieciowych lub trasy zdefiniowanej przez użytkownika:
    • Brama translatora adresów sieciowych: brama translatora adresów sieciowych może automatycznie obsługiwać połączenie translatora adresów sieciowych i jest wydajniejsza niż usługa Load Balancer w warstwie Standardowa. W przypadku tej opcji mogą zostać naliczone dodatkowe opłaty.
    • Trasa zdefiniowana przez użytkownika (UserDefinedRouting): podczas konfigurowania reguł routingu należy pamiętać o ograniczeniach portów.
    • Jeśli musisz przełączyć się z modułu równoważenia obciążenia do bramy translatora adresów sieciowych, możesz dodać bramę translatora adresów sieciowych do sieci wirtualnej lub uruchomić polecenie az aks upgrade , aby zaktualizować typ ruchu wychodzącego.

Uwaga

UserDefinedRouting ma następujące ograniczenia:

  • SNAT by Load Balancer (musi używać domyślnej wartości OutboundNAT) ma "64 porty na adresie IP hosta".
  • SNAT by Azure Firewall (disable OutboundNAT) ma 2496 portów na publiczny adres IP.
  • SNAT by NAT Gateway (disable OutboundNAT) ma 64512 portów na publiczny adres IP.
  • Jeśli zakres portów usługi Azure Firewall nie jest wystarczający dla aplikacji, musisz użyć bramy translatora adresów sieciowych.
  • Usługa Azure Firewall nie obsługuje protokołu SNAT z regułami sieci, gdy docelowy adres IP znajduje się w prywatnym zakresie adresów IP dla protokołu IANA RFC 1918 lub współużytkowanej przestrzeni adresowej na IANA RFC 6598.

Ręczne wyłączanie ruchu wychodzącegoNAT dla systemu Windows

  • Ręcznie wyłącz funkcję OutboundNAT dla systemu Windows podczas tworzenia nowych pul agentów systemu Windows przy użyciu az aks nodepool add polecenia z flagą --disable-windows-outbound-nat .

    Uwaga

    Możesz użyć istniejącego klastra usługi AKS, ale może być konieczne zaktualizowanie typu ruchu wychodzącego i dodanie puli węzłów w celu włączenia funkcji --disable-windows-outbound-nat.

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

Następne kroki

Aby uzyskać więcej informacji na temat usługi Azure NAT Gateway, zobacz Brama translatora adresów sieciowych platformy Azure.