Dela via


Skalningsalternativ för program i Azure Kubernetes Service (AKS)

När du kör program i Azure Kubernetes Service (AKS) kan du behöva öka eller minska mängden beräkningsresurser i klustret. När du ändrar antalet programinstanser som du har kan du behöva ändra antalet underliggande Kubernetes-noder. Du kan också behöva tillhandahålla ett stort antal andra applikationsinstanser.

Den här artikeln beskriver viktiga begrepp för AKS-programskalning, inklusive manuellt skalning av poddar eller noder, användning av autoskalning av horisontell podd, autoskalning av kluster och integrering med Azure Container Instances (ACI).

Skala poddar eller noder manuellt

Du kan skala repliker, poddar och noder manuellt för att testa hur programmet svarar på en ändring i tillgängliga resurser och tillstånd. Genom att skala resurser manuellt kan du definiera en uppsättning resurser som ska användas, till exempel antalet noder, för att upprätthålla en fast kostnad. Om du vill skala manuellt definierar du antalet repliker eller noder. Kubernetes-API:et schemalägger sedan skapandet av fler poddar eller tömning av noder baserat på antalet repliker eller noder.

När du skalar ned noder anropar Kubernetes API det relevanta Azure Compute API som är kopplat till den beräkningstyp som används av klustret. För kluster som bygger på VM-skalningsuppsättningar avgör API:et vm-skalningsuppsättningar vilka noder som ska tas bort. Mer information om hur noder väljs för borttagning vid nedskalning finns i VM-skalningsuppsättningar FAQ.

Information om hur du kommer igång med att skala noder manuellt finns i Skala noder manuellt i ett AKS-kluster. Information om hur du skalar antalet poddar manuellt finns i kommandot kubectl scale.

Horisontell pod-autoscaler

Kubernetes använder hpa (horizontal pod autoscaler) för att övervaka resursefterfrågan och automatiskt skala antalet poddar. Som standard kontrollerar HPA mått-API:et var 15:e sekund efter nödvändiga ändringar i antalet repliker, medan Mått-API:et hämtar data från Kubelet var 60:e sekund. Därför uppdateras HPA var 60:e sekund. När ändringar krävs skalas antalet repliker i enlighet med detta. HPA fungerar med AKS-kluster som har distribuerat Metrics Server för Kubernetes version 1.8 och senare.

Kubernetes horisontell autoskalning av pods

När du konfigurerar HPA för en viss distribution definierar du det minsta och högsta antalet repliker som kan köras. Du definierar också måttet för att övervaka och basera skalningsbeslut på, till exempel CPU-användning.

Information om hur du kommer igång med den vågräta autoskalningen av poddar i AKS finns i Autoskala poddar i AKS.

Nedkylning av skalningshändelser

Eftersom HPA uppdateras var 60:e sekund kanske tidigare skalningshändelser inte har slutförts innan en ny kontroll görs. Det här beteendet kan leda till att HPA ändrar antalet repliker innan den tidigare skalningshändelsen kan ta emot programarbetsbelastningen och resurskraven justeras i enlighet med detta.

För att minimera tävlingar fastställs ett fördröjningsvärde. Det här värdet definierar hur länge HPA måste vänta efter en skalningshändelse innan en annan skalningshändelse kan utlösas. Det här beteendet gör att det nya antalet repliker börjar gälla och mått-API:et återspeglar den distribuerade arbetsbelastningen. Det finns ingen fördröjning för uppskalningshändelser från och med Kubernetes 1.12. Standardfördröjningen för nedskalningshändelser är dock 5 minuter.

Automatisk skalerare för kluster

För att svara på ändrade poddkrav justerar Kubernetes-klustrets autoskalning antalet noder baserat på de begärda beräkningsresurserna i nodpoolen. Som standardinställning kontrollerar kluster-autoskalaren Metrics API-servern var 10:e sekund för nödvändiga ändringar i antalet noder. Om kluster-autoskalaren fastställer att en ändring krävs, ökas eller minskas antalet noder i ditt AKS-kluster. Automatisk skalning av kluster fungerar med Kubernetes RBAC-aktiverade AKS-kluster som kör Kubernetes 1.10.x eller senare.

Autoskalning av Kubernetes-kluster

Autoskalning av kluster används vanligtvis tillsammans med vågrät autoskalare för poddar. När de kombineras ökar eller minskar den vågräta autoskalaren antalet poddar baserat på programmets efterfrågan, och klusterautoskalaren justerar antalet noder för att köra fler poddar.

Information om hur du kommer igång med autoskalning av kluster i AKS finns i Autoskalning av kluster i AKS.

Skala ut händelser

Om en nod inte har tillräckligt med beräkningsresurser för att köra en begärd podd kan podden inte fortsätta genom schemaläggningsprocessen. Podden kan inte starta om inte fler beräkningsresurser görs tillgängliga i nodpoolen.

När klusterautoskalaren upptäcker poddar som inte kan schemaläggas på grund av nodpoolens resursbegränsningar ökar antalet noder i nodpoolen för att tillhandahålla extra beräkningsresurser. När noderna har distribuerats och är tillgängliga för användning i nodpoolen schemaläggs poddarna sedan att köras på dem.

Om din applikation behöver skalas snabbt kan vissa poddar hamna i ett väntläge för att bli schemalagda tills fler noder som distribueras av klustrets autoskalare kan acceptera de planerade poddarna. För applikationer som har snabba toppbelastningar kan du skala med virtuella noder och Azure Container Instances.

Anpassa storleken på händelser

Autoskalaren för kluster övervakar även schemaläggningsstatus för poddar på noder som inte nyligen har fått nya schemaläggningsbegäranden. Det här scenariot anger att nodpoolen har fler beräkningsresurser än vad som krävs och att antalet noder kan minskas. Som standard schemaläggs noder som passerar ett tröskelvärde för att inte längre behövas i 10 minuter för borttagning. När den här situationen inträffar, schemaläggs poddar att köras på andra noder inom nodpoolen, och klustrets autoskalare minskar antalet noder.

Dina program kan uppleva vissa störningar eftersom poddar schemaläggs på olika noder när klustrets autoskalning minskar antalet noder. Undvik program som använder en enda poddinstans för att minimera störningar.

Kubernetes Händelsestyrd autoskalning (KEDA)

Kubernetes Händelsedriven autoskalning (KEDA) är en komponent med öppen källkod för händelsedriven automatisk skalning av arbetsbelastningar. Den skalar arbetsbelastningar dynamiskt baserat på antalet mottagna händelser. KEDA utökar Kubernetes med en anpassad resursdefinition (CRD), som kallas scaledObject, för att beskriva hur program ska skalas som svar på specifik trafik.

KEDA-skaleringsåtgärder är användbara i scenarier där arbetsuppgifter hanterar trafiktoppar eller stora datavolymer. KEDA skiljer sig från Horizontal Pod Autoscaler eftersom KEDA är händelsedriven och skalar baserat på antalet händelser, medan HPA är metrics-driven baserat på resursanvändning (till exempel CPU och minne).

Information om hur du kommer igång med KEDA-tillägget i AKS finns i KEDA-översikt.

Automatisk tilldelning av noder

Autoetablering av noder (förhandsversion) (NAP) använder Karpenter-projektet med öppen källkod som automatiskt distribuerar, konfigurerar och hanterar Karpenter i ditt AKS-kluster. NAP etablerar dynamiskt noder baserat på väntande poddresurskrav. Den väljer automatiskt den optimala SKU:n för virtuella datorer (VM) och kvantiteten för att möta efterfrågan i realtid.

NAP tar en fördefinierad lista över VM-SKU:er som utgångspunkt för att avgöra vilken SKU som passar bäst för väntande arbetsbelastningar. För mer exakt kontroll kan användare definiera de övre gränserna för resurser som används av en nodpool och inställningar för var arbetsbelastningar ska schemaläggas om det finns flera nodpooler.

Burst till Azure Container Instances (ACI)

Om du vill skala AKS-klustret snabbt kan du integrera med Azure Container Instances (ACI). Kubernetes har inbyggda komponenter för att skala antalet repliker och noder. Men om ditt program behöver skalas snabbt kan den vågräta podd-autoskalningen schemalägga fler poddar än vad de befintliga beräkningsresurserna i nodpoolen kan stödja. Om det här scenariot konfigureras utlöser det sedan autoskalning av klustret för att distribuera fler noder i nodpoolen, men det kan ta några minuter innan noderna etableras och gör det möjligt för Kubernetes-schemaläggaren att köra poddar på dem.

Kubernetes burst-skalning till ACI

Med ACI kan du snabbt distribuera containerinstanser utan extra infrastrukturkostnader. När du ansluter med AKS blir ACI ett skyddat, logiskt tillägg för ditt AKS-kluster. Komponenten för virtuella noder , som baseras på virtuell Kubelet, installeras i ditt AKS-kluster som presenterar ACI som en virtuell Kubernetes-nod. Kubernetes kan sedan schemalägga poddar som körs som ACI-instanser via virtuella noder, inte som poddar på VM-noder direkt i AKS-klustret.

Programmet kräver inga ändringar för att använda virtuella noder. Dina utplaceringar kan skalas över AKS och ACI, och utan fördröjning när autoskalaren för klustret distribuerar nya noder i din AKS-kluster.

Virtuella noder distribueras till ett annat undernät i samma virtuella nätverk som aks-klustret. Den här virtuella nätverkskonfigurationen skyddar trafiken mellan ACI och AKS. Precis som ett AKS-kluster är en ACI-instans en säker, logisk beräkningsresurs som är isolerad från andra användare.

Nästa steg

Information om hur du kommer igång med skalningsprogram finns i följande resurser:

Mer information om grundläggande Kubernetes- och AKS-begrepp finns i följande artiklar: