Vytvoření spravované nebo uživatelem přiřazené brány NAT pro cluster Azure Kubernetes Service (AKS)

I když můžete směrovat odchozí provoz přes Azure Load Balancer, existuje omezení počtu odchozích toků provozu, který můžete mít. Azure NAT Gateway umožňuje až 64 512 odchozích toků UDP a TCP na IP adresu s maximálně 16 IP adresami.

V tomto článku se dozvíte, jak vytvořit cluster Azure Kubernetes Service (AKS) se spravovanou bránou NAT a bránou NAT přiřazenou uživatelem pro odchozí provoz. Ukáže vám také, jak ve Windows zakázat odchozí překlad adres (OUTBOUNDNAT).

Než začnete

  • Ujistěte se, že používáte nejnovější verzi Azure CLI.
  • Ujistěte se, že používáte Kubernetes verze 1.20.x nebo vyšší.
  • Spravovaná služba NAT Gateway není kompatibilní s vlastními virtuálními sítěmi.

Vytvoření clusteru AKS se spravovanou službou NAT Gateway

  • Vytvořte cluster AKS s novou spravovanou službou NAT Gateway pomocí az aks create příkazu s parametrem --outbound-type managedNATGateway, --nat-gateway-managed-outbound-ip-counta --nat-gateway-idle-timeout parametry. Pokud chcete, aby služba NAT Gateway fungovala mimo konkrétní zónu dostupnosti, zadejte zónu pomocí --zones.

  • Pokud při vytváření spravované brány NAT není zadaná žádná zóna, nasadí se ve výchozím nastavení brána NAT do žádné zóny. Když je služba NAT Gateway umístěná v žádné zóně, Azure umístí prostředek do zóny za vás. Další informace o modelu nasazení, který není zónový, najdete v tématu bez zónové brány NAT Gateway.

  • Spravovaný prostředek služby NAT Gateway se nedá použít napříč několika zónami dostupnosti.

      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
    
  • Aktualizujte odchozí IP adresu nebo časový limit nečinnosti pomocí az aks update příkazu s parametrem nebo parametrem --nat-gateway-managed-outbound-ip-count--nat-gateway-idle-timeout .

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

Vytvoření clusteru AKS s uživatelsky přiřazenou službou NAT Gateway

Tato konfigurace vyžaduje vlastní sítě (přes Kubenet nebo Azure CNI) a že je v podsíti předem nakonfigurovaná brána NAT. Následující příkazy vytvoří požadované prostředky pro tento scénář.

  1. Pomocí příkazu vytvořte skupinu az group create prostředků.

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Vytvořte spravovanou identitu pro síťová oprávnění a uložte ID pro $IDENTITY_ID pozdější použití.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. Vytvořte veřejnou IP adresu pro službu NAT Gateway pomocí az network public-ip create příkazu.

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. Pomocí příkazu vytvořte bránu az network nat gateway create NAT Gateway.

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

    Důležité

    Jeden prostředek služby NAT Gateway se nedá použít napříč několika zónami dostupnosti. Pokud chcete zajistit odolnost proti zónám, doporučujeme nasadit prostředek služby NAT Gateway do každé zóny dostupnosti a přiřadit k podsítím obsahujícím clustery AKS v každé zóně. Další informace o tomto modelu nasazení najdete v tématu NAT Gateway pro každou zónu. Pokud není pro službu NAT Gateway nakonfigurovaná žádná zóna, výchozí umístění zóny je bez zóny, ve které Azure umístí bránu NAT do zóny za vás.

  5. Vytvořte virtuální síť pomocí az network vnet create příkazu.

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --location southcentralus \
        --address-prefixes 172.16.0.0/20 
    
  6. Vytvořte ve virtuální síti podsíť pomocí služby NAT Gateway a uložte ID pro $SUBNET_ID pozdější použití.

    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. Vytvořte cluster AKS pomocí podsítě se službou NAT Gateway a spravovanou identitou pomocí az aks create příkazu.

    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
    

Zakázání odchozího překladu adres (NAT) pro Windows

Odchozí připojení windows může způsobit určité problémy s připojením a komunikací s pody AKS. Příkladem problému je opětovné použití portu uzlu. V tomto příkladu windows OutboundNAT používá porty k překladu IP adresy podu na IP adresu hostitele uzlu s Windows, což může způsobit nestabilní připojení k externí službě kvůli problému s vyčerpáním portů.

Systém Windows ve výchozím nastavení povoluje odchozí připojeníNAT. Při vytváření nových fondů agentů Systému Windows teď můžete ručně zakázat odchozí připojeníNAT.

Požadavky

  • Existující cluster AKS s v1.26 nebo vyšší. Pokud používáte Kubernetes verze 1.25 nebo starší, musíte aktualizovat konfiguraci nasazení.

Omezení

  • Odchozí typ clusteru nejde nastavit na LoadBalancer. Můžete ho nastavit na Nat Gateway nebo trasu definovanou uživatelem:
    • NAT Gateway: NAT Gateway dokáže automaticky zpracovat připojení NAT a je výkonnější než Standard Load Balancer. Za tuto možnost se můžou účtovat další poplatky.
    • Trasa definovaná uživatelem (UserDefinedRouting):: Při konfiguraci pravidel směrování musíte mít na paměti omezení portů.
    • Pokud potřebujete přepnout z nástroje pro vyrovnávání zatížení na SLUŽBU NAT Gateway, můžete buď přidat bránu NAT do virtuální sítě, nebo spustit az aks upgrade , aby se aktualizoval odchozí typ.

Poznámka:

UserDefinedRouting má následující omezení:

  • SNAT by Load Balancer (musí používat výchozí OdchozíNAT) má na IP adrese hostitele 64 portů.
  • SNAT by Azure Firewall (zákaz odchozího přístupu) má 2496 portů na veřejnou IP adresu.
  • SNAT by NAT Gateway (disable OutboundNAT) má 64512 portů na veřejnou IP adresu.
  • Pokud rozsah portů služby Azure Firewall pro vaši aplikaci nestačí, musíte použít službu NAT Gateway.
  • Azure Firewall nepodporuje SNAT s pravidly sítě, pokud je cílová IP adresa v privátním rozsahu IP adres na IANA RFC 1918 nebo sdílený adresní prostor na IANA RFC 6598.

Ruční zakázání odchozího překladu adres (OUTBOUNDNAT) pro Windows

  • Ručně zakažte Odchozínat pro Windows při vytváření nových fondů agentů Windows pomocí az aks nodepool add příkazu s příznakem --disable-windows-outbound-nat .

    Poznámka:

    Můžete použít existující cluster AKS, ale možná budete muset aktualizovat typ odchozích přenosů a přidat fond uzlů, aby bylo možné povolit --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
    

Další kroky

Další informace o službě Azure NAT Gateway najdete v tématu Azure NAT Gateway.