Dela via


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:

  • Azure Spot Virtual Machines Spot-nodpooler - backas upp av Skalningsuppsättningar för virtuella Azure Spot-datorer och distribueras till en enda feldomän utan hög tillgänglighet eller SLA-garantier. 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) – VIRTUELLA ARM64-datorer är energieffektiva och kostnadseffektiva men påverkar inte prestanda. Med stöd för AMR64-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.

Använda förinställda klusterkonfigurationer

Det kan vara svårt att välja rätt VM SKU, regioner, antal noder och andra konfigurationsalternativ i förväg. Förinställda klusterkonfigurationer i Azure-portalen avlastar den här inledande 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 användarvänliga flera klientorganisationer kan kluster och infrastruktur delas mellan team och affärsenheter via 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 ytterligare 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ärdens effektivitet. Om du går ett steg längre kan du strömma containeravbildningar från Azure Container Registry (ACR) med Artefaktströmning på AKS . 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 hindras enskilda namnområden från att förbruka fler resurser än vad som allokeras. Detta är särskilt viktigt för kluster med flera klientorganisationer där team delar infrastruktur.

Använda startstopp för kluster

Små utvecklings- och testkluster kan när de lämnas obevakade genomföra stora mängder onödiga utgifter. Inaktivera kluster som inte behöver köras hela tiden med hjälp av klusterstart och stopp. Om du gör det stängs alla system- och användarnodpooler så att du inte betalar för extra beräkning. Alla objekt och klustertillstånd 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 valfri tidsperiod. Reserverad kapacitet kommer att vara 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 hanterade Prometheus-mått, 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.

Om du förlitar dig på logginmatning rekommenderar vi också att du använder API:et för grundläggande loggar för att minska Log Analytics-kostnaderna. Mer information finns i Metodtips för Azure Monitor och hantering av kostnader för Container Insights.

Optimera arbetsbelastningar via automatisk skalning

Aktivera automatisk skalning av program

Autoskalning av lodrät podd

Begäranden och gränser som är betydligt 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å ett observerat 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 tillsammans 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 tillsammans 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.

Kubernetes Händelsedriven autoskalning

Kubernetes Event-driven Autoscaler (KEDA) tillägg ger ytterligare 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. Observera att profilinställningarna för kluster autoskalning gäller för alla autoskalningsaktiverade nodpooler i klustret. Mer information finns i Metodtips och överväganden för kluster autoskalning.

Automatisk avetablering av nod

Komplicerade arbetsbelastningar kan kräva flera nodpooler med olika vm-storlekskonfigurationer för att hantera processor- och minnesbehov. 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, baserat på väntande krav på poddresurser, den optimala VM-konfigurationen för att köra arbetsbelastningar på det mest effektiva och kostnadseffektiva sättet.

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 släppt flera viktiga projekt:

  • FinOps Framework – en driftsmodell för hur du övar och implementerar FinOps.
  • FOCUS-specifikation – 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: