Automatisk zonplacering i Azure Kubernetes Service (förhandsversion)

Automatisk zonplacering i Azure Kubernetes Service (AKS) väljer dynamiskt den bästa uppsättningen tillgänglighetszoner för en nodpool. Du behöver inte ange zonerna manuellt för varje region och VM SKU-kombination. När du skapar eller uppdaterar en nodpool med --zones autoplacerar AKS virtuella datorer i tillgänglighetszoner som har kapacitet för den begärda SKU:n i målregionen och tillämpar en maximal instansprocent på 50% per zon.

Den här artikeln visar hur du skapar eller uppdaterar AKS-nodpooler som använder automatisk zonplacering.

Så här fungerar automatisk zonplacering

När du anger --zones auto (eller availabilityZones: ["auto"] i agentpoolprofilen) använder AKS principen Azure Automatisk zonplacering för att välja zoner och distribuera noder. Du behöver inte ange zonnummer eller underhålla olika zonkonfigurationer för varje region och VM SKU.

Automatisk zonplacering fungerar på följande sätt:

  1. AKS utvärderar vilka tillgänglighetszoner i målregionen som kan stödja den begärda virtuella dator-SKU:n.
  2. AKS väljer först upp till tre tillgängliga zoner och placerar noder enligt principen för automatisk zonplacering. Ingen enskild zon får innehålla mer än 50% av nodpoolen.
  3. Under senare utskalningsåtgärder utvärderar AKS zontillgängligheten igen. Om Azure lägger till en zon i regionen eller gör vm-SKU:n tillgänglig i en annan zon kan AKS placera nya noder i den zonen när placeringsprincipen och den tillgängliga kapaciteten tillåter det. Du behöver inte uppdatera konfigurationen av nodpoolen.

Important

Gränsen på 50% är en maximal koncentration per zon, inte en garanti för att noderna alltid är jämnt fördelade. Den faktiska fördelningen beror på antalet noder, de zoner som stöder den valda virtuella datorns SKU och vilken kapacitet som är tillgänglig när noder etableras. En skapande- eller skalningsåtgärd kan fortfarande misslyckas om Azure inte kan allokera de begärda noderna samtidigt som gränsen per zon respekteras.

Den här metoden hanterar vanliga smärtpunkter med manuellt angivande av zoner:

  • Regionagnostiska distributioner: Använd konsekventa konfigurationer mellan regioner utan att oroa dig för skillnader i zontillgänglighet.
  • Förbättrad motståndskraft: Uppnå automatiskt redundans för flera zoner för bättre programtillgänglighet.
  • Automatisk zonexpansion: Utnyttja nya tillgänglighetszoner sömlöst när regioner expanderar (till exempel från tre till fyra zoner).
  • Minskade distributionsfel: Minska skapande- och skalningsallokeringsfel som orsakas av kapacitetsbegränsningar i en specifik zon baserat på din arbetsbelastningstolerans för zonutjämning.

Begränsningar och överväganden

  • Automatisk zonplacering stöder endast regioner med stöd för tillgänglighetszoner. Mer information finns i Listan över Azure-regioner.
  • Automatisk zonplacering stöder skapande och uppdatering av både Virtual Machine Scale Sets-baserade och Virtual Machines-baserade nodpooler.
  • Gränsen per zon är 50% noder. En skapande- eller skalningsåtgärd kan fortfarande misslyckas om Azure inte kan allokera de begärda noderna samtidigt som gränsen per zon respekteras.
  • Automatisk zonplacering är avsedd för zonspannande arbetsbelastningar. För zonanpassade arbetsbelastningar (där varje nodpool är låst till en enda zon) fortsätt att uttryckligen ange zonen genom att använda --zones 1, --zones 2 och så vidare.

Förutsättningar

Important

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

Installera CLI-tillägget aks-preview

Installera CLI-tillägget aks-preview med kommandot az extension add.

az extension add --name aks-preview

Uppdatera tillägget så att du har den senaste versionen installerad med hjälp az extension update av kommandot .

az extension update --name aks-preview

Registrera funktionsflaggan VmssAutomaticZonePlacement

Registrera funktionsflaggan az feature register med hjälp av kommandot :

az feature register \
  --namespace Microsoft.Compute \
  --name VmssAutomaticZonePlacement

Kontrollera registreringsstatusen az feature show med hjälp av kommandot :

az feature show \
  --namespace Microsoft.Compute \
  --name VmssAutomaticZonePlacement \
  --query properties.state \
  --output tsv

Vänta tills kommandot returneras Registered innan du fortsätter.

Skapa ett AKS-kluster med automatisk zonplacering (förhandsversion)

Skapa ett nytt AKS-kluster med en systemnodpool baserad på Virtual Machine Scale Sets eller Virtual Machines som använder automatisk zonplacering med kommandot az aks create tillsammans med --zones auto:

az aks create \
  --resource-group example-rg \
  --name example-cluster \
  --node-vm-size Standard_D8s_v5 \
  --node-count 10 \
  --zones auto

AKS väljer de zoner som har kapacitet för Standard_D8s_v5 i målregionen och sprider de 10 noderna över dem, utan att en enda zon innehåller mer än 50% av noderna.

Lägga till en nodpool med automatisk zonplacering (förhandsversion)

Lägg till en ny nodpool i ett befintligt kluster, baserad på Virtual Machine Scale Sets eller Virtual Machines, med kommandot az aks nodepool add med --zones auto:

az aks nodepool add \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name userpoolauto \
  --node-vm-size Standard_D8s_v5 \
  --node-count 6 \
  --zones auto

Uppdatera en befintlig nodpool så att den använder automatisk zonplacering (förhandsversion)

Uppdatera en befintlig nodpool som är baserad på Virtual Machine Scale Sets eller Virtual Machines så att den använder automatisk zonplacering med kommandot az aks nodepool update med --zones auto:

az aks nodepool update \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name nodepool1 \
  --zones auto

AKS uppdaterar den befintliga nodpoolen via en löpande åtgärd:

  1. AKS lägger till överspänningsnoder som använder automatisk zonplacering.
  2. AKS spärrar av och tömmer de befintliga noderna.
  3. AKS tar bort befintliga noder när deras arbetsbelastningar har flyttats till överspänningsnoderna.

Åtgärden följer följande uppgraderingsinställningar som du konfigurerar i nodpoolen:

  • Maximal ökning (--max-surge): Styr hur många extra noder AKS lägger till under uppdateringen. Ett högre värde slutför uppdateringen snabbare men kräver mer beräkningskvot och IP-kapacitet för undernätet.
  • Tidsgräns för noddränering (--drain-timeout): Styr hur länge AKS väntar på vräkning av poddar från en nod innan dräneringen misslyckas.
  • Stabiliseringstid för nod (--node-soak-duration): Styr hur länge AKS väntar efter att en ny nod har blivit redo innan den fortsätter till nästa omgång.

Innan du startar uppdateringen kontrollerar du att du har tillräckligt med beräkningskvot och IP-kapacitet för undernätet för överspänningsnoderna och att poddavbrottsbudgetarna tillåter att noderna töms.

Kontrollera zonens placering

När du har skapat eller uppdaterat klustret eller nodpoolen kontrollerar du de zoner som AKS har valt med hjälp az aks show av kommandot .

az aks show \
 --name example-cluster \
 --resource-group example-rg \
 --query agentPoolProfiles[].availabilityZones \
 --output tsv

Du kan också använda kubectl för att bekräfta nodfördelningen mellan zoner.

kubectl get nodes -o custom-columns='NAME:metadata.name, REGION:metadata.labels.topology\.kubernetes\.io/region, ZONE:metadata.labels.topology\.kubernetes\.io/zone'

Exempel på utdata:

NAME                                REGION   ZONE
aks-nodepool1-12345678-vmss000000   eastus   eastus-1
aks-nodepool1-12345678-vmss000001   eastus   eastus-2
aks-nodepool1-12345678-vmss000002   eastus   eastus-3
...