Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En begränsning för Azure CNI Pod Subnet – Dynamisk IP-allokering är skalbarheten för poddundernätets storlek utöver ett /16-undernät. Även med ett stort undernät kan stora kluster fortfarande begränsas till 65 000 poddar på grund av en gräns för Azure-adressmappning. Poddundernätet – statisk blockallokering i Azure CNI löser det här problemet genom att tilldela CIDR-block till noder i stället för enskilda IP-adresser.
Den erbjuder följande fördelar:
- Bättre IP-skalbarhet: CIDR-block allokeras statiskt till klusternoderna och finns för nodens livslängd, i motsats till den traditionella dynamiska allokeringen av enskilda IP-adresser med traditionell CNI. Detta möjliggör routning baserat på CIDR-block och hjälper till att skala klustergränsen upp till 1 miljon poddar från de traditionella 65K-poddarna per kluster. Ditt virtuella Azure-nätverk måste vara tillräckligt stort för att hantera klustrets skala.
- Flexibility: Node and pod subnets can be scaled independently. Ett enda poddundernät kan delas mellan flera nodpooler i ett kluster eller över flera AKS-kluster som distribueras i samma virtuella nätverk. Du kan också konfigurera ett separat poddundernät för en nodpool.
- High performance: Since pods are assigned virtual network IPs, they have direct connectivity to other cluster pods and resources in the VNet.
- Separata VNet-principer för poddar: Eftersom poddar har ett separat undernät kan du konfigurera separata VNet-principer för dem som skiljer sig från nodprinciper. Detta möjliggör många användbara scenarier som att endast tillåta internetanslutning för poddar och inte för noder, åtgärda käll-IP för podden i en nodpool med hjälp av en Azure NAT Gateway och använda NSG:er för att filtrera trafik mellan nodpooler.
- Kubernetes-nätverksprinciper: Cilium, Azure NPM och Calico fungerar med den här nya lösningen.
Den här artikeln visar hur du använder Azure CNI Pod Subnet – Statisk blockallokering och utökat undernätsstöd i AKS.
Prerequisites
Note
När du använder Pod-undernät – statisk blockallokering stöds inte exponering av en applikation som en Private Link-tjänst med en Kubernetes Load Balancer-tjänst.
Review the prerequisites for configuring basic Azure CNI networking in AKS, as the same prerequisites apply to this article.
Review the deployment parameters for configuring basic Azure CNI networking in AKS, as the same parameters apply.
AKS Engine- och DIY-kluster stöds inte.
Azure CLI-version
2.75.0eller senareOm du har ett befintligt kluster måste du aktivera Container Insights för övervakning av IP-undernätsanvändning. Du kan aktivera Container Insights med hjälp av
az aks enable-addonskommandot, som du ser i följande exempel:az aks enable-addons --addons monitoring --name <cluster-name> --resource-group <resource-group-name>
Limitations
Nedan följer några av begränsningarna med att använda Azure CNI Pod-undernät – statisk blockallokering:
- Lägsta Kubernetes-version som krävs är 1,28
- Maximal undernätsstorlek som stöds är x.x.x.x/12 ~ 1 miljon IP-adresser
- Endast ett enskilt driftläge kan användas per undernät. Om ett undernät använder statisk blockallokeringsläge kan det inte använda dynamiskt IP-allokeringsläge i ett annat kluster eller en annan nodpool med samma undernät och vice versa.
- Stöds endast i nya kluster eller när du lägger till nodpooler med ett annat undernät till befintliga kluster. Det går inte att migrera eller uppdatera befintliga kluster eller nodpooler.
- I alla CIDR-block som tilldelats en nod i nodpoolen väljs en IP-adress som nodens primära IP-adress. För nätverksadministratörer som ska välja
--max-pods-värdet, försök använda beräkningen nedan för att på bästa sätt uppfylla dina behov och optimera användningen av IP-adresser i subnätet.
max_pods=(N * 16) - 1
där N är något positivt heltal och N > 0
Planering av IP-adressering
Att planera din IP-adressering är mer flexibelt och detaljerat. Eftersom noderna och poddarna skalas separat kan deras adressutrymmen också planeras separat. Eftersom poddundernät kan konfigureras till kornigheten för en nodpool kan du alltid lägga till ett nytt undernät när du lägger till en nodpool. Systempoddarna i en kluster-/nodpool tar också emot IP-adresser från poddundernätet, så det här beteendet måste redovisas.
I det här scenariot allokeras CIDR-block med /28 (16 IP-adresser) till noder baserat på konfigurationen "--max-pods" för nodpoolen som definierar det maximala antalet poddar per nod. 1 IP-adress är reserverad på varje nod från alla tillgängliga IP-adresser på den noden för interna ändamål.
När du fastställer och planerar dina IP-adresser är det därför viktigt att definiera konfigurationen "--max-pods" och den kan beräknas bäst enligt nedan:
max_pods_per_node = (16 * N) - 1 där N är ett positivt heltal större än 0
Idealvärden utan slöseri med IP-adresser skulle kräva att maxvärdet för pods överensstämmer med ovanstående uttryck.
- Example 1: max_pods = 30, CIDR Blocks allocated per node = 2, Total IPs available for pods = (16 * 2) - 1 = 32 - 1 = 31, IP wastage per node = 31 - 30 = 1 [Low wastage - Acceptable Case]
- Example 2: max_pods = 31, CIDR Blocks allocated per node = 2, Total IPs available for pods = (16 * 2) - 1 = 32 - 1 = 31, IP wastage per node = 31 - 31 = 0 [Ideal Case]
- Example 3: max_pods = 32, CIDR Blocks allocated per node = 3, Total IPs available for pods = (16 * 3) - 1 = 48 - 1 = 47, IP wastage per node = 47 - 32 = 15 [High Wastage - Not Recommended Case]
Planeringen av IP-adresser för Kubernetes-tjänster förblir oförändrad.
Note
Se till att ditt virtuella nätverk har ett tillräckligt stort och sammanhängande adressutrymme för att stödja klustrets skala.
Deployment parameters
The deployment parameters for configuring basic Azure CNI networking in AKS are all valid, with exceptions:
- Parametern vnet-undernäts-ID refererar nu till det undernät som är relaterat till klustrets noder.
- Parametern poddens undernäts-ID används för att ange det undernät vars IP-adresser ska tilldelas antingen statiskt eller dynamiskt till poddar i nodpoolen.
-
Parametern för podd-ip-allokeringsläge anger om du vill använda
DynamicIndividual(dynamisk IP-allokering) ellerStaticBlock(statisk blockallokering).
Konfigurera nätverk med statisk allokering av CIDR-block och förbättrat undernätsstöd – Azure CLI
Användning av poddundernät – Statisk blockallokering i klustret liknar standardmetoden för att konfigurera ett kluster med poddundernät – dynamisk IP-allokering. I följande exempel går vi igenom hur du skapar ett nytt virtuellt nätverk med ett undernät för noder och ett undernät för poddar och skapar ett kluster som använder Azure CNI Pod Subnet – Statisk blockallokering. Se till att ersätta variabler som $subscription med dina värden.
Skapa det virtuella nätverket med två undernät.
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
Skapa klustret, referera till nodundernätet med , --vnet-subnet-idpoddundernätet med , --pod-subnet-id--pod-ip-allocation-mode för att definiera ip-allokeringsläget och aktivera övervakningstillägget.
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
Lägga till nodpool
När du lägger till en nodpool, refererar du till nodundernätet med --vnet-subnet-id, poddundernätet med --pod-subnet-id och allokeringsläget med hjälp av '--pod-ip-allocation-mode'. I följande exempel skapas två nya undernät som sedan refereras i skapandet av en ny nodpool:
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
Migrera från poddundernät – Dynamisk IP-allokering till poddundernät – Statisk blockallokering
Om du har ett befintligt AKS-kluster med dynamisk IP-allokering för poddundernät och vill migrera till poddundernät – statisk blockallokering följer du dessa steg:
Steg för migrering
Planera för ett nytt undernät som ska användas för statiska blockagentpooler
- Skapa ett nytt undernät i ditt befintliga virtuella nätverk som ska dedikeras till statiskt blockeringsläge
- Se till att undernätets storlek följer planeringsriktlinjerna som beskrivs i avsnittet Planera IP-adressering
Lägg till en agentpool i ditt befintliga kluster med statiskt blockeringsläge och det nya undernätet
-
az aks nodepool addAnvänd kommandot för att skapa en ny nodpool med statisk blockallokering - Referera till det nya undernätet med
--pod-subnet-idoch ange--pod-ip-allocation-modetillStaticBlock.
-
Spärra av din befintliga agentpool så att alla dina distributioner och trafik flyttas över till den nya agentpoolen
- Använd
kubectl cordonför att markera befintliga noder som oplanerade - Töm arbetsbelastningar gradvis från den gamla nodpoolen till den nya statiska blocknodpoolen
- Använd
När alla arbetsbelastningar har flyttats över till den nya agentpoolen tar du bort den befintliga icke-statiska blockagentpoolen
- Kontrollera att alla arbetsbelastningar körs framgångsrikt på den nya nodpoolen
- Ta bort den gamla nodpoolen med hjälp av
az aks nodepool delete
Important
Migrering kräver noggrann planering och testning. Se till att du har tillräcklig kapacitet i den nya nodpoolen innan du spärrar av befintliga noder. Testa migreringsprocessen i en icke-produktionsmiljö först.
Statisk allokering av CIDR-block och förbättrat stöd för undernät: vanliga frågor
Kan jag tilldela flera poddundernät till ett kluster?
Flera undernät kan tilldelas till ett kluster, men endast ett undernät kan tilldelas till varje nodpool. Olika nodpooler i samma/olika kluster kan dela samma undernät.
Kan jag tilldela poddundernät från ett annat virtuellt nätverk?
Nej, poddundernätet ska komma från samma virtuella nätverk som klustret.
Kan vissa nodpooler i ett kluster med poddundernätet IPAM använda dynamisk IP-allokering medan andra använder den nya statiska blockallokeringen?
Ja, olika nodpooler kan använda olika allokeringslägen. När ett undernät används i ett allokeringsläge kan det dock bara användas i samma allokeringsläge för alla nodpooler som det är associerat med.
Next steps
Läs mer om nätverk i AKS i följande artiklar:
Azure Kubernetes Service