Dela via


Automatisk skalning av lodrät podd i Azure Kubernetes Service (AKS)

Den här artikeln innehåller en översikt över hur du använder VPA (Vertical Pod Autoscaler) i Azure Kubernetes Service (AKS), som baseras på öppen källkod Kubernetes-versionen.

När den konfigureras anger VPA automatiskt resursbegäranden och begränsningar för containrar per arbetsbelastning baserat på tidigare användning. VPA frigör cpu och minne för andra poddar och hjälper till att säkerställa effektiv användning av dina AKS-kluster. Autoskalning av lodrät podd ger rekommendationer för resursanvändning över tid. Om du vill hantera plötsliga ökningar av resursanvändningen använder du horizontal pod autoscaler, som skalar antalet poddrepliker efter behov.

Förmåner

Autoskalning av lodrät podd har följande fördelar:

  • Analyserar och justerar processor- och minnesresurser så att de passar dina program. VPA ansvarar inte bara för att skala upp, utan även för att skala ned baserat på deras resursanvändning över tid.
  • En podd med ett skalningsläge inställt på automatisk eller återskapad avlägsnas om den behöver ändra sina resursbegäranden.
  • Du kan ange cpu- och minnesbegränsningar för enskilda containrar genom att ange en resursprincip.
  • Säkerställer att noder har rätt resurser för poddschemaläggning.
  • Erbjuder konfigurerbar loggning av eventuella justeringar av processor- eller minnesresurser som gjorts.
  • Förbättrar användningen av klusterresurser och frigör cpu och minne för andra poddar.

Begränsningar och överväganden

Tänk på följande begränsningar och överväganden när du använder autoskalning av lodrät podd:

  • VPA stöder högst 1 000 poddar som är associerade med VerticalPodAutoscaler objekt per kluster.
  • VPA kan rekommendera fler resurser än vad som är tillgängligt i klustret, vilket förhindrar att podden tilldelas till en nod och körs på grund av otillräckliga resurser. Du kan övervinna den här begränsningen genom att ange LimitRange till maximalt tillgängliga resurser per namnområde, vilket säkerställer att poddar inte ber om fler resurser än vad som anges. Du kan också ange maximalt antal tillåtna resursrekommendationer per podd i ett VerticalPodAutoscaler objekt. VPA kan inte helt lösa ett otillräckligt nodresursproblem. Gränsintervallet är fast, men nodresursanvändningen ändras dynamiskt.
  • Vi rekommenderar inte att du använder VPA med HPA (Horizontal Pod Autoscaler), som skalar baserat på samma cpu- och minnesanvändningsmått.
  • VPA Recommender lagrar endast upp till åtta dagars historiska data.
  • VPA stöder inte JVM-baserade arbetsbelastningar på grund av begränsad insyn i den faktiska minnesanvändningen för arbetsbelastningen.
  • VPA har inte stöd för att köra din egen implementering av VPA tillsammans med den. Det finns stöd för att ha en extra eller anpassad rekommenderare.
  • AKS Windows-containrar stöds inte.

VPA-översikt

VPA-objektet består av tre komponenter:

  • Rekommenderare: Rekommenderaren övervakar aktuell och tidigare resursförbrukning, inklusive måtthistorik, OOM-händelser (Out of Memory) och VPA-distributionsspecifikationer, och använder den information som samlas in för att tillhandahålla rekommenderade värden för begäranden/gränser för containerns CPU och minne.
  • Updater: Updater övervakar hanterade poddar för att säkerställa att deras resursbegäranden har angetts korrekt. Annars tar den bort poddarna så att deras kontrollanter kan återskapa dem med de uppdaterade begärandena.
  • VPA-antagningskontrollant: VPA-antagningskontrollanten anger rätt resursbegäranden på nya poddar som antingen skapats eller återskapats av deras kontrollant baserat på updaterns aktivitet.

VPA-antagningskontrollant

VPA-antagningskontrollanten är en binär som registrerar sig som en webbhook för muterande antagning. När en ny podd skapas hämtar VPA-antagningskontrollanten en begäran från API-servern och utvärderar om det finns en matchande VPA-konfiguration eller hittar en motsvarande och använder den aktuella rekommendationen för att ange resursbegäranden i podden.

Ett fristående jobb, overlay-vpa-cert-webhook-check, körs utanför VPA-antagningskontrollanten. Jobbet overlay-vpa-cert-webhook-check skapar och förnyar certifikaten och registrerar VPA-antagningskontrollanten som en MutatingWebhookConfiguration.

VPA-objektåtgärdslägen

En lodrät autoskalningsresurs för poddar, oftast en distribution, infogas för varje styrenhet som du vill ha automatiskt beräknade resurskrav.

Det finns fyra lägen där VPA fungerar:

  • Auto: VPA tilldelar resursbegäranden när podden skapas och uppdaterar befintliga poddar med den föredragna uppdateringsmekanismen. Auto, vilket motsvarar Recreate, är standardläget. När omstartsfria, eller på plats, uppdateringar av poddbegäranden är tillgängliga, kan den användas som önskad uppdateringsmekanism i Auto läget. Auto Med läget tar VPA bort en podd om den behöver ändra sina resursbegäranden. Det kan leda till att poddarna startas om på en gång, vilket kan orsaka inkonsekvenser i programmet. Du kan begränsa omstarter och upprätthålla konsekvens i den här situationen med hjälp av en PodDisruptionBudget.
  • Recreate: VPA tilldelar resursbegäranden när podden skapas och uppdaterar befintliga poddar genom att avlägsna dem när de begärda resurserna skiljer sig avsevärt från de nya rekommendationerna (med respekt för PodDisruptionBudget, om det definieras). Du bör bara använda det här läget om du behöver se till att poddarna startas om när resursbegäran ändras. Annars rekommenderar vi att du använder Auto läge, vilket drar nytta av omstartsfria uppdateringar när det är tillgängligt.
  • Initial: VPA tilldelar endast resursbegäranden när podden skapas. Den uppdaterar inte befintliga poddar. Det här läget är användbart för att testa och förstå VPA-beteendet utan att påverka de poddar som körs.
  • Off: VPA ändrar inte automatiskt resurskraven för poddarna. Rekommendationerna beräknas och kan inspekteras i VPA-objektet.

Distributionsmönster för programutveckling

Om du inte är bekant med VPA rekommenderar vi följande distributionsmönster under programutvecklingen för att identifiera dess unika resursanvändningsegenskaper, testa VPA för att kontrollera att det fungerar korrekt och testa tillsammans med andra Kubernetes-komponenter för att optimera resursanvändningen i klustret:

  1. Ange UpdateMode = "Off" i produktionsklustret och kör VPA i rekommendationsläge så att du kan testa och bekanta dig med VPA. UpdateMode = "Off" kan undvika att införa en felkonfiguration som kan orsaka ett avbrott.
  2. Etablera observerbarhet först genom att samla in telemetri för faktisk resursanvändning under en viss tidsperiod, vilket hjälper dig att förstå beteendet och eventuella tecken på problem från container- och poddresurser som påverkas av de arbetsbelastningar som körs på dem.
  3. Bekanta dig med övervakningsdata för att förstå prestandaegenskaperna. Baserat på den här insikten anger du önskade begäranden/gränser i enlighet med detta och sedan i nästa distribution eller uppgradering.
  4. Ange updateMode värdet till Auto, Recreateeller Initial beroende på dina krav.

Nästa steg

Information om hur du konfigurerar autoskalning av lodrät podd i AKS-klustret finns i Använda autoskalning av lodrät podd i AKS.