Condividi tramite


Procedure consigliate per l'ottimizzazione dei costi in servizio Azure Kubernetes (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:

  • Procedure di monitoraggio olistiche e FinOps.
  • Selezione strategica dell'infrastruttura.
  • Diritti dinamici e ridimensionamento automatico.
  • Sfruttare gli sconti di Azure per ottenere risparmi sostanziali.

Adottare FinOps per creare una cultura di risparmio dei costi

Operazioni finanziarie (FinOps) è 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 diversi progetti importanti, ad esempio FinOps Framework e focus Specification.

Per altre informazioni, vedere Che cos'è 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 (VM) seguenti:

Famiglia SKU Descrizione Caso d'uso
Macchine virtuali Spot di Azure Il set di scalabilità di macchine virtuali spot di Azure esegue il backup dei pool di nodi Spot e viene distribuito 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à, l'infrastruttura di Azure rimuove i nodi Spot. Migliore 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 in termini di potenza e convenienti, ma non compromesse sulle prestazioni. Con il supporto del pool di nodi ARM64 nel servizio Azure Kubernetes, è possibile creare nodi dell'agente Ubuntu ARM64 e anche combinare nodi dell'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 scale-out. Migliore 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 di macchine virtuali ottimizzate per il calcolo, ottimizzate per la memoria, ottimizzate per l'archiviazione o persino SKU delle macchine virtuali ottimizzate per l'elaborazione grafica. Le dimensioni delle macchine virtuali GPU sono macchine virtuali specializzate disponibili con GPU singole, multiple e frazionarie. Pool di nodi Linux abilitati per la GPU nei del 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, è necessario 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 le Dimensioni per le macchine virtuali in Azure.

Rivedere le opzioni di archiviazione

Per altre informazioni sulle opzioni di archiviazione e sulle considerazioni sui costi correlate, vedere gli articoli seguenti:

Usare le configurazioni predefinita del cluster

La scelta dello SKU delle macchina virtuale, delle aree, del numero di nodi corretti e di altre opzioni di configurazione può risultare difficile. Configurazioni predefinite del cluster nel portale di Azure esegue l'offload di questa sfida iniziale fornendo configurazioni consigliate per diversi ambienti applicativi con costi e prestazioni elevate. 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 dell’economia di produzione è 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 consente di eseguire cluster multi-tenant e isolare le risorse. Per una multi-tenancy semplice, i cluster e l'infrastruttura possono essere condivisi tra team e business unit tramite un 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 la multi-tenancy e Progettare cluster 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 il proprio cluster. Un ulteriore sovraccarico finanziario e di gestione sarà un compromesso.

Creare applicazioni native del cloud

Rendere il contenitore il più snello possibile

Un contenitore snello 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 contenitore più piccola accelera i tempi di distribuzione e aumenta l'efficienza delle operazioni di ridimensionamento. Lo streaming degli artefatti nel servizio Azure Kubernetes consente di trasmettere immagini del contenitore da Registro Azure Container. 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

Per riservare e limitare le risorse in un progetto o in un team di sviluppo, è consigliabile usare le quote di risorse. 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. Le quote di risorse sono utili per i cluster multi-tenant in cui i team condividono l'infrastruttura.

Usare l'arresto/avvio del cluster

Se lasciato automatico, i cluster di sviluppo/test di piccole dimensioni possono accumulare costi non necessari. È possibile disattivare i cluster che non devono essere eseguiti in qualsiasi momento usando la funzionalità di avvio e arresto del cluster. Questa funzionalità arresta tutti i pool di nodi di sistema e utente in modo da non pagare per un calcolo aggiuntivo. Lo stato del cluster e degli oggetti viene mantenuto quando si avvia di nuovo il cluster.

Usare le prenotazioni della capacità

Le prenotazioni della 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 è 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 dei costi Microsoft

La Gestione dei 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 a Prometheus gestito, 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, interfaccia della riga di comando di Azure, portale di Azure e Terraform.

Per altre informazioni, vedere le Procedure consigliate di Monitoraggio di Azure e la Gestione dei costi per Informazioni dettagliate sui contenitori.

Log Analytics

Per i log del piano di controllo, è consigliabile disabilitare le categorie non necessarie e/o usare l'API Log di base, se applicabile per ridurre i costi di log Analitica. Per altre informazioni, vedere Il piano di controllo del servizio Azure Kubernetes o i log delle risorse. Per i log del piano dati o i log delle applicazioni, è consigliabile modificare le impostazioni di ottimizzazione dei costi.

Ottimizzare i carichi di lavoro tramite ridimensionamento automatico

Stabilire una baseline

Prima di configurare le impostazioni di scalabilità automatica, è possibile usare Test di carico di Azure per stabilire una baseline per l'applicazione. I test di carico consentono di comprendere il comportamento dell'applicazione in condizioni di traffico diverse e di identificare i colli di bottiglia delle prestazioni. Dopo aver creato una baseline, è possibile configurare le impostazioni di scalabilità automatica per garantire che l'applicazione possa gestire il carico previsto.

Abilitare il ridimensionamento automatico delle applicazioni

Ridimensionamento automatico verticale dei pod

Richieste e limiti 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. Il ridimensionamento automatico verticale dei pod (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. Migliore per le applicazioni con esigenze di risorse fluttuanti.

Scalabilità automatica orizzontale dei pod

Il ridimensionamento automatico orizzontale dei pod (HPA) ridimensiona in modo dinamico il numero di repliche pod in base alle metriche osservate, 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. Migliore 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 insieme all'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.

Scalabilità automatica guidata dagli eventi Kubernetes

Il componente aggiuntivo di ridimensionamento automatico basato su eventi di Kubernetes (KEDA) offre un'ulteriore 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 gli Scaler di Azure.

Abilitare il ridimensionamento automatico dell'infrastruttura

La scalabilità automatica del cluster

Per mantenere il passo con la domanda dell'applicazione, il ridimensionamento automatico del cluster 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, il ridimensionamento automatico del cluster riduce il numero di nodi. Le impostazioni del profilo del ridimensionamento automatico del cluster si applicano a tutti i pool di nodi abilitati per la scalabilità automatica in un 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 dei nodi (NAP) semplifica il processo di selezione dello SKU e decide la configurazione ottimale della macchina virtuale, in base ai requisiti delle risorse dei pod in sospeso, per l'esecuzione dei 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 un prenotazione di Azure per ridurre ulteriormente i costi delle risorse. Le prenotazioni di Azure hanno una durata annuale o triennale e offrono uno sconto fino al 72% rispetto ai prezzi con pagamento in base al consumo per il calcolo. Le prenotazioni si applicano automaticamente alle risorse corrispondenti. Migliore 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 impossibile ricorrere alle 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. Migliore per i carichi di lavoro che usano risorse e/o aree di data center diverse.

Vantaggio Azure Hybrid

Il Vantaggio Azure Hybrid per il 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.

Passaggi successivi

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