Optimera kostnader i Azure Kubernetes Service (AKS)
Kostnadsoptimering handlar om att maximera resursvärdet samtidigt som onödiga utgifter i din molnmiljö minimeras. Den här processen omfattar identifiering av kostnadseffektiva konfigurationsalternativ och implementering av metodtips för att förbättra drifteffektiviteten. En AKS-miljö kan optimeras för att minimera kostnaderna med hänsyn till prestanda- och tillförlitlighetskrav.
I den här artikeln lär du dig mer om:
- Val av strategisk infrastruktur.
- Dynamisk rightsizing och autoskalning.
- Utnyttja Azure-rabatter för stora besparingar.
- Holistisk övervakning och FinOps-metoder.
Förbereda programmiljön
Utvärdera SKU-familjen
Det är viktigt att utvärdera resurskraven för ditt program före distributionen. Små utvecklingsarbetsbelastningar har olika infrastrukturbehov än stora produktionsklara arbetsbelastningar. Även om en kombination av processor-, minnes- och nätverkskapacitetskonfigurationer kraftigt påverkar kostnadseffektiviteten för en SKU bör du överväga följande typer av virtuella datorer:
SKU-familj | beskrivning | Användningsfall |
---|---|---|
Virtuella Azure Spot-datorer | Skalning av virtuella Azure Spot-datorer ställer in nodpooler för oanvänd kapacitet och distribueras till en enda feldomän utan garantier för hög tillgänglighet eller serviceavtal (SLA). Med virtuella datorer med oanvänd kapacitet kan du dra nytta av outnyttolad Azure-kapacitet med betydande rabatter (upp till 90 %, jämfört med betala per användning-priser). Om Azure behöver kapacitet tillbaka avlägsnar Azure-infrastrukturen de oanvända noderna. | Bäst för utvecklings-/testmiljöer, arbetsbelastningar som kan hantera avbrott som batchbearbetningsjobb och arbetsbelastningar med flexibel körningstid. |
Ampere Altra Arm-baserade processorer (Arm64) | De virtuella Arm64-datorerna är energieffektiva och kostnadseffektiva, men de påverkar inte prestandan. Med stöd för Arm64-nodpool i AKS kan du skapa Arm64 Ubuntu-agentnoder och till och med blanda Intel- och ARM-arkitekturnoder i ett kluster. De här virtuella ARM-datorerna är utformade för att effektivt köra dynamiska, skalbara arbetsbelastningar och kan leverera upp till 50 % bättre prisprestanda än jämförbara x86-baserade virtuella datorer för utskalningsarbetsbelastningar. | Bäst för webb- eller programservrar, databaser med öppen källkod, molnbaserade program, spelservrar med mera. |
GPU-optimerade SKU:er | Beroende på vilken typ av arbetsbelastning du har bör du överväga att använda beräkningsoptimerade, minnesoptimerade, lagringsoptimerade eller till och med GPU-optimerade VM-SKU:er (graphical processing unit). GPU VM-storlekar är specialiserade virtuella datorer som är tillgängliga med enstaka, flera och bråktals-GPU:er. | GPU-aktiverade Linux-nodpooler i AKS passar bäst för beräkningsintensiva arbetsbelastningar som grafikrendering, stor modellträning och slutsatsdragning. |
Kommentar
Kostnaden för beräkning varierar mellan regioner. När du väljer en billigare region för att köra arbetsbelastningar bör du vara medveten om den potentiella effekten av svarstid och kostnader för dataöverföring. Mer information om VM-SKU:er och deras egenskaper finns i Storlekar för virtuella datorer i Azure.
Granska lagringsalternativ
Mer information om lagringsalternativ och relaterade kostnadsöverväganden finns i följande artiklar:
- Metodtips för lagring och säkerhetskopiering i Azure Kubernetes Service (AKS)
- Lagringsalternativ för program i Azure Kubernetes Service (AKS)
Använda förinställda klusterkonfigurationer
Det kan vara svårt att välja rätt VM SKU, regioner, antal noder och andra konfigurationsalternativ. Klusterförinställningskonfigurationer i Azure Portal avlastar den här första utmaningen genom att tillhandahålla rekommenderade konfigurationer för olika programmiljöer som är kostnadsmedvetna och högpresterande. Förinställningen Dev/Test är bäst för att utveckla nya arbetsbelastningar eller testa befintliga arbetsbelastningar. Förinställningen Produktionsekonomi är bäst för att hantera produktionstrafik på ett kostnadsmedvetet sätt om dina arbetsbelastningar kan tolerera avbrott. Icke-kritiska funktioner är inaktiverade som standard och förinställda värden kan ändras när som helst.
Överväg flera klientorganisationer
AKS erbjuder flexibilitet i hur du kör kluster med flera klientorganisationer och isolerar resurser. För en användarvänlig fleraktivering kan du dela kluster och infrastruktur mellan team och affärsenheter genom logisk isolering. Kubernetes-namnområden utgör den logiska isoleringsgränsen för arbetsbelastningar och resurser. Delningsinfrastruktur minskar kostnaderna för klusterhantering samtidigt som resursanvändningen och podddensiteten i klustret förbättras. Mer information om flera klientorganisationer i AKS och för att avgöra om det är rätt för organisationens behov finns i AKS-överväganden för kluster för flera klientorganisationer och design för flera klientorganisationer.
Varning
Kubernetes-miljöer är inte helt säkra för fientliga multitenancy-miljöer. Om det inte går att lita på någon klientorganisation i den delade infrastrukturen krävs mer planering för att förhindra att klientorganisationer påverkar säkerheten för andra tjänster.
Överväg fysiska isoleringsgränser . I den här modellen tilldelas team eller arbetsbelastningar till sitt eget kluster. Extra hantering och finansiella omkostnader kommer att bli en kompromiss.
Skapa molnbaserade program
Gör containern så mager som möjligt
En mager container syftar på att optimera storleken och resursfotavtrycket för det containerbaserade programmet. Kontrollera att basavbildningen är minimal och endast innehåller nödvändiga beroenden. Ta bort eventuella onödiga bibliotek och paket. En mindre containeravbildning påskyndar distributionstiderna och ökar skalningsåtgärdernas effektivitet. Med Artefaktströmning i AKS kan du strömma containeravbildningar från Azure Container Registry (ACR). Den hämtar endast det nödvändiga lagret för inledande poddstart, vilket minskar hämtningstiden för större bilder från minuter till sekunder.
Framtvinga resurskvoter
Resurskvoter är ett sätt att reservera och begränsa resurser i ett utvecklingsteam eller projekt. Kvoter definieras i ett namnområde och kan anges för beräkningsresurser, lagringsresurser och antal objekt. När du definierar resurskvoter förhindrar det att enskilda namnområden förbrukar mer resurser än allokerade. Resurskvoter är användbara för kluster med flera klientorganisationer där team delar infrastruktur.
Använda klusterstart/-stopp
När de lämnas obevakade kan små utveckling/testkluster generera onödiga kostnader. Du kan inaktivera kluster som inte behöver köras hela tiden med hjälp av start- och stoppfunktionen för klustret. Den här funktionen stänger av alla system- och användarnodpooler så att du inte betalar för extra beräkning. Tillståndet för klustret och objekten behålls när du startar klustret igen.
Använda kapacitetsreservationer
Med kapacitetsreservationer kan du reservera beräkningskapacitet i en Azure-region eller tillgänglighetszon under en tidsperiod. Reserverad kapacitet är tillgänglig för omedelbar användning tills reservationen har tagits bort. Om du kopplar en befintlig kapacitetsreservationsgrupp till en nodpool garanteras allokerad kapacitet för din nodpool och hjälper dig att undvika potentiella pristoppar på begäran under perioder med hög beräkningsefterfrågan.
Övervaka din miljö och dina utgifter
Öka synligheten med Microsoft Cost Management
Microsoft Cost Management erbjuder en bred uppsättning funktioner för att hjälpa till med molnbudgetering, prognostisering och synlighet för kostnader både inom och utanför klustret. Korrekt synlighet är viktigt för att dechiffrera utgiftstrender, identifiera optimeringsmöjligheter och öka ansvarsskyldigheten bland programutvecklare och plattformsteam. Aktivera AKS Cost Analysis-tillägget för detaljerad klusterkostnadsuppdelning efter Kubernetes-konstruktioner tillsammans med kategorierna Azure Compute, Network och Storage.
Azure Monitor
Om du matar in måttdata via Container Insights rekommenderar vi att du migrerar till hanterad Prometheus, vilket ger en betydande kostnadsminskning. Du kan inaktivera Container Insights-mått med hjälp av datainsamlingsregeln (DCR) och distribuera det hanterade Prometheus-tillägget, som stöder konfiguration via Azure Resource Manager, Azure CLI, Azure Portal och Terraform.
Mer information finns i Metodtips för Azure Monitor och hantering av kostnader för Container Insights.
Log Analytics
För kontrollplansloggar bör du överväga att inaktivera de kategorier som du inte behöver och/eller använda API:et grundläggande loggar när det är tillämpligt för att minska Log Analytics-kostnaderna. Mer information finns i Kontrollplan/resursloggar för Azure Kubernetes Service (AKS). För dataplansloggar eller programloggar bör du överväga att justera inställningarna för kostnadsoptimering.
Optimera arbetsbelastningar via automatisk skalning
Upprätta en baslinje
Innan du konfigurerar inställningarna för automatisk skalning kan du använda Azure Load Testing för att upprätta en baslinje för ditt program. Belastningstestning hjälper dig att förstå hur ditt program beter sig under olika trafikförhållanden och identifierar flaskhalsar i prestanda. När du har en baslinje kan du konfigurera inställningar för automatisk skalning för att säkerställa att programmet kan hantera den förväntade belastningen.
Aktivera automatisk skalning av program
Autoskalning av lodrät podd
Begäranden och gränser som är högre än den faktiska användningen kan resultera i överetablerade arbetsbelastningar och bortkastade resurser. Begäranden och gränser som är för låga kan däremot leda till begränsnings- och arbetsbelastningsproblem på grund av minnesbrist. Med VPA (Vertical Pod Autoscaler) kan du finjustera processor- och minnesresurser som krävs av dina poddar. VPA innehåller rekommenderade värden för cpu- och minnesbegäranden och gränser baserat på historisk containeranvändning, som du kan ange manuellt eller uppdatera automatiskt. Bäst för program med varierande resurskrav.
Vågrät autoskalning av poddar
HPA (Horizontal Pod Autoscaler) skalar dynamiskt antalet poddrepliker baserat på observerade mått, till exempel PROCESSOR- eller minnesanvändning. Under perioder med hög efterfrågan skalar HPA ut och lägger till fler poddrepliker för att distribuera arbetsbelastningen. Under perioder med låg efterfrågan skalar HPA in, vilket minskar antalet repliker för att spara resurser. Bäst för program med förutsägbara resurskrav.
Varning
Du bör inte använda VPA med HPA på samma CPU- eller minnesmått. Den här kombinationen kan leda till konflikter, eftersom båda autoskalningsfunktionerna försöker svara på ändringar i efterfrågan med samma mått. Du kan dock använda VPA för CPU eller minne med HPA för anpassade mått för att förhindra överlappning och se till att varje autoskalning fokuserar på olika aspekter av arbetsbelastningsskalning.
Händelsedriven kubernetes-autoskalning
Tillägget Kubernetes Event-driven Autoscaler (KEDA) ger extra flexibilitet att skala baserat på olika händelsedrivna mått som överensstämmer med ditt programbeteende. För ett webbprogram kan KEDA till exempel övervaka inkommande HTTP-begärandetrafik och justera antalet poddrepliker för att säkerställa att programmet förblir responsivt. För bearbetning av jobb kan KEDA skala programmet baserat på meddelandekölängden. Hanterat stöd tillhandahålls för alla Azure Scalers.
Aktivera automatisk skalning av infrastruktur
Autoskalning av kluster
För att hänga med i programefterfrågan söker Autoskalning av kluster efter poddar som inte kan schemaläggas på grund av resursbegränsningar och skalar antalet noder i nodpoolen i enlighet med detta. När noder inte har poddar som körs skalar autoskalning av kluster ned antalet noder. Profilinställningarna för autoskalning av kluster gäller för alla autoskalningsaktiverade nodpooler i ett kluster. Mer information finns i Metodtips och överväganden för autoskalning av kluster.
Automatisk avetablering av noder
Komplicerade arbetsbelastningar kan kräva flera nodpooler med olika vm-storlekskonfigurationer för att uppfylla processor- och minneskraven. Om du väljer och hanterar flera konfigurationer av nodpooler på ett korrekt sätt ökar komplexiteten och driftskostnaderna. Node Autoprovision (NAP) förenklar SKU-urvalsprocessen och bestämmer den optimala VM-konfigurationen baserat på väntande krav på poddresurser för att köra arbetsbelastningar på det mest effektiva och kostnadseffektiva sättet.
Kommentar
Mer information om metodtips för skalning finns i Prestanda och skalning för små till medelstora arbetsbelastningar i Azure Kubernetes Service (AKS) och Metodtips för prestanda och skalning för stora arbetsbelastningar i Azure Kubernetes Service (AKS).
Spara med Azure-rabatter
Azure-reservationer
Om din arbetsbelastning är förutsägbar och finns under en längre tid bör du överväga att köpa en Azure-reservation för att ytterligare minska dina resurskostnader. Azure-reservationer fungerar på ett eller tre års sikt och erbjuder upp till 72 % rabatt jämfört med betala per användning-priser för beräkning. Reservationer gäller automatiskt för matchande resurser. Bäst för arbetsbelastningar som har åtagit sig att köras i samma SKU:er och regioner under en längre tidsperiod.
Azure Savings Plan
Om du har konsekventa utgifter, men din användning av olika resurser mellan SKU:er och regioner gör Azure-reservationer ogenomförbara kan du överväga att köpa en Azure-sparplan. Precis som Azure-reservationer fungerar Azure Savings Plans på en ettårig eller treårsperiod och gäller automatiskt för alla resurser inom förmånsomfånget. Du åtar dig att spendera ett fast timbelopp på beräkningsresurser oavsett SKU eller region. Bäst för arbetsbelastningar som använder olika resurser och/eller olika datacenterregioner.
Azure Hybrid-förmån
Azure Hybrid-förmån för Azure Kubernetes Service (AKS) kan du maximera dina lokala licenser utan extra kostnad. Använd eventuella kvalificerade lokala licenser som också har en aktiv Software Assurance (SA) eller en kvalificerande prenumeration för att få virtuella Windows-datorer i Azure till en reducerad kostnad.
Omfamna FinOps för att skapa en kostnadsbesparande kultur
Finansiella åtgärder (FinOps) är ett område som kombinerar ekonomiskt ansvar med molnhantering och optimering. Den fokuserar på att driva anpassningen mellan ekonomi-, drifts- och teknikteam för att förstå och kontrollera molnkostnader. FinOps-stiftelsen har flera viktiga projekt, till exempel:
- FinOps Framework: En driftsmodell för hur du övar och implementerar FinOps.
- FOKUSspecifikation: En teknisk specifikation och öppen standard för molnanvändning, kostnad och faktureringsdata för alla större molnleverantörstjänster.
Nästa steg
Kostnadsoptimering är ett pågående och iterativt arbete. Läs mer genom att läsa följande rekommendationer och arkitekturvägledning:
Azure Kubernetes Service