

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Scalabilità del calcolo
<a name="compute-scaling"></a>

La scalabilità del calcolo è un componente fondamentale per le prestazioni delle applicazioni in un ambiente Kubernetes dinamico. Kubernetes riduce gli sprechi attraverso la regolazione dinamica delle risorse di elaborazione (come CPU e memoria) in risposta alla domanda in tempo reale. Questa funzionalità aiuta a evitare un approvvigionamento eccessivo o insufficiente, il che può anche far risparmiare sui costi operativi. Kubernetes elimina efficacemente la necessità di interventi manuali consentendo all'infrastruttura di scalare automaticamente verso l'alto nelle ore di punta e verso il basso durante i periodi non di punta.

La scalabilità complessiva dell'elaborazione di Kubernetes automatizza il processo di scalabilità, il che aumenta la flessibilità e la scalabilità dell'applicazione e ne migliora il comportamento di tolleranza ai guasti. In definitiva, le funzionalità di Kubernetes migliorano l'eccellenza operativa e la produttività.

Questa sezione descrive i seguenti tipi di scalabilità del calcolo:
+ [Cluster Autoscaler](#autoscaler)
+ [Cluster Autoscaler con over-provisioning](#over-provisioning)
+ [Karpenter](#karpenter)

## Cluster AutoScaler
<a name="autoscaler"></a>

A seconda delle esigenze dei pod, lo strumento [Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/best-practices/cas.html) modifica automaticamente le dimensioni aggiungendo nodi quando necessario o rimuovendo nodi quando non sono necessari e sono sottoutilizzati.

Considerate lo strumento Cluster Autoscaler come una soluzione di scalabilità per carichi di lavoro in cui la domanda aumenta gradualmente e la latenza nella scalabilità non è un problema importante.

Lo strumento Cluster Autoscaler offre le seguenti funzionalità chiave:
+ **Scalabilità**: aumenta e riduce i nodi in modo dinamico in risposta alle effettive richieste di risorse.
+ **Pianificazione dei pod**: aiuta a garantire che ogni pod sia operativo e disponga delle risorse necessarie per funzionare, prevenendo la scarsità di risorse.
+ **Efficienza in termini di costi**: elimina le spese inutili legate alla gestione dei nodi sottoutilizzati eliminandoli.

## Cluster Autoscaler con over-provisioning
<a name="over-provisioning"></a>

Cluster Autoscaler con funzionalità di over-provisioning analoghe a Cluster Autoscaler, in quanto distribuisce i nodi in modo efficiente e consente di risparmiare tempo eseguendo pod a bassa priorità sui nodi. Con questa tecnica, il traffico viene reindirizzato verso questi pod in risposta a picchi improvvisi della domanda, permettendo all'applicazione di continuare a funzionare senza interruzioni.

Cluster Autoscaler con over-provisioning offre le funzionalità dei dummy pod che possono essere utilizzati per implementare ed eseguire facilmente i nodi quando il carico di lavoro è molto elevato, la latenza non è necessaria e la scalabilità deve essere rapida.

Cluster Autoscaler con over-provisioning offre le seguenti funzionalità chiave:
+ **Migliore reattività**: rendendo costantemente accessibile la capacità in eccesso, è necessario meno tempo per scalare il cluster in risposta ai picchi di domanda.
+ **Riservazione delle risorse**: la gestione di picchi di traffico imprevisti aiuta efficacemente una corretta gestione con tempi di inattività ridotti.
+ **Scalabilità fluida: la** riduzione al minimo dei ritardi nell'allocazione delle risorse facilita un processo di scalabilità più semplice.

## Karpenter
<a name="karpenter"></a>

[Karpenter](https://docs.aws.amazon.com/eks/latest/best-practices/karpenter.html) for Kubernetes supera il tradizionale strumento Cluster Autoscaler in termini di open source, prestazioni e personalizzazione. Con Karpenter, puoi avviare automaticamente solo le risorse di elaborazione necessarie per gestire le richieste del cluster in tempo reale. Karpenter è progettato per offrire una scalabilità più efficiente e reattiva.

Le applicazioni con carichi di lavoro estremamente variabili o complessi, in cui sono essenziali decisioni rapide sulla scalabilità, traggono grandi vantaggi dall'uso di Karpenter. Si integra con AWS, offrendo una migliore implementazione e ottimizzazione della selezione dei nodi.

Karpenter include le seguenti funzionalità chiave:
+ **Provisioning dinamico**: Karpenter fornisce le istanze e le dimensioni giuste per lo scopo e fornisce nuovi nodi in modo dinamico in base ai requisiti particolari dei pod.
+ **Pianificazione avanzata**: utilizzando un posizionamento intelligente dei pod, Karpenter organizza i nodi in modo tale che risorse come GPU, CPU, memoria e storage vengano utilizzate nel modo più efficace possibile.
+ **Scalabilità rapida: Karpenter è in grado di scalare** rapidamente, reagendo spesso in pochi secondi. Questa reattività è utile in caso di traffico improvviso o quando il carico di lavoro richiede una scalabilità immediata
+ **Efficienza in termini di costi**: scegliendo con cura l'istanza più efficace, è possibile ridurre i costi operativi e sfruttare le alternative aggiuntive a basso costo offerte da AWS, come le istanze On-Demand, le istanze Spot e le istanze riservate.