Kostnadshantering för Kubernetes

Azure Cost Management
Azure Kubernetes Service (AKS)
Azure Managed Disks
Azure Storage
Azure Virtual Machines

Den här guiden beskriver hur prissättning och kostnadshantering fungerar i Azure Kubernetes Service (AKS) jämfört med Amazon Elastic Kubernetes Service (Amazon EKS). Artikeln beskriver hur du optimerar kostnader och implementerar lösningar för kostnadsstyrning för ditt AKS-kluster.

Anteckning

Den här artikeln är en del av en serie artiklar som hjälper proffs som är bekanta med Amazon EKS att förstå AKS.

Grunderna om Amazon EKS-kostnader

I Amazon EKS betalar du ett fast pris per timme för varje Amazon EKS-kluster. Du betalar också för nätverk, åtgärdsverktyg och lagring som klustret använder.

Amazon EKS-arbetsnoder är standard Amazon EC2-instanser, så de medför regelbundna Amazon EC2-priser. Du betalar också för andra AWS-resurser (Amazon Web Services) som du etablerar för att köra dina Kubernetes-arbetsnoder.

Det finns inga extra kostnader för att använda Amazon EKS-hanterade nodgrupper. Du betalar bara för de AWS-resurser som du etablerar, inklusive Amazon EC2-instanser, Amazon EBS-volymer, Amazon EKS-klustertimmar och annan AWS-infrastruktur.

När du skapar en hanterad nodgrupp kan du välja att använda kapacitetstypen On-Demand eller Spot Instances för att hantera kostnaden för agentnoder. Amazon EKS distribuerar en hanterad nodgrupp med en Amazon EC2 Auto Scaling-grupp som innehåller antingen alla på begäran eller alla spotinstanser.

Med instanser på begäran betalar du för beräkningskapaciteten med den andra, utan långsiktiga åtaganden. Amazon EC2 Spot Instances är extra Amazon EC2-kapacitet som erbjuder rabatter jämfört med priser på begäran.

  • Amazon EC2 Spot Instances kan avbrytas med ett meddelande om två minuters avbrott när EC2 behöver kapaciteten tillbaka.

  • Amazon tillhandahåller Spot Fleet, en metod för att automatisera grupper av instanser på begäran och oanvänd kapacitet, och Spot Instance Advisor för att förutsäga vilken region eller tillgänglighetszon som kan ge minimala störningar.

  • Priserna för AWS Spot Instance varierar. AWS anger priset beroende på långsiktiga utbuds- och efterfrågetrender för kapacitet för oanvänd kapacitet och du betalar priset som gäller för den tidsperiod som instansen är igång.

Grunderna om AKS-kostnader

Kubernetes-arkitekturen baseras på två skikt, kontrollplanet och en eller flera noder eller nodpooler. AKS-prismodellen baseras på de två Kubernetes-arkitekturskikten.

  • Kontrollplanet tillhandahåller kubernetes-kärntjänster, till exempel API-servern och etcd, och programarbetsbelastningsorkestrering. Azure-plattformen hanterar AKS-kontrollplanet och för den kostnadsfria AKS-nivån har kontrollplanet ingen kostnad.

  • Noderna, som även kallas agentnoder eller arbetsnoder, är värdar för Kubernetes-arbetsbelastningar och program. I AKS hanterar och betalar kunderna helt och hållet alla kostnader för agentnoderna.

Följande diagram visar relationen mellan kontrollplanet och noderna i en AKS Kubernetes-arkitektur.

Diagram som visar kontrollplanet och noderna i AKS-arkitekturen.

Kontrollplan

Azure etablerar och konfigurerar automatiskt kontrollplansskiktet när du skapar ett AKS-kluster. För den kostnadsfria AKS-nivån är kontrollplanet kostnadsfritt.

För ett serviceavtal på högre kontrollplan (SLA) kan du skapa ett AKS-kluster på standardnivån. Serviceavtal för drifttid ingår som standard på standardnivån och är aktiverat per kluster. Priset är 0,10 USD per kluster och timme. Mer information finns i prisinformation för AKS.

Kluster på Standard-nivån har fler kontrollplansresurser, till exempel antalet API-serverinstanser, Etcd-resursgränser, skalbarhet upp till 5 000 noder och det befintliga ekonomiskt säkerhetskopierade serviceavtalet för drifttid. AKS använder huvudnodrepliker över uppdaterings- och feldomäner för att uppfylla tillgänglighetskraven.

Det är bäst att använda standardnivån i produktionsarbetsbelastningar för att ge högre tillgänglighet för kontrollplanets komponent. Kluster på den kostnadsfria nivån har färre repliker och begränsade kontrollplansresurser och rekommenderas inte för produktionsarbetsbelastningar.

Noder

I AKS skapar du agent- eller arbetsnoder i en eller flera nodpooler, som kan använda många Azure-kärnfunktioner i Kubernetes-miljön. AKS debiterar endast för noderna som är kopplade till AKS-klustret.

AKS-noder använder flera Azure-infrastrukturresurser, inklusive VM-skalningsuppsättningar, virtuella nätverk och hanterade diskar. Du kan till exempel använda de flesta typer av virtuella Azure-datorer (VM) direkt i AKS. Du kan använda Azure Reservations och Azure Savings Plan för beräkning för att få betydande rabatter på dessa resurser.

AKS-klusterpriser baseras på klassen, antalet och storleken på de virtuella datorerna i nodpoolerna. Kostnaden för virtuella datorer beror på storlek, CPU-typ, antal virtuella processorer, minne, familj och lagringstyp som är tillgängliga, till exempel högpresterande SSD eller standard-HDD. Mer information finns i Virtual Machine Series. Planera nodstorlek enligt programkrav, antal noder och skalbarhetsbehov för kluster.

Mer information om agentnoder och nodpooler finns i artikeln Nodpooler i den här serien och Skapa och hantera flera nodpooler för ett kluster i Azure Kubernetes Service (AKS).

Distribution av AKS-kluster

Varje AKS-distribution omfattar två Azure-resursgrupper.

  • Du skapar den första resursgruppen, som endast innehåller Kubernetes-tjänstresursen och inte har några kostnader kopplade till den.

  • AKS-resursprovidern skapar automatiskt den andra resursgruppen eller nodresursgruppen under distributionen. Standardnamnet för den här resursgruppen är MC_<resourcegroupname>_<clustername>_<location>, men du kan ange ett annat namn. Mer information finns i Ange mitt eget namn för AKS-nodresursgruppen.

    Nodresursgruppen innehåller alla klusterinfrastrukturresurser och är den som visar avgifter för din prenumeration. Resurserna omfattar virtuella Kubernetes-noddatorer, virtuella nätverk, lagring och andra tjänster. AKS tar automatiskt bort nodresursgruppen när klustret tas bort, så du bör endast använda det för resurser som delar klustrets livscykel.

Beräkningskostnader

Du betalar för virtuella Azure-datorer enligt deras storlek och användning. Information om hur Azure Compute jämförs med AWS finns i Beräkningstjänster i Azure och AWS.

Ju större vm-storlek du väljer för en nodpool, desto högre blir kostnaden per timme för agentnoderna. Ju mer specialiserad vm-serien du använder för nodpoolen, till exempel GPU-aktiverad eller minnesoptimerad, desto dyrare blir poolen.

När du undersöker priser för virtuella Azure-datorer bör du vara medveten om följande:

  • Priserna varierar per region, och inte alla tjänster och VM-storlekar är tillgängliga i varje region.

  • Det finns flera VM-familjer som är optimerade för olika typer av arbetsbelastningar.

  • Hanterade diskar som används som OS-enheter debiteras separat och du måste lägga till deras kostnader i dina uppskattningar. Storleken på hanterade diskar beror på klassen, till exempel Standard HDD, Standard SSD, Premium SSD eller Ultra SSD. Indataåtgärder per sekund (IOPS) och dataflöde i MB/sek beror på storlek och klass. Tillfälliga OS-diskar är kostnadsfria och ingår i vm-priset.

  • Datadiskar, inklusive de som skapas med beständiga volymanspråk, är valfria och debiteras individuellt baserat på deras klass, till exempel Standard HDD, Standard SSD, Premium SSD och Ultra SSD. Du måste uttryckligen lägga till datadiskar i kostnadsuppskattningar. Antalet tillåtna datadiskar, tillfälliga lagrings-SSD:n, IOPS och dataflödet i MB/s beror på vm-storlek och klass.

  • Ju längre tid agentnoderna är igång, desto högre blir den totala klusterkostnaden. Utvecklingsmiljöer behöver vanligtvis inte köras kontinuerligt.

  • Nätverksgränssnitt (NÄTVERKSKORT) är kostnadsfria.

Lagringskostnader

CSI (Container Storage Interface) är en standard för att exponera block- och fillagringssystem för containerbaserade arbetsbelastningar i Kubernetes. Genom att implementera och använda CSI kan AKS skriva, distribuera och iterera plugin-program som exponerar Kubernetes-lagringssystem utan att röra kubernetes-kärnkoden eller vänta på dess versionscykler.

Om du kör arbetsbelastningar som använder CSI-beständiga volymer i AKS-klustret bör du överväga den associerade kostnaden för den lagring som dina program etablerar och använder. CSI-lagringsdrivrutiner på AKS har inbyggt stöd för följande lagringsalternativ:

  • Azure Disks skapar Kubernetes-datadiskresurser. Diskar kan använda Azure Premium Storage, som backas upp av högpresterande SSD eller Azure Standard Storage, som backas upp av vanliga HÅRDDISKar eller Standard SSD. De flesta arbetsbelastningar för produktion och utveckling använder Premium Storage. Azure-diskar monteras som ReadWriteOnce, vilket gör dem tillgängliga för endast en AKS-nod. För lagringsvolymer som flera poddar kan komma åt samtidigt använder du Azure Files. Information om kostnader finns i Managed Disks prissättning.

  • Azure Files monterar SMB-filresurser (Server Messaging Block) 3.0/3.1 som backas upp av ett Azure Storage-konto till AKS-poddar. Du kan dela data över flera noder och poddar. Azure Files kan använda standardlagring som backas upp av vanliga HÅRDDISKar eller Premium-lagring som backas upp av högpresterande SSD:er. Azure Files använder ett Azure Storage-konto och debiteras baserat på följande faktorer:

    • Tjänst: Blob, Fil, Kö, Tabell eller ohanterade diskar
    • Lagringskontotyp: GPv1, GPv2, Blob eller Premium Blob
    • Återhämtning: Lokalt redundant lagring (LRS), zonredundant lagring (ZRS), geo-redundant lagring (GRS) eller geo-redundant lagring med läsåtkomst (RA-GRS)
    • Åtkomstnivå: Frekvent, lågfrekvent eller arkiv
    • Åtgärder och dataöverföringar
    • Använd kapacitet i GB
  • Azure NetApp Files är tillgängligt på flera SKU-nivåer och kräver en minsta etablerad kapacitet på 4 TiB, med 1 TiB-steg. Azure NetApp Files avgifter baseras på följande faktorer:

    • SKU
    • Återhämtning: LRS, ZRS eller GRS
    • Storlek eller kapacitet etablerad, inte kapacitet som används
    • Åtgärder och dataöverföring
    • Säkerhetskopieringar och återställningar

Nätverkskostnader

Flera Azure-nätverkstjänster kan ge åtkomst till dina program som körs i AKS:

  • Azure Load Balancer. Som standard använder Load Balancer standard-SKU. Load Balancer avgifter baseras på:

    • Regler: Antalet konfigurerade regler för belastningsutjämning och utgående trafik. NAT-regler (inkommande nätverksadressöversättning) räknas inte in i det totala antalet regler.
    • Bearbetade data: Mängden data som bearbetas inkommande och utgående, oberoende av regler. Det tillkommer ingen timavgift för Standard Load Balancer utan att några regler har konfigurerats.
  • Azure Application Gateway. AKS använder ofta Application Gateway via Application Gateway ingresskontrollant eller genom att fronta en annan ingresskontrollant med manuellt hanterade Application Gateway. Application Gateway stöder gatewayroutning, TLS-avslutning (Transport Layer Security) och funktioner för Web Application Firewall (WAF). Application Gateway avgifter baseras på:

    • Fast pris per timme eller deltimmes.
    • Kapacitetsenhetspris, en extra förbrukningsbaserad kostnad. Varje kapacitetsenhet har högst en beräkningsenhet, 2 500 beständiga anslutningar och ett dataflöde på 2,22 Mbit/s.
  • Offentliga IP-adresser har en associerad kostnad som är beroende av:

    • Reserverad jämfört med dynamisk association.
    • Basic jämfört med skyddad och zonredundant standardnivå.

Utskalningskostnader

Det finns flera alternativ för att skala ett AKS-kluster för att lägga till extra kapacitet till nodpooler:

  • På begäran kan du manuellt uppdatera antalet virtuella datorer som ingår i en nodpool eller lägga till fler nodpooler.

  • AKS-klustrets autoskalning söker efter poddar som inte kan schemaläggas på noder på grund av resursbegränsningar och ökar automatiskt antalet noder.

  • AKS stöder körning av containrar på Azure Container Instances med hjälp av den virtuella kubelet-implementeringen. En virtuell AKS-nod etablerar Container Instances poddar som startar på några sekunder så att AKS kan köras med precis tillräckligt med kapacitet för en genomsnittlig arbetsbelastning. När AKS-klustret får slut på kapacitet kan du skala ut fler Container Instances poddar utan att hantera några ytterligare servrar. Du kan kombinera den här metoden med autoskalning av kluster och manuell skalning.

Om du använder skalning på begäran eller autoskalning av kluster kan du ta hänsyn till de virtuella datorer som lagts till. Container Instances avgifter baseras på följande faktorer:

  • Användningsbaserad måttfakturering per containergrupp
  • Samlings-vCPU och minne
  • Enskild containeranvändning eller delning av flera containrar
  • Användning av samplanerade containrar som delar nätverks- och nodlivscykel
  • Användningsvaraktighet beräknad från avbildningens start eller omstart till stopp
  • Tillagd avgift för Windows-containergrupper

Uppgraderingskostnader

En del av AKS-klustrets livscykel omfattar periodiska uppgraderingar av den senaste Kubernetes-versionen. Det är viktigt att tillämpa de senaste säkerhetsversionerna och få de senaste funktionerna. Du kan uppgradera AKS-kluster och pooler med en nod manuellt eller automatiskt. Mer information finns i Uppgradera ett kluster i Azure Kubernetes Service (AKS).

Som standard konfigurerar AKS uppgraderingar så att de ökar med en extra nod. Ett standardvärde 1 för för inställningen max-surge minimerar arbetsbelastningsavbrott genom att skapa en extra nod som ersätter äldre noder innan befintliga program spärras eller töms. Du kan anpassa max-surge värdet per nodpool för att möjliggöra en kompromiss mellan uppgraderingshastighet och uppgraderingsavbrott. max-surge Om du ökar värdet slutförs uppgraderingsprocessen snabbare, men ett stort värde för max-surge kan orsaka störningar under uppgraderingsprocessen och medföra extra kostnader för extra virtuella datorer.

Övriga kostnader

Beroende på användning och krav kan AKS-kluster medföra följande extra kostnader:

Kostnadsoptimering

Följande rekommendationer hjälper dig att optimera dina kostnader för AKS-kluster:

  • Läs avsnittet Kostnadsoptimering i Azure Well-Architected Framework för AKS.

  • För lösningar med flera klientorganisationer blir fysisk isolering dyrare och ger mer hanteringskostnader. Logisk isolering kräver mer Kubernetes-upplevelse och ökar ytan för ändringar och säkerhetshot, men delar kostnaderna.

  • Azure-reservationer kan hjälpa dig att spara pengar genom att gå med i ett- eller treårsplaner för flera produkter, till exempel de virtuella datorerna i ditt AKS-kluster. Du får rabatter genom att reservera kapacitet. Använd Azure-reservationer för lagring och beräkning för att minska kostnaden för agentnoder.

    Reservationer kan minska dina resurskostnader med upp till 72 % från betala per användning-priser och påverkar inte körningstillståndet för dina resurser. När du har köpt en reservation tillämpas rabatten automatiskt på matchande resurser. Du kan köpa reservationer från Azure Portal eller med hjälp av Azure REST API:er, PowerShell eller Azure CLI. Om du använder operativa verktyg som förlitar sig på Log Analytics-arbetsytor bör du även överväga att använda reservationer för den här lagringen.

  • Lägg till en eller flera skalningsuppsättningsnodpooler för VM med oanvänd kapacitet i ditt AKS-kluster. En skalningsuppsättningsnodpool för VM med oanvänd kapacitet är en nodpool som backas upp av Azure Spot Virtual Machine Scale Sets. Användning av virtuella datorer för oanvänd kapacitet för dina AKS-klusternoder drar nytta av outnyttjad Azure-kapacitet till betydande kostnadsbesparingar. Mängden tillgänglig outnyttjad kapacitet varierar beroende på flera faktorer, inklusive nodstorlek, region och tid på dagen. Azure allokerar noderna för oanvänd kapacitet om det finns tillgänglig kapacitet, men det finns inget serviceavtal för noder för oanvänd kapacitet. En skalningsuppsättning för oanvänd kapacitet som säkerhetskopierar skalningsuppsättningen för VM med oanvänd kapacitet distribueras i en enda feldomän och erbjuder inga garantier för hög tillgänglighet. När Azure behöver tillbaka kapaciteten avlägsnar Azure-infrastrukturen noderna för oanvänd kapacitet.

    När du skapar en skalningsuppsättningsnodpool för VM med oanvänd kapacitet kan du definiera det högsta priset som ska betalas per timme och aktivera autoskalning av kluster, vilket rekommenderas för skalningsuppsättningsnodpooler för VM med oanvänd kapacitet. Autoskalning av kluster skalar ut och skalar in antalet noder i nodpoolen baserat på de arbetsbelastningar som körs. För skalningsuppsättningsnodpooler för VM med oanvänd kapacitet skalar autoskalningen ut antalet noder efter en borttagning om noderna fortfarande behövs. Mer information finns i Lägga till en skalningsuppsättningsnodpool för VM med oanvänd kapacitet i ett Azure Kubernetes Service-kluster (AKS).

  • Välj rätt VM-storlek för dina AKS-klusternodpooler baserat på dina arbetsbelastningars processor- och minnesbehov. Azure erbjuder många olika typer av VM-instanser som matchar en mängd olika användningsfall, med olika kombinationer av processor, minne, lagring och nätverkskapacitet. Varje typ finns i en eller flera storlekar, så att du enkelt kan skala dina resurser.

    Nu kan du distribuera och hantera containerbaserade program med AKS som körs på Ampere Altra ARM-baserade processorer. Mer information finns i Azure Virtual Machines med Ampere Altra ARM-baserade processorer.

  • Skapa flera nodpooler med olika VM-storlekar för särskilda ändamål och arbetsbelastningar. Använd Kubernetes-taints och toleranser och nodetiketter för att placera resursintensiva program i specifika nodpooler för att undvika problem med störningar. Behåll dessa nodresurser tillgängliga för arbetsbelastningar som kräver dem och schemalägg inte andra arbetsbelastningar på dessa noder. Att använda olika VM-storlekar för olika nodpooler kan också optimera kostnaderna. Mer information finns i Använda flera nodpooler i Azure Kubernetes Service (AKS).

  • Nodpooler i systemläge måste innehålla minst en nod, medan nodpooler i användarläge kan innehålla noll eller flera noder. När det är möjligt kan du konfigurera en nodpool i användarläge för automatisk skalning från 0 till N noder. Du kan konfigurera dina arbetsbelastningar för att skala ut och skala in med hjälp av en horisontell autoskalning av poddar. Basera autoskalning på cpu och minne, eller använd Kubernetes Händelsedriven autoskalning (KEDA) för att basera autoskalning på måtten för ett externt system som Apache Kafka, RabbitMQ eller Azure Service Bus.

  • Se till att ange begäranden och gränser för dina poddar korrekt för att förbättra programdensiteten och undvik att tilldela för många CPU- och minnesresurser till dina arbetsbelastningar. Observera den genomsnittliga och maximala förbrukningen av CPU och minne med hjälp av Prometheus eller Container Insights. Korrekt konfigurera gränser och kvoter för dina poddar i YAML-manifesten, Helm-diagram och Kustomize-manifest för dina distributioner.

  • Använd ResourceQuota-objekt för att ange kvoter för den totala mängden minne och CPU för alla poddar som körs i ett visst namnområde. Den systematiska användningen av resurskvoter undviker problem med störningar, förbättrar programtätheten och minskar antalet agentnoder och de totala kostnaderna. Använd även LimitRange-objekt för att konfigurera standardbegäranden om CPU och minne för poddar i ett namnområde.

  • Använd Container Instances för burst-

  • Dina AKS-arbetsbelastningar kanske inte behöver köras kontinuerligt, till exempel specifika arbetsbelastningar i utvecklingsklusternodpooler. För att optimera kostnaderna kan du helt stänga av ett AKS-kluster eller stoppa en eller flera nodpooler i ditt AKS-kluster. Mer information finns i Stoppa och starta ett Azure Kubernetes Service-kluster (AKS) och Starta och stoppa en nodpool på Azure Kubernetes Service (AKS).

  • Azure Policy integreras med AKS via inbyggda principer för att tillämpa centraliserade, konsekventa, skalanpassade efterlevnadar och skydd. Aktivera Azure Policy-tillägget i klustret och tillämpa standardgränserna för CPU-begäranden och -gränser och minnesresurser, som säkerställer att gränser för processor- och minnesresurser definieras i klustercontainrar.

  • Använd Azure Advisor för att övervaka och släppa oanvända resurser.

  • Använd Microsoft Cost Management-budgetar och -granskningar för att hålla reda på utgifter.

Kostnadsstyrning

Molnet kan avsevärt förbättra de tekniska prestandan för arbetsbelastningar i verksamheten. Molntekniker kan också minska kostnaderna och omkostnaderna för att hantera organisationstillgångar. Den här affärsmöjligheten skapar dock också risker, eftersom molndistributioner kan öka risken för avfall och ineffektivitet.

Kostnadsstyrning är processen att kontinuerligt implementera principer eller kontroller för att begränsa utgifter och kostnader. Både inbyggda Kubernetes-verktyg och Azure-verktyg stöder kostnadsstyrning med proaktiv övervakning och underliggande kostnadsoptimering för infrastrukturen.

  • Azure Cost Management + Billing är en uppsättning Microsoft-verktyg som hjälper dig att analysera, hantera och optimera dina arbetsbelastningskostnader i Azure. Använd sviten för att se till att din organisation drar nytta av de fördelar som molnet ger.

  • Granska metodtipsen för Cloud Adoption Framework styrning för Kostnadshanteringsområdet för att bättre förstå hur du hanterar och styr molnkostnader.

  • Utforska verktyg med öppen källkod som KubeCost för att övervaka och styra AKS-klusterkostnader. Du kan omfångsbegränsa kostnadsallokering till en distribution, tjänst, etikett, podd och namnrymd, vilket ger flexibilitet när det gäller att visa och debitera klusteranvändare.

Deltagare

Den här artikeln underhålls av Microsoft. Den skrevs ursprungligen av följande deltagare.

Huvudförfattare:

Andra deltagare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg