Dela via


Kostnadsanalys för Azure Kubernetes Service

Ett AKS-kluster (Azure Kubernetes Service) är beroende av Azure-resurser som virtuella datorer, virtuella diskar, lastbalanserare och offentliga IP-adresser. Flera program kan använda dessa resurser, som kan underhållas av olika team i din organisation. Resursförbrukningsmönster för dessa program är ofta varierande, så deras bidrag till den totala klusterresurskostnaden kan också variera. Vissa program kan också ha fotavtryck i flera kluster, vilket kan utgöra en utmaning när du utför kostnadstillskrivning och kostnadshantering.

Tidigare aggregerade Microsoft Cost Management (MCM) klusterresursförbrukningen under klusterresursgruppen. Du kan använda MCM för att analysera kostnader, men det fanns flera utmaningar:

  • Det fanns ingen Azure-inbyggd funktion för att visa klusterresursanvändning på en nivå som är mer detaljerad än ett kluster. Det fanns ingen uppdelning i diskreta kategorier som beräkning (inklusive CPU-kärnor och minne), lagring och nätverk.

  • Det fanns inga Azure-inbyggda funktioner för att skilja mellan olika typer av kostnader, till exempel mellan enskilda programkostnader och delade kostnader. MCM rapporterade kostnaden för resurser, men det fanns ingen insikt i hur mycket av resurskostnaden som användes för att köra enskilda program, hur mycket som reserverades för systemprocesser som krävdes av klustret eller vilka inaktiva kostnader som var associerade med klustret.

  • Det fanns ingen Azure-intern mekanism för att analysera kostnader i flera kluster i samma prenumerationsomfång.

Därför kan du ha använt lösningar från tredje part för att samla in och analysera resursförbrukning och kostnader efter Kubernetes-specifika detaljnivåer, till exempel efter namnområde eller podd. Lösningar från tredje part kräver dock arbete för att distribuera, finjustera och underhålla för varje AKS-kluster. I vissa fall måste du till och med betala för avancerade funktioner, vilket ökar klustrets totala ägandekostnad.

För att hantera den här utmaningen har AKS integrerats med MCM för att erbjuda detaljerad kostnadsgranskning som omfattar Kubernetes-konstruktioner, till exempel kluster och namnområde, utöver kategorierna Azure Compute, Network och Storage.

AKS-kostnadsanalystillägget bygger på OpenCost, ett sandbox-projekt för molnbaserad databehandling med öppen källkod för insamling av användningsdata. Kostnadsanalysen stämmas av med dina Azure-fakturadata. Efterbearbetade data visas direkt i MCM Cost Analysis-portalen.

Förutsättningar och begränsningar

  • Klustret måste vara antingen Standard eller Premium nivå, inte nivå Free .

  • Om du vill visa information om kostnadsanalys måste du ha någon av följande roller i prenumerationen som är värd för klustret: Ägare, Deltagare, Läsare, Kostnadshanteringsdeltagare eller Kostnadshanteringsläsare.

  • När du har aktiverat kostnadsanalys kan du inte nedgradera klustret till nivån utan att Free först inaktivera kostnadsanalys.

  • Klustret måste distribueras med ett Microsoft Entra-arbetsbelastnings-ID konfigurerat.

  • Kubernetes-kostnadsvyer är endast tillgängliga för följande Typer av Microsoft Azure-erbjudanden. Mer information om erbjudandetyper finns i Microsoft Azure-erbjudanden som stöds.

    • Enterprise-avtal
    • Microsoft-kundavtal
  • Åtkomst till Azure API, inklusive ARM-API (Azure Resource Manager). En lista över fullständigt kvalificerade domännamn (FQDN) som krävs finns i AKS Cost Analysis required FQDN (AKS Cost Analysis required FQDN).

  • Virtuella noder stöds inte just nu.

  • AKS Automatic stöds inte just nu.

  • Om du använder Azure CLI måste du ha versionen 2.61.0 eller senare installerad.

Aktivera kostnadsanalys i ditt AKS-kluster

Du kan aktivera kostnadsanalysen --enable-cost-analysis med flaggan under någon av följande åtgärder:

  • Skapa ett Standard AKS-kluster på nivå eller Premium nivå.

  • Uppdatera ett AKS-kluster som redan finns på Standard eller Premium på nivån.

  • Uppgradera ett Free kluster till Standard eller Premium.

  • Uppgradera ett Standard kluster till Premium.

  • Nedgradera ett Premium kluster till Standard nivå.

I följande exempel skapas ett nytt AKS-kluster på Standard nivån med kostnadsanalys aktiverat:

az aks create --resource-group <resource-group> --name <cluster-name> --location <location> --enable-managed-identity --generate-ssh-keys --tier standard --enable-cost-analysis

I följande exempel uppdateras ett befintligt AKS-kluster på Standard nivån för att aktivera kostnadsanalys:

az aks update --resource-group <resource-group> --name <cluster-name> --enable-cost-analysis

Varning

AkS-kostnadsanalysens tilläggsminnesanvändning är beroende av antalet distribuerade containrar. Minnesförbrukningen kan ungefärligt beräknas med 200 MB + 0,5 MB per container. Den aktuella minnesgränsen är inställd på 4 GB, vilket ger stöd för cirka 7 000 containrar per kluster. Dessa uppskattningar kan vara mer eller mindre beroende på olika faktorer och kan komma att ändras.

Om du har problem som att tilläggspodden fastnar OOMKilled eller fastnar i ett Pending tillstånd kan du läsa felsökningsguiden för aks-kostnadsanalystillägg .

Inaktivera kostnadsanalys

Du kan inaktivera kostnadsanalys när som helst med hjälp av az aks update.

az aks update --name myAKSCluster --resource-group myResourceGroup --disable-cost-analysis

Kommentar

Om du tänker nedgradera klustret från Standard nivåerna eller Premium till Free nivån medan kostnadsanalys är aktiverat måste du först uttryckligen inaktivera kostnadsanalys.

Visa kostnadsdata

Du kan visa kostnadsallokeringsdata i Azure Portal. Mer information om hur du navigerar i användargränssnittsvyn för kostnadsanalys finns i Cost Management-dokumentationen.

Kostnadsdefinitioner

I kubernetes-namnrymder och tillgångsvyer visas följande avgifter:

  • Inaktiva avgifter: Representerar kostnaden för tillgänglig resurskapacitet som inte användes av några arbetsbelastningar.
  • Tjänstavgifter: Representerar de avgifter som är associerade med tjänsten, till exempel serviceavtal för drifttid, Microsoft Defender för containrar osv.
  • Systemavgifter: Representerar kostnaden för kapacitet som reserverats av AKS på varje nod för att köra systemprocesser som krävs av klustret, inklusive kubelet- och containerkörningen. Läs mer.
  • Ej allokerade avgifter: Representerar kostnaden för resurser som inte kunde allokeras till namnområden.

Kommentar

Det kan ta upp till en dag innan data slutförs. Efter 24 timmar har eventuella variationer i kostnaderna för föregående dag stabiliserats.

Felsökning

Se följande guide för att felsöka problem med AKS-kostnadsanalystillägg.

Läs mer

Synlighet är en del av kostnadshantering. Se Optimera kostnader i Azure Kubernetes Service (AKS) för andra metodtips för hur du får kontroll över din kubernetes-kostnad.