Ottimizzare i costi nel servizio Azure Kubernetes

L'ottimizzazione dei costi consiste nell'ottimizzare il valore delle risorse riducendo al minimo le spese non necessarie all'interno dell'ambiente cloud. Questo processo implica l'identificazione delle opzioni di configurazione convenienti e l'implementazione di procedure consigliate per migliorare l'efficienza operativa. Un ambiente del servizio Azure Kubernetes può essere ottimizzato per ridurre al minimo i costi tenendo conto dei requisiti di prestazioni e affidabilità.

Questo articolo contiene informazioni relative agli argomenti seguenti:

  • Selezione strategica dell'infrastruttura
  • Diritti dinamici e scalabilità automatica
  • Sfruttare gli sconti di Azure per risparmi sostanziali
  • Procedure di monitoraggio olistiche e finops

Preparare l'ambiente dell'applicazione

Valutare la famiglia di SKU

È importante valutare i requisiti delle risorse dell'applicazione prima della distribuzione. I carichi di lavoro di sviluppo di piccole dimensioni hanno esigenze di infrastruttura diverse rispetto ai carichi di lavoro pronti per la produzione di grandi dimensioni. Anche se una combinazione di configurazioni di CPU, memoria e capacità di rete influisce notevolmente sull'efficacia dei costi di uno SKU, considerare i tipi di macchina virtuale seguenti:

  • I pool di nodi Spot Macchine virtuali Spot sono supportati da set di scalabilità - di macchine virtuali spot di Azure e distribuiti in un singolo dominio di errore senza garanzie di disponibilità elevata o contratto di servizio. Le macchine virtuali spot consentono di sfruttare la capacità di Azure non utilizzata con sconti significativi (fino al 90% rispetto ai prezzi con pagamento in base al consumo). Se Azure necessita di capacità indietro, l'infrastruttura di Azure rimuove i nodi Spot. Ideale per ambienti di sviluppo/test, carichi di lavoro in grado di gestire interruzioni, ad esempio processi di elaborazione batch e carichi di lavoro con tempi di esecuzione flessibili.
  • Processori basati su Arm di Ampere Altra (ARM64): le macchine virtuali ARM64 sono efficienti e convenienti, ma non compromesse sulle prestazioni. Con il supporto del pool di nodi AMR64 nel servizio Azure Kubernetes, è possibile creare nodi agente Ubuntu ARM64 e persino combinare nodi di architettura Intel e ARM all'interno di un cluster. Queste macchine virtuali ARM sono progettati per eseguire in modo efficiente carichi di lavoro dinamici e scalabili e possono offrire fino al 50% prestazioni migliori rispetto alle macchine virtuali basate su x86 simili per carichi di lavoro con scalabilità orizzontale. Ideale per server Web o applicazioni, database open source, applicazioni native del cloud, server di gioco e altro ancora.
  • SKU ottimizzati per GPU: a seconda della natura del carico di lavoro, è consigliabile usare SKU ottimizzati per il calcolo, ottimizzati per la memoria, ottimizzati per l'archiviazione o persino SKU di MACCHINE virtuali ottimizzate per l'elaborazione grafica (GPU). Le dimensioni delle macchine virtuali GPU sono macchine virtuali specializzate disponibili con GPU singole, multiple e frazionarie. I pool di nodi Linux abilitati per GPU nel servizio Azure Kubernetes sono ideali per carichi di lavoro a elevato utilizzo di calcolo, ad esempio rendering grafico, training di modelli di grandi dimensioni e inferenza.

Nota

Il costo dell'ambiente di calcolo varia in base alle aree. Quando si sceglie un'area meno costosa per l'esecuzione dei carichi di lavoro, tenere conto del potenziale impatto della latenza e dei costi di trasferimento dei dati. Per altre informazioni sugli SKU delle macchine virtuali e sulle relative caratteristiche, vedere Dimensioni per le macchine virtuali in Azure.

Usare le configurazioni predefinite del cluster

La scelta dello SKU, delle aree, del numero di nodi corretti e di altre opzioni di configurazione può risultare difficile in anticipo. Le configurazioni predefinite del cluster nella portale di Azure scaricano questa sfida iniziale fornendo configurazioni consigliate per diversi ambienti applicativi con costi e prestazioni elevate.Cluster preset configurations in the portale di Azure offloads initial challenge by providing recommended configurations for different application environments that are cost-conscious and performance. Il set di impostazioni sviluppo/test è ideale per lo sviluppo di nuovi carichi di lavoro o il test di carichi di lavoro esistenti. Il set di impostazioni Production Economy è ideale per gestire il traffico di produzione in modo consapevole dei costi se i carichi di lavoro possono tollerare interruzioni. Le funzionalità non critiche sono disattivate per impostazione predefinita e i valori predefiniti possono essere modificati in qualsiasi momento.

Prendere in considerazione la multi-tenancy

Il servizio Azure Kubernetes offre flessibilità per l'esecuzione di cluster multi-tenant e l'isolamento delle risorse. Per una multi-tenancy semplice, i cluster e l'infrastruttura possono essere condivisi tra team e business unit tramite isolamento logico. Gli spazi dei nomi di Kubernetes costituiscono il limite di isolamento logico per i carichi di lavoro e le risorse. L'infrastruttura di condivisione riduce il sovraccarico di gestione dei cluster, migliorando al tempo stesso l'utilizzo delle risorse e la densità dei pod all'interno del cluster. Per altre informazioni sulla multi-tenancy nel servizio Azure Kubernetes e per determinare se è adatta alle esigenze dell'organizzazione, vedere Considerazioni sul servizio Azure Kubernetes per cluster multi-tenancy e progettazione per la multi-tenancy.

Avviso

Gli ambienti Kubernetes non sono completamente sicuri per la multi-tenancy ostile. Se non è possibile considerare attendibile un tenant nell'infrastruttura condivisa, è necessaria una pianificazione aggiuntiva per impedire ai tenant di influire sulla sicurezza di altri servizi.

Prendere in considerazione i limiti di isolamento fisico. In questo modello i team o i carichi di lavoro vengono assegnati al proprio cluster. Un ulteriore sovraccarico finanziario e di gestione sarà un compromesso.

Creare applicazioni native del cloud

Rendere il contenitore il più snella possibile

Un contenitore snella si riferisce all'ottimizzazione delle dimensioni e del footprint delle risorse dell'applicazione in contenitori. Verificare che l'immagine di base sia minima e contenga solo le dipendenze necessarie. Rimuovere eventuali librerie e pacchetti non necessari. Un'immagine del contenitore più piccola accelera i tempi di distribuzione e aumenta l'efficienza delle operazioni di ridimensionamento. Andando oltre, Artifact Streaming nel servizio Azure Kubernetes consente di trasmettere immagini del contenitore da Registro Azure Container (ACR). Esegue il pull solo del livello necessario per l'avvio iniziale del pod, riducendo il tempo di pull per immagini più grandi da minuti a secondi.

Applicare le quote di risorse

Le quote di risorse consentono di riservare e limitare le risorse in un team di sviluppo o in un progetto. Le quote vengono definite in uno spazio dei nomi e possono essere impostate su risorse di calcolo, risorse di archiviazione e conteggi degli oggetti. Quando si definiscono quote di risorse, ai singoli spazi dei nomi viene impedito di utilizzare più risorse rispetto all'allocazione. Ciò è particolarmente importante per i cluster multi-tenant in cui i team condividono l'infrastruttura.

Usare l'arresto dell'avvio del cluster

I cluster di sviluppo e test di piccole dimensioni, se lasciati automatici, possono realizzare grandi quantità di spese non necessarie. Disattivare i cluster che non devono essere eseguiti in qualsiasi momento usando l'avvio e l'arresto del cluster. In questo modo, tutti i pool di nodi di sistema e utente vengono arrestati in modo da non pagare per risorse di calcolo aggiuntive. Tutti gli oggetti e lo stato del cluster verranno mantenuti quando si avvia nuovamente il cluster.

Usare le prenotazioni di capacità

Le prenotazioni di capacità consentono di riservare la capacità di calcolo in un'area di Azure o in una zona di disponibilità per qualsiasi periodo di tempo. La capacità riservata sarà disponibile per l'uso immediato fino all'eliminazione della prenotazione. L'associazione di un gruppo di prenotazioni di capacità esistente a un pool di nodi garantisce la capacità allocata per il pool di nodi e consente di evitare potenziali picchi di prezzi su richiesta durante periodi di domanda di calcolo elevata.

Monitorare l'ambiente e spendere

Aumentare la visibilità con Gestione costi Microsoft

Gestione costi Microsoft offre un ampio set di funzionalità che consentono di gestire il budget del cloud, la previsione e la visibilità dei costi sia all'interno che all'esterno del cluster. La visibilità appropriata è essenziale per decifrare le tendenze di spesa, identificare le opportunità di ottimizzazione e aumentare la responsabilità tra gli sviluppatori di applicazioni e i team della piattaforma. Abilitare il componente aggiuntivo Analisi costi del servizio Azure Kubernetes per la suddivisione granulare dei costi del cluster in base ai costrutti kubernetes insieme alle categorie calcolo, rete e Archiviazione di Azure.

Monitoraggio di Azure

Se si inseriscono dati delle metriche tramite Informazioni dettagliate sui contenitori, è consigliabile eseguire la migrazione alle metriche di Prometheus gestite, che offre una riduzione significativa dei costi. È possibile disabilitare le metriche di Informazioni dettagliate contenitore usando la regola di raccolta dati (DCR) e distribuire il componente aggiuntivo Prometheus gestito, che supporta la configurazione tramite Azure Resource Manager, l'interfaccia della riga di comando di Azure, portale di Azure e Terraform.

Se si fa affidamento sull'inserimento dei log, è consigliabile usare anche l'API Log di base per ridurre i costi di Log Analytics. Per altre informazioni, vedere Procedure consigliate di Monitoraggio di Azure e gestione dei costi per Informazioni dettagliate sui contenitori.

Ottimizzare i carichi di lavoro tramite scalabilità automatica

Abilitare la scalabilità automatica delle applicazioni

Scalabilità automatica dei pod verticali

Le richieste e i limiti significativamente superiori all'utilizzo effettivo possono comportare carichi di lavoro con provisioning eccessivo e risorse sprecate. Al contrario, le richieste e i limiti troppo bassi possono causare problemi di limitazione e carico di lavoro a causa della mancanza di memoria. Vertical Pod Autoscaler (VPA) consente di ottimizzare le risorse di CPU e memoria richieste dai pod. VPA fornisce valori consigliati per le richieste di CPU e memoria e i limiti in base all'utilizzo cronologico dei contenitori, che è possibile impostare manualmente o aggiornare automaticamente. Ideale per le applicazioni con esigenze di risorse variabili.

Scalabilità automatica orizzontale dei pod

Horizontal Pod Autoscaler (HPA) ridimensiona in modo dinamico il numero di repliche pod in base a una metrica osservata, ad esempio l'utilizzo della CPU o della memoria. Durante i periodi di domanda elevata, HPA aumenta il numero di istanze, aggiungendo più repliche pod per distribuire il carico di lavoro. Durante i periodi di bassa domanda, HPA aumenta, riducendo il numero di repliche per risparmiare risorse. Ideale per le applicazioni con esigenze di risorse prevedibili.

Avviso

Non è consigliabile usare la VPA insieme all'HPA nelle stesse metriche della CPU o della memoria. Tale combinazione può causare conflitti, poiché entrambi i tipi di scalabilità automatica tentano di rispondere alle variazioni della domanda usando le stesse metriche. Tuttavia, è possibile usare la VPA per CPU o memoria in combinazione con HPA per le metriche personalizzate, per evitare sovrapposizioni e assicurarsi che ogni ridimensionamento automatico si concentri su aspetti distinti della scalabilità del carico di lavoro.

KEDA (Kubernetes Event-driven Autoscaling)

Il componente aggiuntivo Kubernetes Event-driven Autoscaler (KEDA) offre una maggiore flessibilità per la scalabilità in base a varie metriche basate su eventi allineate al comportamento dell'applicazione. Ad esempio, per un'applicazione Web, KEDA può monitorare il traffico delle richieste HTTP in ingresso e regolare il numero di repliche pod per garantire che l'applicazione rimanga reattiva. Per i processi di elaborazione, KEDA può ridimensionare l'applicazione in base alla lunghezza della coda dei messaggi. Il supporto gestito viene fornito per tutti i servizi di scalabilità di Azure.

Abilitare la scalabilità automatica dell'infrastruttura

Scalabilità automatica del cluster

Per mantenere il passo con la domanda dell'applicazione, Cluster Autoscaler controlla i pod che non possono essere pianificati a causa di vincoli di risorse e ridimensiona il numero di nodi nel pool di nodi di conseguenza. Quando i nodi non dispongono di pod in esecuzione, la scalabilità automatica del cluster riduce il numero di nodi. Si noti che le impostazioni del profilo del ridimensionamento automatico del cluster si applicano a tutti i pool di nodi abilitati per la scalabilità automatica nel cluster. Per altre informazioni, vedere Procedure consigliate e considerazioni per il ridimensionamento automatico del cluster.

Provisioning automatico dei nodi

I carichi di lavoro complessi possono richiedere diversi pool di nodi con configurazioni di dimensioni di macchina virtuale diverse per soddisfare i requisiti di CPU e memoria. La selezione e la gestione accurata di diverse configurazioni del pool di nodi comportano un sovraccarico operativo e una complessità. Il provisioning automatico del nodo semplifica il processo di selezione dello SKU e decide, in base ai requisiti delle risorse dei pod in sospeso, la configurazione ottimale della macchina virtuale per eseguire i carichi di lavoro nel modo più efficiente e conveniente.

Risparmiare con gli sconti di Azure

Prenotazioni di Azure

Se il carico di lavoro è prevedibile ed esiste per un lungo periodo di tempo, prendere in considerazione l'acquisto di una prenotazione di Azure per ridurre ulteriormente i costi delle risorse. Le prenotazioni di Azure operano per un periodo di un anno o di tre anni, offrendo fino al 72% di sconto rispetto ai prezzi con pagamento in base al consumo per il calcolo. Le prenotazioni si applicano automaticamente alle risorse corrispondenti. Ideale per i carichi di lavoro di cui è stato eseguito il commit nell'esecuzione negli stessi SKU e aree in un lungo periodo di tempo.

Piano di risparmio di Azure

Se si dispone di una spesa coerente, ma l'uso di risorse diverse tra SKU e aree rende infeasible le prenotazioni di Azure, prendere in considerazione l'acquisto di un piano di risparmio di Azure. Come le prenotazioni di Azure, i piani di risparmio di Azure operano su un periodo di un anno o tre anni e si applicano automaticamente a qualsiasi risorsa nell'ambito dei vantaggi. Si esegue il commit di spendere una quantità oraria fissa per le risorse di calcolo indipendentemente dallo SKU o dall'area. Ideale per i carichi di lavoro che usano risorse e/o aree di data center diverse.

Vantaggio Azure Hybrid

Vantaggio Azure Hybrid per servizio Azure Kubernetes (servizio Azure Kubernetes) consente di ottimizzare le licenze locali senza costi aggiuntivi. Usare tutte le licenze locali idonee che dispongono anche di una sottoscrizione software Assurance (SA) attiva o di una sottoscrizione idonea per ottenere macchine virtuali Windows in Azure a un costo ridotto.

Adottare FinOps per creare una cultura di risparmio dei costi

Le operazioni finanziarie (FinOps) sono una disciplina che combina la responsabilità finanziaria con la gestione e l'ottimizzazione del cloud. Si concentra sull'allineamento tra finanza, operazioni e team di progettazione per comprendere e controllare i costi del cloud. La Fondazione FinOps ha rilasciato diversi progetti importanti:

  • FinOps Framework : un modello operativo per la pratica e l'implementazione di FinOps.
  • Specifica FOCUS: specifica tecnica e standard aperti per l'utilizzo del cloud, i costi e i dati di fatturazione in tutti i principali servizi di provider di servizi cloud.

Passaggi successivi

L'ottimizzazione dei costi è un impegno continuo e iterativo. Per altre informazioni, vedere i consigli e le indicazioni sull'architettura seguenti: