Share via


Azure CNI-netwerken configureren voor statische toewijzing van CIDR-blokken en verbeterde subnetondersteuning in Azure Kubernetes Service (AKS) - (preview)

Een beperking van dynamische IP-toewijzing van Azure CNI is de schaalbaarheid van de subnetgrootte van de pod buiten een /16-subnet. Zelfs met een groot subnet kunnen grote clusters nog steeds worden beperkt tot 65k pods vanwege een Azure-adrestoewijzingslimiet. Met de nieuwe mogelijkheid voor statische bloktoewijzing in Azure CNI wordt dit probleem opgelost door CIDR-blokken toe te wijzen aan knooppunten in plaats van afzonderlijke IP-adressen.

Het biedt de volgende voordelen:

  • Betere SCHAALBAARHEID van IP: CIDR-blokken worden statisch toegewezen aan de clusterknooppunten en zijn aanwezig voor de levensduur van het knooppunt, in tegenstelling tot de traditionele dynamische toewijzing van afzonderlijke IP-adressen met traditionele CNI. Dit maakt routering op basis van CIDR-blokken mogelijk en helpt bij het schalen van de clusterlimiet tot 1 miljoen pods van de traditionele 65.000 pods per cluster. Uw virtuele Azure-netwerk moet groot genoeg zijn om de schaal van uw cluster aan te kunnen.
  • Flexibiliteit: subnetten van knooppunten en pods kunnen onafhankelijk worden geschaald. Eén podsubnet kan worden gedeeld over meerdere knooppuntgroepen van een cluster of over meerdere AKS-clusters die in hetzelfde VNet zijn geïmplementeerd. U kunt ook een afzonderlijk podsubnet configureren voor een knooppuntgroep.
  • Hoge prestaties: omdat pods ip-adressen van virtuele netwerken krijgen toegewezen, hebben ze directe connectiviteit met andere clusterpods en -resources in het VNet.
  • Afzonderlijk VNet-beleid voor pods: aangezien pods een afzonderlijk subnet hebben, kunt u afzonderlijke VNet-beleidsregels configureren die afwijken van knooppuntbeleid. Dit maakt veel nuttige scenario's mogelijk, zoals het toestaan van internetverbinding alleen voor pods en niet voor knooppunten, het herstellen van het bron-IP-adres voor pods in een knooppuntgroep met behulp van een Azure NAT-gateway en het gebruik van NSG's om verkeer tussen knooppuntgroepen te filteren.
  • Kubernetes-netwerkbeleid: Cilium, Azure NPM en Calico werken met deze nieuwe oplossing.

In dit artikel wordt beschreven hoe u Azure CNI-netwerken gebruikt voor statische toewijzing van CIDR's en verbeterde subnetondersteuning in AKS.

Vereisten

Notitie

Wanneer u statische bloktoewijzing van CIDR's gebruikt, wordt het beschikbaar maken van een toepassing als een Private Link-service met behulp van een Kubernetes Load Balancer-service niet ondersteund.

  • Bekijk de vereisten voor het configureren van eenvoudige Azure CNI-netwerken in AKS, aangezien dezelfde vereisten van toepassing zijn op dit artikel.

  • Controleer de implementatieparameters voor het configureren van eenvoudige Azure CNI-netwerken in AKS, omdat dezelfde parameters van toepassing zijn.

  • AKS Engine- en DIY-clusters worden niet ondersteund.

  • Azure CLI-versie 2.37.0 of hoger met extensie aks-preview van versie 2.0.0b2 of hoger

  • Als u een bestaand cluster hebt, moet u Container Insights inschakelen voor het bewaken van het IP-subnetgebruik. U kunt Container Insights inschakelen met behulp van de az aks enable-addons opdracht, zoals wordt weergegeven in het volgende voorbeeld:

  • Registreer de functievlag op abonnementsniveau voor uw abonnement: 'Microsoft.ContainerService/AzureVnetScalePreview'

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

Beperkingen

Hieronder ziet u enkele beperkingen voor het gebruik van azure CNI Static Block Allocation:

  • Minimale Kubernetes-versie is 1.28 vereist
  • De maximale ondersteunde subnetgrootte is x.x.x.x/12 ~ 1 miljoen IP-adressen
  • Niet ondersteund voor Windows-knooppuntgroepen (Windows-ondersteuning binnenkort beschikbaar)
  • Niet ondersteund voor Cilium Data Plane (ondersteuning binnenkort beschikbaar)
  • Per subnet kan slechts één bewerkingsmodus worden gebruikt. Als een subnet de statische bloktoewijzingsmodus gebruikt, kan het geen dynamische IP-toewijzingsmodus gebruiken in een ander cluster of knooppuntgroep met hetzelfde subnet en omgekeerd.
  • Alleen ondersteund in nieuwe clusters of bij het toevoegen van knooppuntgroepen met een ander subnet aan bestaande clusters. Het migreren of bijwerken van bestaande clusters of knooppuntgroepen wordt niet ondersteund.
  • In alle CIDR-blokken die zijn toegewezen aan een knooppunt in de knooppuntgroep, wordt één IP geselecteerd als het primaire IP-adres van het knooppunt. Voor netwerkbeheerders die de --max-pods waarde selecteren, probeert u de onderstaande berekening te gebruiken om uw behoeften optimaal te kunnen benutten en optimaal gebruik te maken van IP-adressen in het subnet:
    max_pods = (N * 16) - 1' waarbij N een positief geheel getal is en N > 0

Regionale beschikbaarheid

Deze functie is niet beschikbaar in de volgende regio's:

  • VS Zuid
  • VS - oost 2
  • VS - west
  • VS - west 2

IP-adressering plannen

Het plannen van uw IP-adressering is flexibeler en gedetailleerder. Omdat de knooppunten en pods onafhankelijk van elkaar worden geschaald, kunnen hun adresruimten ook afzonderlijk worden gepland. Aangezien podsubnetten kunnen worden geconfigureerd voor de granulariteit van een knooppuntgroep, kunt u altijd een nieuw subnet toevoegen wanneer u een knooppuntgroep toevoegt. De systeempods in een cluster-/knooppuntgroep ontvangen ook IP-adressen van het subnet van de pod, dus dit gedrag moet worden verwerkt.

In dit scenario worden CIDR-blokken van /28 (16 IP's) toegewezen aan knooppunten op basis van uw configuratie --max-pod voor uw knooppuntgroep, waarmee het maximum aantal pods per knooppunt wordt gedefinieerd. 1 IP is gereserveerd op elk knooppunt van alle beschikbare IP-adressen op dat knooppunt voor interne doeleinden.

Dus tijdens het bepalen en plannen van uw IP-adressen is het essentieel om uw configuratie '--max-pods' te definiëren en kan deze het beste worden berekend zoals hieronder: max_pods_per_node = (16 * N) - 1 waarbij N een positief geheel getal groter is dan 0

Voor ideale waarden zonder IP-verspilling is de maximale waarde voor pods vereist om te voldoen aan de bovenstaande expressie.

Voorbeeld 1: max_pods = 30 CIDR-blokken toegewezen per knooppunt = 2, totale IP-adressen beschikbaar voor pods = (16 * 2) - 1 = 32 - 1 = 31, IP-verspilling per knooppunt = 31 - 30 = 1 [Laag verspilling - Acceptabel geval]Voorbeeld 2: max_pods = 31, CIDR-blokken toegewezen per knooppunt = 2, Totale IP-adressen beschikbaar voor pods = (16 * 2) - 1 = 32 - 1 = 31, IP-verspilling per knooppunt = 31 - 31 = 0 [Ideal Case]Voorbeeld 3: max_pods = 32 CIDR-blokken toegewezen per knooppunt = 3, totaal aantal IP-adressen dat beschikbaar is voor pods = (16 * 3) - 1 = 48 - 1 = 47, IP-verspilling per knooppunt = 47 - 32 = 15 [Hoge verspilling - Niet aanbevolen case]

De planning van IP-adressen voor Kubernetes-services blijft ongewijzigd.

Notitie

Zorg ervoor dat uw VNet voldoende grote en aaneengesloten adresruimte heeft ter ondersteuning van de schaal van uw cluster.

Implementatieparameters

De implementatieparametersvoor het configureren van eenvoudige Azure CNI-netwerken in AKS zijn allemaal geldig, met twee uitzonderingen:

  • De parameter vnet-subnet-id verwijst nu naar het subnet dat is gerelateerd aan de knooppunten van het cluster.
  • De subnet-id van de parameterpod wordt gebruikt om het subnet op te geven waarvan de IP-adressen statisch of dynamisch worden toegewezen aan pods in de knooppuntgroep.
  • De parameter ip-toewijzingsmodus voor pods geeft aan of dynamische afzonderlijke of statische bloktoewijzing moet worden gebruikt.

Voordat u begint

  • Als u de Azure CLI gebruikt, hebt u de aks-preview extensie nodig. Zie De aks-preview Azure CLI-extensie installeren.
  • Als u ARM of de REST API gebruikt, moet de AKS-API-versie 2024-01-02-preview of hoger zijn.

aks-preview De Azure CLI-extensie installeren

  1. Installeer de aks-preview extensie met behulp van de opdracht [az extension add][az-extension-add].

    az extension add --name aks-preview
    
  2. Werk bij naar de nieuwste versie van de extensie met behulp van de opdracht [az extension update][az-extension-update]. De extensie moet een versie van 2.0..0b2 of hoger hebben

    az extension update --name aks-preview
    

AzureVnetScalePreview De functievlag registreren

  1. Registreer de AzureVnetScalePreview functievlag met behulp van de opdracht [az feature register][az-feature-register].

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

    Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven.

  2. Controleer de registratiestatus met behulp van de opdracht [az feature show][az-feature-show].

    az feature show --namespace "Microsoft.ContainerService" --name "AzureVnetScalePreview"
    
  3. Wanneer de status Geregistreerd is, vernieuwt u de registratie van de Resourceprovider Microsoft.ContainerService met behulp van de opdracht [az provider register][az-provider-register].

    az provider register --namespace Microsoft.ContainerService
    

Netwerken configureren met statische toewijzing van CIDR-blokken en verbeterde subnetondersteuning - Azure CLI

Het gebruik van statische toewijzing van CIDR-blokken in uw cluster is vergelijkbaar met de standaardmethode voor het configureren van een Cluster Azure CNI voor dynamische IP-toewijzing. In het volgende voorbeeld wordt uitgelegd hoe u een nieuw virtueel netwerk maakt met een subnet voor knooppunten en een subnet voor pods en het maken van een cluster dat gebruikmaakt van Azure CNI met statische toewijzing van CIDR-blokken. Zorg ervoor dat u variabelen, zoals $subscription uw waarden, vervangt.

Maak het virtuele netwerk met twee subnetten.

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 

Maak het cluster, verwijst naar het subnet van het knooppunt met behulp van --vnet-subnet-id, het podsubnet met behulp van --pod-subnet-id, het --pod-ip-allocation-mode definiëren van de IP-toewijzingsmodus en schakel de bewakingsinvoegtoepassing in.

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 \
    --kubernetes-version 1.28

Knooppuntgroep toevoegen

Wanneer u een knooppuntgroep toevoegt, verwijst u naar het subnet van het knooppunt met behulp van --vnet-subnet-idhet podsubnet en --pod-subnet-id de toewijzingsmodus met behulp van de modus --pod-ip-allocation-mode. In het volgende voorbeeld worden twee nieuwe subnetten gemaakt waarnaar vervolgens wordt verwezen bij het maken van een nieuwe knooppuntgroep:

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

Veelgestelde vragen over statische toewijzing van CIDR-blokken en verbeterde subnetondersteuning

  • Kan ik meerdere podsubnetten toewijzen aan een cluster?

    Er kunnen meerdere subnetten worden toegewezen aan een cluster, maar er kan slechts één subnet worden toegewezen aan elke knooppuntgroep. Verschillende knooppuntgroepen in hetzelfde/verschillende cluster kunnen hetzelfde subnet delen.

  • Kan ik podsubnetten uit een ander VNet helemaal toewijzen?

    Nee, het podsubnet moet afkomstig zijn van hetzelfde VNet als het cluster.

  • Kunnen sommige knooppuntgroepen in een cluster dynamische IP-toewijzing gebruiken, terwijl andere de nieuwe statische bloktoewijzing gebruiken?

Ja, verschillende knooppuntgroepen kunnen verschillende toewijzingsmodi gebruiken. Zodra een subnet echter in één toewijzingsmodus wordt gebruikt, kan het alleen worden gebruikt in dezelfde toewijzingsmodus voor alle knooppuntgroepen waaraan het is gekoppeld.

Volgende stappen

Meer informatie over netwerken in AKS vindt u in de volgende artikelen: