Sdílet prostřednictvím


Konfigurace sítí Azure CNI pro statické přidělování bloků CIDR a rozšířené podpory podsítí ve službě Azure Kubernetes Service (AKS) – (Preview)

Omezení dynamického přidělování IP adres Azure CNI je škálovatelnost velikosti podsítě podsítě nad rámec podsítě /16. I u velké podsítě můžou být velké clustery stále omezené na 65 tisíc podů kvůli limitu mapování adres Azure. Nová funkce přidělování statického bloku v Azure CNI tento problém řeší přiřazením bloků CIDR uzlům místo jednotlivých IP adres.

Nabízí následující výhody:

  • Lepší škálovatelnost IP adres: Bloky CIDR se staticky přidělují uzlům clusteru a jsou přítomné po celou dobu životnosti uzlu, a ne tradiční dynamické přidělování jednotlivých IP adres s tradičním CNI. To umožňuje směrování na základě bloků CIDR a pomáhá škálovat limit clusteru až na 1 milion podů z tradičních 65 tisíc podů na cluster. Vaše virtuální síť Azure musí být dostatečně velká, aby vyhovovala škálování clusteru.
  • Flexibilita: Podsítě uzlů a podů je možné škálovat nezávisle. Jednu podsíť lze sdílet napříč několika fondy uzlů clusteru nebo napříč několika clustery AKS nasazenými ve stejné virtuální síti. Můžete také nakonfigurovat samostatnou podsíť pro fond uzlů.
  • Vysoký výkon: Vzhledem k tomu, že mají pody přiřazené IP adresy virtuální sítě, mají přímé připojení k dalším podům a prostředkům clusteru ve virtuální síti.
  • Samostatné zásady virtuální sítě pro pody: Protože pody mají samostatnou podsíť, můžete pro ně nakonfigurovat samostatné zásady virtuální sítě, které se liší od zásad uzlů. To umožňuje mnoho užitečných scénářů, jako je povolení připojení k internetu jenom pro pody, ne pro uzly, oprava zdrojové IP adresy pro pod ve fondu uzlů pomocí služby Azure NAT Gateway a použití skupin zabezpečení sítě k filtrování provozu mezi fondy uzlů.
  • Zásady sítě Kubernetes: Cilium, Azure NPM a Calico pracují s tímto novým řešením.

V tomto článku se dozvíte, jak používat sítě Azure CNI pro statické přidělování identifikátorů CIDR a rozšířenou podporu podsítě v AKS.

Požadavky

Poznámka:

Pokud používáte přidělování statických bloků identifikátorů CIDR, nepodporuje se zveřejnění aplikace jako služby Private Link pomocí služby Load Balanceru Kubernetes.

  • Projděte si požadavky pro konfiguraci základních sítí Azure CNI v AKS, protože stejné požadavky platí pro tento článek.

  • Projděte si parametry nasazení pro konfiguraci základních sítí Azure CNI v AKS, jak platí stejné parametry.

  • Clustery AKS Engine a DIY se nepodporují.

  • Verze 2.37.0 Azure CLI nebo novější s rozšířením aks-Preview verze 2.0.0b2 nebo novější

  • Pokud máte existující cluster, musíte pro monitorování využití podsítě PROTOKOLU IP povolit Službu Container Insights. Container Insights můžete povolit pomocí az aks enable-addons příkazu, jak je znázorněno v následujícím příkladu:

  • Registrace příznaku funkce na úrovni předplatného pro vaše předplatné: Microsoft.ContainerService/AzureVnetScalePreview

    az aks enable-addons --addons monitoring --name <cluster-name> --resource-group <resource-group-name>
    

Omezení

Níže jsou některá omezení používání přidělení statického bloku Azure CNI:

  • Minimální požadovaná verze Kubernetes je 1.28
  • Maximální podporovaná velikost podsítě je x.x.x.x/12 ~ 1 milion IP adres.
  • Nepodporuje se pro fondy uzlů Windows (připravuje se podpora Pro Windows)
  • Nepodporuje se pro Cilium Data Plane (podpora připravujeme)
  • Pro každou podsíť je možné použít pouze jeden režim operace. Pokud podsíť používá režim přidělování statického bloku, nedá se použít režim dynamického přidělování IP adres v jiném clusteru nebo fondu uzlů se stejnou podsítí a naopak.
  • Podporuje se pouze v nových clusterech nebo při přidávání fondů uzlů s jinou podsítí do existujících clusterů. Migrace nebo aktualizace existujících clusterů nebo fondů uzlů se nepodporuje.
  • Ve všech blocích CIDR přiřazených k uzlu ve fondu uzlů bude jedna IP adresa vybrána jako primární IP adresa uzlu. Správci sítě, kteří vyberou --max-pods hodnotu, se proto pokusí použít následující výpočet, aby co nejlépe vyhovoval vašim potřebám a měli optimální využití IP adres v podsíti:
    max_pods = (N * 16) - 1' kde N je libovolné kladné celé číslo a N > 0

Regionální dostupnost

Tato funkce není dostupná v následujících oblastech:

  • Jih USA
  • USA – východ 2
  • USA – západ
  • Západní USA 2

Plánování přidělování IP adres

Plánování přidělování IP adres je flexibilnější a podrobnější. Vzhledem k tomu, že uzly a pody se škálují nezávisle, je možné jejich adresní prostory naplánovat také samostatně. Vzhledem k tomu, že podsítě je možné nakonfigurovat na členitost fondu uzlů, můžete při přidávání fondu uzlů vždy přidat novou podsíť. Systémové pody ve fondu clusteru nebo uzlů také přijímají IP adresy z podsítě podsítě podsítě, takže toto chování je potřeba zohlednit.

V tomto scénáři se bloky CIDR /28 (16 IP adres) přidělují uzlům na základě konfigurace --max-pod pro fond uzlů, který definuje maximální počet podů na uzel. 1 IP adresa je vyhrazena na každém uzlu ze všech dostupných IP adres na tomto uzlu pro interní účely.

Při určování a plánování IP adres je proto nezbytné definovat konfiguraci --max-pods a dá se vypočítat nejlépe takto: max_pods_per_node = (16 * N) - 1 kde N je libovolné kladné celé číslo větší než 0

Ideální hodnoty bez ip wastage by vyžadovaly, aby maximální hodnota podů odpovídala výše uvedenému výrazu.

  • Příklad 1: max_pods = 30, bloky CIDR přidělené na uzel = 2, celkový počet IP adres dostupných pro pody = (16 * 2) – 1 = 32 – 1 = 31, fáze IP adresy na uzel = 31 – 30 = 1 [Nízká fáze - přijatelný případ]
  • Příklad 2: max_pods = 31, bloky CIDR přidělené na uzel = 2, celkový počet IP adres dostupných pro pody = (16 * 2) – 1 = 32 – 1 = 31, fáze IP adresy na uzel = 31 – 31 = 0 [Ideální případ]
  • Příklad 3: max_pods = 32, bloky CIDR přidělené na uzel = 3, celkový počet IP adres dostupných pro pody = (16 * 3) – 1 = 48 – 1 = 47, fáze IP adresy na uzel = 47 – 32 = 15 [Vysoká fáze - nedoporučují se případ]

Plánování IP adres pro služby Kubernetes zůstává beze změny.

Poznámka:

Ujistěte se, že vaše virtuální síť má dostatečně velký a souvislý adresní prostor pro podporu škálování clusteru.

Parametry nasazení

Parametry nasazení pro konfiguraci základních sítí Azure CNI v AKS jsou platné, s dvěma výjimkami:

  • Parametr ID podsítě virtuální sítě teď odkazuje na podsíť související s uzly clusteru.
  • ID podsítě parametru slouží k určení podsítě, jejíž IP adresy budou staticky nebo dynamicky přiděleny podům ve fondu uzlů.
  • Parametr režimu přidělování IP podů určuje, jestli se má použít dynamické přidělování jednotlivých nebo statických bloků.

Než začnete

  • Pokud používáte Azure CLI, potřebujete aks-preview rozšíření. Viz Instalace aks-preview rozšíření Azure CLI.
  • Pokud používáte ARM nebo REST API, musí být verze rozhraní API AKS 2024-01-02-preview nebo novější.

aks-preview Instalace rozšíření Azure CLI

  1. aks-preview Nainstalujte rozšíření pomocí az extension add příkazu.

    az extension add --name aks-preview
    
  2. Pomocí příkazu aktualizujte na nejnovější verzi rozšíření az extension update . Rozšíření by mělo mít verzi 2.0..0b2 nebo novější.

    az extension update --name aks-preview
    

Registrace příznaku AzureVnetScalePreview funkce

  1. AzureVnetScalePreview Pomocí příkazu zaregistrujte příznak az feature register funkce.

    az feature register --namespace "Microsoft.ContainerService" --name "AzureVnetScalePreview"
    

    Zobrazení stavu Zaregistrované trvá několik minut.

  2. Pomocí příkazu ověřte stav az feature show registrace.

    az feature show --namespace "Microsoft.ContainerService" --name "AzureVnetScalePreview"
    
  3. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí az provider register příkazu.

    az provider register --namespace Microsoft.ContainerService
    

Konfigurace sítí se statickým přidělováním bloků CIDR a rozšířené podpory podsítě – Azure CLI

Použití statického přidělování bloků CIDR ve vašem clusteru se podobá výchozí metodě konfigurace azure CNI clusteru pro dynamické přidělování IP adres. Následující příklad vás provede vytvořením nové virtuální sítě s podsítí pro uzly a podsíť pro pody a vytvořením clusteru, který používá Azure CNI se statickým přidělením bloků CIDR. Nezapomeňte nahradit proměnné, například $subscription hodnotami.

Vytvořte virtuální síť se dvěma podsítěmi.

resourceGroup="myResourceGroup"
vnet="myVirtualNetwork"
location="myRegion"

# Create the resource group
az group create --name $resourceGroup --location $location

# Create our two subnet network 
az network vnet create --resource-group $resourceGroup --location $location --name $vnet --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create --resource-group $resourceGroup --vnet-name $vnet --name nodesubnet --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create --resource-group $resourceGroup --vnet-name $vnet --name podsubnet --address-prefixes 10.40.0.0/13 -o none 

Vytvořte cluster, odkazujte na podsíť uzlu pomocí --vnet-subnet-idpodsítě pomocí --pod-subnet-id, --pod-ip-allocation-mode definujte režim přidělování IP adres a povolte doplněk pro monitorování.

clusterName="myAKSCluster"
subscription="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --location $location \
    --max-pods 250 \
    --node-count 2 \
    --network-plugin azure \
    --pod-ip-allocation-mode StaticBlock \
    --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/nodesubnet \
    --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/podsubnet \
    --enable-addons monitoring \
    --generate-ssh-keys

Přidání fondu uzlů

Při přidávání fondu uzlů použijte odkaz na podsíť uzlů pomocí --vnet-subnet-idpodsítě a --pod-subnet-id režim přidělování pomocí režimu přidělování --pod-ip-allocation-mode. Následující příklad vytvoří dvě nové podsítě, na které se pak odkazuje při vytváření nového fondu uzlů:

az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name node2subnet --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name pod2subnet --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $clusterName -g $resourceGroup  -n newnodepool \
    --max-pods 250 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/node2subnet \
    --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/pod2subnet \
    --pod-ip-allocation-mode StaticBlock \
    --no-wait

Nejčastější dotazy k statickému přidělování bloků CIDR a rozšířené podsítě

  • Můžu clusteru přiřadit více podsítí podů?

    Ke clusteru je možné přiřadit více podsítí, ale ke každému fondu uzlů je možné přiřadit pouze jednu podsíť. Různé fondy uzlů ve stejném nebo různém clusteru můžou sdílet stejnou podsíť.

  • Můžu podsítě podsítě přiřadit úplně z jiné virtuální sítě?

    Ne, podsíť podů by měla být ze stejné virtuální sítě jako cluster.

  • Můžou některé fondy uzlů v clusteru používat dynamické přidělování IP adres, zatímco jiné používají nové přidělení statického bloku?

    Ano, různé fondy uzlů můžou používat různé režimy přidělování. Jakmile se ale podsíť použije v jednom režimu přidělení, dá se použít pouze ve stejném režimu přidělování ve všech fondech uzlů, ke které je přidružená.

Další kroky

Další informace o sítích v AKS najdete v následujících článcích: