Ottimizzazione dei costi di Kubernetes: 8 passaggi, 23 strumenti e casi di studio
I cluster Kubernetes possono sembrare completamente sani mentre la bolletta sale. L'autoscaling è configurato, le dashboard sono verdi e la spesa aumenta comunque. In un sondaggio, il 42% dei 455 ingegneri di piattaforma ha indicato il costo come la propria sfida numero uno con Kubernetes, mentre l'88% ha registrato un aumento del costo totale di proprietà anno dopo anno.1
Abbiamo raccolto 68 casi di studio sull'ottimizzazione dei costi di Kubernetes e mappato ogni caso d'uso citato al 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 dei cluster e il confronto degli strumenti per l'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 acquisita prima della prima modifica, non c'è modo di sapere 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 è più importante 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 aspetti:
- Richieste rispetto a CPU e memoria effettivamente utilizzate, per carico di lavoro. Il divario è il tuo backlog del passaggio 1, ordinato per dimensione.
- Costo per namespace e per carico di lavoro. È ciò che rende le quote del passaggio 2 una negoziazione piuttosto che un'imposizione.
- Efficienza del bin-packing, allocabile rispetto a richiesto per nodo. 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 nell'arco di almeno un ciclo aziendale completo. Sette giorni sono il minimo e trenta sono meglio. La finestra non è cautela procedurale. Il passaggio 1 imposta le richieste di memoria al massimo osservato e un massimo osservato è valido solo quanto la finestra che lo ha osservato. Un massimo rilevato su 48 ore perde 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 minimo gratuito. Il piano gratuito di Kubecost avvolge 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 invece di sostituirlo.
Entrambi gli strumenti di costo attribuiscono i costi tramite etichette, 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 qui sotto indica la raccomandazione, il metodo, la configurazione e un'azienda che ha adottato quel passaggio. Ogni caso di studio e ogni statistica include un link alla fonte.
2. Imposta le quote dei namespace come guardrail
I risparmi decadono quando i team distribuiscono nuovi carichi di lavoro senza richieste specificate. Un LimitRange fornisce richieste predefinite ai container che le omettono e una ResourceQuota limita ciò che un namespace può consumare complessivamente.
Distribuisci il LimitRange prima della ResourceQuota. Una volta che una quota vincola una risorsa, qualsiasi pod senza una richiesta per quella risorsa viene rifiutato in fase di ammissione, quindi l'ordine inverso blocca le distribuzioni.2
Ogni load balancer viene fatturato separatamente dal cloud provider e i volumi orfani continuano a essere fatturati dopo la scomparsa dei relativi pod.
2. Ridimensiona le richieste di CPU e memoria
Le richieste determinano il conteggio dei nodi e il conteggio dei 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 di CPU pari al 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 anziché a un percentile e imposta il limite di memoria uguale alla richiesta. Un percentile lascia il container a corto di risorse durante il traffico rimanente e, poiché il limite coincide con la richiesta, quella carenza si presenta come OOMKill invece che come rallentamento.
Ometti il limite di CPU. Il throttling della CPU degrada la latenza senza arrestare il pod e la richiesta riserva già ciò di cui il carico di lavoro ha bisogno.
Il Vertical Pod Autoscaler in modalità solo raccomandazione produce queste cifre senza rischi per la produzione.
Leggi le raccomandazioni con kubectl describe vpa payments-api e confronta il valore target con la richiesta attuale.
Caso di studio reale: Tryg Insurance
Tryg Insurance è la più grande compagnia assicurativa generale della regione nordica ed esegue Kubernetes su Oracle Cloud Infrastructure. Il suo team di ingegneria ha combinato Horizontal Pod Autoscaler e Vertical Pod Autoscaler per ridimensionare dinamicamente i carichi di lavoro mantenendo i livelli di servizio e ha ridotto i costi cloud di Kubernetes del 50% usando solo autoscaler open source, senza alcuna piattaforma commerciale di ottimizzazione.4
4. Consolida i nodi con Karpenter e scala a zero i carichi di lavoro inattivi
Il rightsizing libera capacità, ma quella capacità resta su nodi che continuano a funzionare finché qualcosa non li rimuove. Karpenter effettua il provisioning delle istanze just-in-time e ricompatta i carichi di lavoro su meno nodi. KEDA scala i carichi di lavoro guidati da code fino a zero repliche, cosa che un Horizontal Pod Autoscaler standard non può fare.
Imposta la policy di consolidamento su WhenEmptyOrUnderutilized. L'alternativa, WhenEmpty, limita la disruption ai nodi che non ospitano affatto pod di carico di lavoro, 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 spot diminuisce. Dovresti lasciarlo scegliere tra intere famiglie di istanze.
Caso di studio reale: Adidas
Adidas esegue 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 basato sugli eventi, ha automaticamente creato oggetti Vertical Pod Autoscaler tramite policy Kyverno e ha usato kube-downscaler per gli ambienti inattivi. Ha ridotto il costo di esecuzione dei propri cluster Kubernetes su AWS fino al 50%, usando uno stack interamente open source.6
5. Preparati adeguatamente prima di spostare i carichi di lavoro su spot
Le istanze spot offrono lo sconto più ampio disponibile e l'applicabilità più ristretta. Niente dovrebbe passare a spot finché PodDisruptionBudget, diversificazione delle istanze, topology spread e gestione della terminazione non sono tutti in atto.
Un PodDisruptionBudget che non lascia margine blocca tutta la disruption volontaria, incluso il consolidamento di Karpenter, quindi i valori devono avere un margine. 7
Caso di studio reale: Delivery Hero
Delivery Hero gestisce 390 applicazioni in 43 paesi, con circa il 90% dei carichi di lavoro eseguiti su AWS EKS. Il loro team è migrato alle istanze Spot in circa sei mesi, integrando nel processo la gestione della terminazione e un descheduler, invece di cambiare direttamente 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 da 4 a 5 volte il volume normale.8
6. Spegni gli ambienti non di 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 incontestato a livello politico, il che lo rende il risparmio più rapido da realizzare e una prima azione utile dove modifiche più difficili avranno bisogno di supporto in seguito.
Applica la pianificazione per impostazione predefinita a tutti i namespace non di 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 uscire.
Il risparmio arriva alla fattura solo se il consolidamento dei nodi è già in esecuzione, perché i deployment ridotti lasciano dietro di sé nodi vuoti.
Caso di studio reale: Bud Financial
Bud Financial arricchisce i dati delle transazioni finanziarie per il settore dei servizi finanziari ed esegue circa 25 cluster su Google Kubernetes Engine. Il suo team ha usato pause e ripristino pianificati per ridurre i nodi del cluster durante la notte e nei fine settimana, insieme a un 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 sopra il 90%.9
7. Migra i carichi di lavoro compatibili su ARM
Le istanze basate su ARM cambiano il prezzo unitario invece di competere per la stessa capacità inattiva delle azioni precedenti, quindi questi risparmi si sommano davvero agli altri. Gli ostacoli saranno le dipendenze senza build ARM64.
Gli utenti dovrebbero valutare questo per carico di lavoro anziché per l'intero parco e creare immagini multi-architettura prima di pianificare qualsiasi cosa.
Caso di studio reale: Pinterest
Pinterest ha migrato il suo carico di lavoro API web su istanze AWS Graviton basate su ARM64, motivato sia dalla riduzione dei costi sia da quella delle emissioni di 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 architettura
Le sei azioni precedenti ottimizzano i carichi di lavoro all'interno dei cluster esistenti. Una volta esaurite, ulteriori guadagni richiedono un cambiamento architetturale invece di ulteriore tuning.
Due risultati pubblicati segnano il limite pratico. InCred Finance ha ridotto la spesa del 30% su cluster che il suo team già considerava ottimizzati11, e Yotpo ha ottenuto 30–40% pur eseguendo già l'80% dei carichi di lavoro su istanze spot12. Oltre quell'intervallo, lo spreco rimanente non si trova più all'interno dei cluster, ma nel numero di cluster. Ognuno comporta un costo per il control plane e forma un'isola di scheduling che il bin-packing non può attraversare.
Il multi-tenancy elimina entrambi i costi. Invece di dedicare un cluster a ogni cliente, team o ambiente, i cluster virtuali girano su un'infrastruttura fisica condivisa. Ogni tenant riceve il proprio API server e control plane virtuale mentre i nodi sono condivisi. Questo elimina il costo del control plane per cluster e consente il bin-packing nell'intero pool di nodi condiviso invece che all'interno di ambienti isolati.
yaml
bash
Sono disponibili due meccanismi. I namespace sono sempre più economici, quindi la scelta va fatta in base alla separazione richiesta dai tenant, non al costo.
- I namespace suddividono un singolo cluster e non aggiungono un proprio control plane. Sono sufficienti quando i tenant si fidano l'uno dell'altro e possono condividere un unico API server e un unico set di CRD.
- I cluster virtuali danno a ogni tenant il proprio API server, eseguito come carico di lavoro sull'host. Tale costo è giustificato in due casi: tenant che necessitano di risorse cluster-scoped proprie e requisiti di isolamento che un API server 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 in ambito sanitario e finanziario dove l'isolamento dei dati è contrattuale. Gestiva un intero cluster EKS per cliente e ha superato i 100 cluster, un parco costoso da eseguire 24 ore su 24 e difficile da mantenere. Dal primo trimestre 2022 ha valutato opzioni di multi-tenancy e ha ricostruito su vCluster, assegnando a ogni cliente un cluster virtuale anziché fisico.
- I cluster EKS fisici sono scesi da più di 100 a 20, continuando a servire più di 100 clienti
- La spesa per Kubernetes è diminuita di 600.000 dollari.14
Ordine di esecuzione
I commitment vengono per ultimi nonostante siano 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 sequenza più costoso disponibile ed è comune perché richiede un acquisto invece di lavoro di ingegneria.
L'azione 7 è una diramazione, non un passaggio. Va intrapresa solo dopo che le prime sei sono complete e il risultato è ancora insufficiente, poiché cambia quanti cluster vengono eseguiti invece di quanto efficientemente ciascuno viene eseguito.
Strumenti per l'ottimizzazione dei costi di Kubernetes
Abbiamo rappresentato gli strumenti con tre o più casi di studio pubblicati che coprono 47 dei 68 casi di studio nel dataset:
- Orizzontale: quanti casi di studio ha ogni strumento, contati una volta ciascuno.
- Verticale: quante categorie di casi d'uso distinte coprono quei casi, su dieci. Uno strumento conta una volta per categoria, indipendentemente da quanto spesso vi compare, quindi le 12 menzioni separate di rightsizing di CAST IA contribuiscono con 1 al suo punteggio di 10.
- Dimensione della bolla: in quanti degli otto stadi della strategia compare lo strumento.
Framework open source
I framework open source possono essere adottati per gli stadi da 0 a 6. Gli utenti si fanno carico degli aggiornamenti, del turnover di versione, della bolletta di retention di Prometheus e delle decisioni che un recommender commerciale prenderebbe al posto loro.
Ognuno di questi presidia 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 gestisce i nodi: provisioning, consolidamento, selezione delle istanze, diversificazione spot, architettura. Copre i passaggi 3, 4 e 6.
- KEDA gestisce il numero di repliche, incluso lo scale-to-zero, cosa che il solo HPA non può fare.
- py-kube-downscaler o kube-green gestisce la pianificazione della non produzione. Il risparmio più economico dell'elenco.
- OpenCost misura in modo continuo e non partecipa a nulla.
Piattaforme commerciali
Ogni strumento commerciale assume una di 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 si limitano al rightsizing dei carichi di lavoro. Richiedono Karpenter o Cluster Autoscaler sotto e non li toccano mai. È l'aggiunta più sicura a una configurazione esistente.
- Lavora con esso: ScaleOps aggiunge il bin packing sopra Karpenter. nOps mette a punto 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. La copertura più ampia, il minor controllo.
- Gli strumenti di visibilità stanno all'esterno: OpenCost, Kubecost, CloudZero, Vantage e Finout si limitano a leggere, quindi non entrano in conflitto con nulla e si possono sommare 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, il che libera spazio sui nodi esistenti ma non ne rimuove nessuno, quindi la bolletta resta invariata finché uno strumento per i nodi non consolida quello spazio. Gli strumenti per i soli nodi falliscono per la ragione speculare: compattano qualunque richiesta ricevano, quindi richieste sovradimensionate vengono semplicemente compattate 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 resta 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 rightsizer mutanti su un unico deployment: VPA in
Autoinsieme a StormForge, ScaleOps, PerfectScale o Zesty significa due controller che scrivono numeri diversi sullo stesso campo. Un solo admission controller mutante per carico di lavoro. - Karpenter e Cluster Autoscaler su un unico node group: entrambi effettuano il provisioning per 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 alza la richiesta, l'utilizzo misurato scende perché è uso diviso richiesta, HPA rimuove repliche, il carico per pod sale, e si ripete. È sicuro quando l'HPA scala su qualcosa che VPA non tocca, come la profondità della coda tramite KEDA.
- Due strumenti di commitment sullo stesso account pagatore: entrambi acquistano per la stessa spesa non coperta, bloccando un over-commitment da uno a tre anni.
- Due piattaforme complete: CAST IA, Zesty e Spot Ocean installano ciascuna il proprio provisioner e ciascuna si aspetta di possederlo.
Esamina tutti i casi di studio che abbiamo raccolto:
Letture aggiuntive
Leggi di più per padroneggiare il posizionamento dei pod e ridurre la spesa per il cloud computing:
- 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, 23 strumenti e casi di studio}},
year = {2026},
month = sep,
howpublished = {\url{https://aimultiple.com/kubernetes-cost-optimization}},
note = {AIMultiple. Consultato il 18 settembre 2026}
}Risultati e timestamp di 114 punti dati. Scarica i dati di sintesi mostrati nei grafici e nelle tabelle di questo articolo come file ZIP contenente 4 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.