Ottimizzazione dei costi di Kubernetes: 8 passaggi e 23 strumenti
I cluster Kubernetes possono sembrare del tutto sani mentre il conto sale. L'autoscaling è configurato, le dashboard sono verdi e la spesa aumenta comunque. In un sondaggio, il 42% di 455 ingegneri di piattaforma ha indicato il costo come la sfida numero uno con Kubernetes, mentre l'88% ha visto il costo totale di proprietà aumentare di anno in anno.1
Abbiamo raccolto 68 case study sull'ottimizzazione dei costi di Kubernetes e abbiamo mappato ogni caso d'uso menzionato a ciascun fornitore che lo ha pubblicato:
Le celle più scure indicano più menzioni. Le celle vuote indicano che lo strumento non ha casi pubblicati per quel caso d'uso.
Scorri per una guida in 8 passaggi con esempi reali per ridurre la spesa del cluster e il confronto degli strumenti di ottimizzazione dei costi di Kubernetes.
1. Misura prima di cambiare qualsiasi cosa
Ogni numero nel resto di questa guida è un delta, e un delta ha bisogno di un punto di partenza. Senza una baseline catturata prima della prima modifica, non c'è modo di dire se il passaggio 1 ha funzionato, né di attribuire i risparmi del passaggio 3 al consolidamento piuttosto che al rightsizing che lo ha preceduto. Questo conta di più qui che nella maggior parte del lavoro di ingegneria, perché tutte e sei le azioni riducono la stessa bolletta e i loro risparmi non si sommano. Liberare capacità nel passaggio 1 non produce nulla in fattura finché il passaggio 3 non rimuove i nodi.
Misura quattro cose:
- Richiesta rispetto a utilizzata CPU e memoria, per workload. Il divario è il tuo backlog del passaggio 1, ordinato per dimensione.
- Costo per namespace e per workload. Questo è ciò che rende le quote del passaggio 2 una negoziazione piuttosto che un'imposizione.
- Efficienza di bin-packing, allocabile rispetto a richiesto per nodo. L'obiettivo del passaggio 3.
- Costo dell'inattività per ora del giorno e giorno della settimana in non produzione. Dimensiona il passaggio 5 prima di costruirlo.
Misura per almeno un ciclo aziendale completo. Sette giorni è il minimo e trenta è meglio. La finestra non è cautela procedurale. Il passaggio 1 imposta le richieste di memoria al massimo osservato, e un massimo osservato vale quanto la finestra che lo ha osservato. Un massimo rilevato su 48 ore non coglie un job batch settimanale e produce un OOMKill la domenica successiva.
Strumenti
- Allocazione dei costi: OpenCost, il progetto CNCF alla base del modello di allocazione, è il livello gratuito. Il tier gratuito di Kubecost racchiude lo stesso motore in una UI fino a 250 core.
- Utilizzo: Prometheus con kube-state-metrics è il substrato. Robusta KRR lo legge direttamente senza installare nulla nel cluster.
- Spesa più ampia: Dove Kubernetes è una parte di una bolletta che anche la finanza deve spiegare, CloudZero, Vantage e Finout si collocano sopra questo livello piuttosto che sostituirlo.
Entrambi gli strumenti di costo attribuiscono per etichetta, quindi l'etichettatura viene prima. La spesa non etichettata è il motivo più comune per cui una baseline si rivela inutile tre settimane dopo.
Ogni azione di seguito indica la raccomandazione, il metodo, la configurazione e un'azienda che ha compiuto quel passo. Ogni case study e ogni statistica riporta un link alla fonte.
2. Imposta le quote dei namespace come guardrail
I risparmi decadono man mano che i team distribuiscono nuovi workload senza richieste specificate. Un LimitRange fornisce richieste predefinite ai container che le omettono, e una ResourceQuota limita ciò che un namespace può consumare in aggregato.
Distribuisci il LimitRange prima della ResourceQuota. Una volta che una quota vincola una risorsa, qualsiasi pod senza una richiesta per quella risorsa viene rifiutato all'ammissione, quindi l'ordine inverso interrompe i deployment.2
Ogni load balancer viene fatturato separatamente dal cloud provider e i volumi orfani continuano a essere fatturati dopo che i loro pod sono spariti.
2. Ridimensiona le richieste di CPU e memoria
Le richieste determinano il numero di nodi, e il numero di nodi determina la bolletta. La maggior parte dei cluster gira molto al di sotto della capacità per cui paga, perché le richieste sono state stimate una volta e mai più riviste. Un'analisi di 23.000 cluster di produzione su AWS, Azure e Google Cloud ha rilevato un utilizzo medio della CPU dell'8%, della memoria al 20% e della GPU al 5%. 3
Imposta le richieste di CPU vicino al 95 percentile dell'utilizzo osservato. Imposta le richieste di memoria al massimo osservato piuttosto che a un percentile, e imposta il limite di memoria uguale alla richiesta. Un percentile lascia il container a corto durante il traffico rimanente, e poiché il limite corrisponde alla richiesta, quel deficit arriva come un OOMKill piuttosto che un rallentamento.
Ometti il limite di CPU. Il throttling della CPU degrada la latenza senza uccidere il pod, e la richiesta riserva ciò di cui il workload ha bisogno.
Il Vertical Pod Autoscaler in modalità solo raccomandazione produce questi valori senza rischi per la produzione.
Leggi le raccomandazioni con kubectl describe vpa payments-api e confronta il valore target con la richiesta corrente.
Caso di studio reale: Tryg Insurance
Tryg Insurance è la più grande compagnia assicurativa generale della regione nordica e gestisce Kubernetes su Oracle Cloud Infrastructure. Il suo team di ingegneria ha combinato Horizontal Pod Autoscaler e Vertical Pod Autoscaler per ridimensionare dinamicamente i workload mantenendo i livelli di servizio, e ha ridotto i costi cloud di Kubernetes del 50% utilizzando solo autoscaler open source, senza alcuna piattaforma commerciale di ottimizzazione.4
4. Consolida i nodi con Karpenter e scala a zero i workload inattivi
Il rightsizing libera capacità, ma quella capacità rimane su nodi che continuano a girare finché qualcosa non li rimuove. Karpenter effettua il provisioning delle istanze in tempo e ricompatta i workload su un numero minore di nodi. KEDA scala a zero repliche i workload guidati da code, cosa che un Horizontal Pod Autoscaler standard non può fare.
Imposta la policy di consolidamento su WhenEmptyOrUnderutilized. L'alternativa, WhenEmpty, limita l'interruzione ai nodi che non ospitano alcun pod di workload, e questi si verificano raramente senza intervento. 5
Un elenco ristretto di istanze vanifica questo, perché Karpenter non riesce a trovare outlier economici e la resilienza allo spot diminuisce. Dovresti lasciargli scegliere tra intere famiglie di istanze.
Caso di studio reale: Adidas
Adidas gestisce più cluster Kubernetes su AWS EKS. Il suo team di platform engineering ha adottato Karpenter per il provisioning dei nodi, ha aggiunto KEDA per lo scaling event-driven, ha auto-creato oggetti Vertical Pod Autoscaler tramite policy Kyverno e ha usato kube-downscaler per gli ambienti inattivi. Hanno ridotto il costo di gestione dei cluster Kubernetes su AWS fino al 50%, utilizzando uno stack interamente open source.6
5. Preparati adeguatamente prima di spostare i workload su spot
Le istanze spot offrono lo sconto più ampio disponibile e l'applicabilità più ristretta. Niente dovrebbe essere spostato su spot finché PodDisruptionBudgets, diversificazione delle istanze, topology spread e gestione delle terminazioni non sono tutti in atto.
Un PodDisruptionBudget che non lascia margine blocca tutte le interruzioni volontarie, inclusa la consolidazione di Karpenter, quindi i valori devono avere un certo gioco. 7
Caso di studio reale: Delivery Hero
Delivery Hero gestisce 390 applicazioni in 43 paesi, con circa il 90% dei workload in esecuzione su AWS EKS. Il suo team è migrato alle istanze Spot in circa sei mesi, integrando nel processo la gestione delle terminazioni e un descheduler piuttosto che cambiare direttamente il tipo di capacità.
- I costi dell'infrastruttura sono diminuiti di circa il 70%
- Gli sconti spot hanno raggiunto fino al 90% rispetto ai prezzi on-demand
- La piattaforma assorbe picchi di traffico pari a 4-5 volte il volume normale.8
6. Spegni la non produzione secondo una pianificazione
Gli ambienti di sviluppo e staging hanno poco o nessun carico durante la notte e nei fine settimana. Lo spegnimento pianificato è tecnicamente semplice e politicamente incontestato, il che lo rende il risparmio più rapido da realizzare e una prima azione utile laddove modifiche più difficili avranno bisogno di supporto in seguito.
Applica la pianificazione per impostazione predefinita ai namespace di non produzione e richiedi ai team di disattivarla esplicitamente. Una policy che richiede un'azione per aderire raggiunge meno team di una che richiede un'azione per uscirne.
Il risparmio arriva in fattura se è attiva la consolidazione dei nodi, poiché i deployment ridotti lasciano nodi vuoti alle spalle.
Caso di studio reale: Bud Financial
Bud Financial arricchisce i dati delle transazioni finanziarie per il settore dei servizi finanziari e gestisce circa 25 cluster su Google Kubernetes Engine. Il suo team ha utilizzato pause e ripresa pianificate per ridurre i nodi del cluster durante la notte e nei fine settimana, insieme al ribilanciamento quotidiano.
- I costi sono diminuiti del 47% solo grazie alla modifica della pianificazione
- La pianificazione ha eliminato 80 ore di funzionamento del cluster a settimana
- L'utilizzo delle risorse è salito oltre il 90%.9
7. Migra i workload compatibili su ARM
Le istanze basate su ARM modificano il prezzo unitario anziché competere per la stessa capacità inattiva delle azioni precedenti, quindi questi risparmi si sommano davvero al resto. I blocchi saranno le dipendenze senza build ARM64.
Gli utenti dovrebbero valutare questo per singolo workload piuttosto che per l'intero parco, e creare immagini multi-architettura prima di pianificare qualsiasi cosa.
Caso di studio reale: Pinterest
Pinterest ha migrato il proprio workload web API su istanze AWS Graviton basate su ARM64, motivato sia dalla riduzione dei costi sia da quella del carbonio.
- I costi sono diminuiti del 47%
- Il consumo di calcolo è diminuito del 38%
- Le emissioni di carbonio sono diminuite del 62%.10
8. Quando il tuning non basta più, cambia l'architettura
Le sei azioni precedenti ottimizzano i workload all'interno dei cluster esistenti. Una volta esaurite, ulteriori guadagni richiedono un cambiamento architetturale piuttosto che ulteriore tuning.
Due risultati pubblicati segnano il limite pratico. InCred Finance ha ridotto la spesa del 30% su cluster che il suo team considerava ottimizzati11, e Yotpo ha ottenuto il 30–40% facendo girare l'80% dei workload su istanze spot12. Oltre quella gamma, lo spreco rimanente non si trova più all'interno dei cluster ma nel numero di cluster. Ognuno comporta un costo per il piano di controllo e forma un'isola di scheduling che il bin-packing non può attraversare.
La multi-tenancy elimina entrambi i costi. Invece di dedicare un cluster a ogni cliente, team o ambiente, i cluster virtuali girano su infrastruttura fisica condivisa. Ogni tenant riceve il proprio server API e piano di controllo virtuale mentre i nodi sono condivisi. Questo elimina il costo del piano di controllo per cluster e consente il bin-packing attraverso il pool di nodi condiviso piuttosto che all'interno di parchi isolati.
yaml
bash
Sono disponibili due meccanismi. I namespace sono sempre più economici, quindi la scelta si basa sulla separazione richiesta dai tenant, non sul costo.
- I namespace suddividono un singolo cluster e non aggiungono un proprio piano di controllo. Sono sufficienti quando i tenant si fidano l'uno dell'altro e possono condividere un unico server API e un unico set di CRD.
- I cluster virtuali danno a ogni tenant il proprio server API, in esecuzione come workload sull'host. Questo costo è giustificato in due casi: tenant che necessitano di risorse cluster-scoped proprie e requisiti di isolamento che un server API condiviso non può soddisfare.

Caso di studio reale: Atlan
Atlan è un'azienda di data catalogue che ospita la piattaforma per circa il 95% dei suoi clienti, molti nei settori sanitario e finanziario dove l'isolamento dei dati è contrattuale. Gestiva un cluster EKS completo per cliente ed è arrivata oltre 100 cluster, un parco costoso da mantenere attivo 24 ore su 24 e difficile da gestire. Dal Q1 2022 ha valutato opzioni di multi-tenancy e ha ricostruito su vCluster, offrendo a ogni cliente un cluster virtuale anziché fisico.
- I cluster EKS fisici sono passati da più di 100 a 20, continuando a servire oltre 100 clienti
- La spesa Kubernetes è diminuita di $600.000.13
Ordine di esecuzione
I commitment stanno all'ultimo posto pur essendo l'azione più semplice. Acquistarli prima del rightsizing blocca da uno a tre anni lo spreco che il rightsizing stava per eliminare. È l'errore di sequenziamento più costoso disponibile, ed è comune perché richiede un acquisto piuttosto che lavoro di ingegneria.
L'azione 7 è una diramazione, non un passaggio. Va intrapresa una volta completate le prime sei e se il risultato è ancora insufficiente, poiché cambia quanti cluster girano piuttosto che quanto efficientemente ciascuno gira.
Strumenti per l'ottimizzazione dei costi di Kubernetes
Abbiamo tracciato gli strumenti con tre o più case study pubblicati che coprono 47 dei 68 case study nel dataset:
- Orizzontale: quanti case study ha ciascuno strumento, contati una volta sola.
- Verticale: quante categorie distinte di casi d'uso coprono quei casi, su dieci. Uno strumento conta una volta per categoria, non importa quanto spesso vi appare, quindi le 12 menzioni separate di rightsizing di CAST IA contribuiscono 1 al suo punteggio di 10.
- Dimensione della bolla: in quante delle otto fasi strategiche lo strumento compare.
Framework open source
I framework open source possono essere distribuiti per le fasi da 0 a 6. Gli utenti possiedono gli aggiornamenti, il ricambio di versioni, il costo di retention di Prometheus e le decisioni che un raccomandatore commerciale prenderebbe per loro.
Ognuno di questi possiede un campo diverso, ed è per questo che diversi girano contemporaneamente.
- Robusta KRR o VPA in
updateMode: "Off"produce il backlog del passaggio 1. Non scrivono nulla. - Karpenter possiede i nodi: provisioning, consolidamento, selezione delle istanze, diversificazione spot, architettura. Copre i passaggi 3, 4 e 6.
- KEDA possiede il numero di repliche, incluso lo scale a zero, cosa che HPA da solo non può fare.
- py-kube-downscaler o kube-green possiede la pianificazione della non produzione. Il risparmio più economico dell'elenco.
- OpenCost misura continuamente e non partecipa a nulla.
Piattaforme commerciali
Ogni strumento commerciale assume una delle tre posizioni sul livello dei nodi. Quella è la decisione, e conta più del prezzo o del numero di funzionalità, perché il manifest del NodePool del passaggio 3 o sopravvive o non sopravvive.
- Lascialo stare: StormForge, PerfectScale, Sedai e Kubex ridimensionano i workload. Hanno bisogno di Karpenter o Cluster Autoscaler sotto e non lo toccano mai. L'aggiunta più sicura a una configurazione esistente.
- Lavora con esso: ScaleOps aggiunge il bin packing sopra Karpenter. nOps ottimizza un Cluster Autoscaler o Karpenter esistente invece di sostituirlo con il proprio. Maggiore copertura, il provisioner resta tuo.
- Sostituiscilo: CAST IA e Spot Ocean installano il proprio provisioner e scartano il manifest. Copertura più ampia, minor controllo.
- Gli strumenti di visibilità stanno all'esterno: OpenCost, Kubecost, CloudZero, Vantage e Finout sono in sola lettura, quindi non entrano in conflitto con nulla e si sommano liberamente. Eseguine uno indipendentemente da cos'altro venga adottato.
Come combinare questi strumenti
La fattura si basa sui nodi in esecuzione, non sulle richieste dichiarate. Il rightsizing riduce le richieste, liberando spazio sui nodi esistenti ma senza rimuoverne alcuno, quindi la bolletta resta invariata finché uno strumento per i nodi non consolida via quello spazio. Gli strumenti per i nodi da soli falliscono per la ragione speculare: compattano qualunque richiesta venga loro data, quindi le richieste sovra-provisionate vengono compattate ancora più strettamente.
Due modi per coprire entrambi i livelli:
- Due strumenti: VPA, StormForge o PerfectScale per le richieste, più Karpenter per i nodi. Più economico, e il livello dei nodi rimane sotto controllo diretto.
- Una piattaforma: CAST IA, Zesty o Spot Ocean fanno entrambi in un unico prodotto. Più costoso, e il loro provisioner sostituisce Karpenter.
Cinque combinazioni di strumenti che rompono le cose:
- Due ridimensionatori mutanti su un deployment: VPA in
Autoinsieme a StormForge, ScaleOps, PerfectScale o Zesty significa due controller che scrivono numeri diversi nello stesso campo. Un controller di ammissione mutante per workload. - Karpenter e Cluster Autoscaler su un gruppo di nodi: Entrambi effettuano il provisioning contro gli stessi pod non schedulabili, quindi il cluster finisce con circa il doppio dei nodi necessari.
- VPA e HPA sulla stessa metrica: L'utilizzo sale, VPA aumenta la richiesta, l'utilizzo misurato cala perché è utilizzo su richiesta, HPA rimuove le repliche, il carico per pod sale, ripeti. Sicuro quando HPA scala su qualcosa che VPA non tocca, come la profondità della coda tramite KEDA.
- Due strumenti di commitment su un account pagatore: Entrambi acquistano contro la stessa spesa scoperta, bloccando un over-commitment da uno a tre anni.
- Due piattaforme complete: CAST IA, Zesty e Spot Ocean installano ciascuno il proprio provisioner e si aspettano di possederlo.
Esamina tutti i case study che abbiamo raccolto:
Ulteriori letture sui costi del cloud
Leggi di più per padroneggiare il posizionamento dei pod e ridurre la spesa per il calcolo cloud:
- Confronta i migliori strumenti di orchestrazione dei container
- Confronta oltre 20 orchestratori cloud
- I migliori scheduler di job per cloud ibrido
Cita questa ricerca
Scegli il formato adatto a dove pubblicherai. Incollare la versione con link nel tuo CMS preserva il backlink.
@misc{simsek2026,
author = {Şimşek, Hazal},
title = {{Ottimizzazione dei costi di Kubernetes: 8 passaggi e 23 strumenti}},
year = {2026},
month = sep,
howpublished = {\url{https://aimultiple.com/kubernetes-cost-optimization}},
note = {AIMultiple. Consultato il 18 settembre 2026}
}Risultati e timestamp di 249 punti dati. Scarica i dati di sintesi mostrati nei grafici e nelle tabelle di questo articolo come file ZIP contenente 6 file CSV.
Vuoi i dati granulari che ci stanno dietro? Passa a Premium

Sii il primo a commentare
Il tuo indirizzo email non verrà pubblicato. Tutti i campi sono obbligatori. I commenti vengono lasciati nella loro lingua originale.