Skalningsalternativ för program i Azure Kubernetes Service

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

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 för att upprätthålla en fast kostnad, till exempel antalet noder. Om du vill skala manuellt definierar du antalet repliker eller noder. Kubernetes API 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:et relevant Azure Compute API kopplat till den beräkningstyp som används av klustret. För kluster som bygger på VM-skalningsuppsättningar avgör TILL exempel VM-skalningsuppsättningar API:et vilka noder som ska ta borts. Mer information om hur noder väljs för borttagning vid nedskalning finns i vanliga frågor och svar om vm-skalningsuppsättningar.

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 autoskalning av poddar

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 och Mått-API:et hämtar data från Kubelet var 60:e sekund. HPA uppdateras alltså var 60:e sekund. När ändringar krävs ökas eller minskas antalet repliker i enlighet med detta. HPA fungerar med AKS-kluster som distribuerade Metrics Server för Kubernetes version 1.8 och senare.

Kubernetes vågrät autoskalning av poddar

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 eventuella 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 rashändelser anges 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, men standardfördröjningen för nedskalningshändelser är 5 minuter.

Autoskalning av kluster

För att svara på ändrade poddkrav justerar Kubernetes-klustrets autoskalning antalet noder baserat på de begärda beräkningsresurserna i nodpoolen. Som standard kontrollerar kluster autoskalningsservern mått-API-servern var 10:e sekund efter nödvändiga ändringar i antalet noder. Om autoskalning av klustret fastställer att en ändring krävs ökas eller minskas antalet noder i AKS-klustret. Autoskalning 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 den vågräta autoskalningsenheten för poddar. När det kombineras ökar eller minskar den vågräta autoskalningen av poddar antalet poddar baserat på programmets efterfrågan, och autoskalning av kluster 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 är tillgängliga i nodpoolen.

När autoskalning av kluster märker poddar som inte kan schemaläggas på grund av resursbegränsningar för nodpoolen ökar antalet noder i nodpoolen för att ge 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 programmet behöver skalas snabbt kan vissa poddar vara i ett tillstånd som väntar på att schemaläggas tills fler noder som distribueras av klustrets autoskalning kan acceptera de schemalagda poddarna. För program som har höga krav kan du skala med virtuella noder och Azure Container Instances.

Skala in händelser

Autoskalning av kluster övervakar även poddschemaläggningsstatusen för noder som inte nyligen har tagit emot 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 de inte längre behövs i 10 minuter för borttagning. När den här situationen inträffar schemaläggs poddar att köras på andra noder i nodpoolen, och autoskalning av kluster minskar antalet noder.

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

Kubernetes Händelsedriven autoskalning (KEDA)

Kubernetes Händelsedriven autoskalning (KEDA) är en öppen källkod komponent för händelsedriven autoskalning 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-skalning är användbart i scenarier där arbetsbelastningar tar emot trafiktoppar eller hanterar stora datavolymer. Det skiljer sig från horisontell podd autoskalning, eftersom KEDA är händelsedriven och skalar baserat på antalet händelser, medan HPA är måttdriven baserat på resursanvändningen (till exempel CPU och minne).

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

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 programmet behöver skalas snabbt kan den vågräta podd-autoskalningen schemalägga fler poddar än vad som kan tillhandahållas av befintliga beräkningsresurser i nodpoolen. Om det här scenariot konfigureras utlöser det sedan klustrets autoskalning 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 distributioner kan skalas över AKS och ACI och utan fördröjning när klustrets autoskalning distribuerar nya noder i AKS-klustret.

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: