Quali sono alcune best practice per l'utilizzo delle istanze spot di EC2 con Amazon EKS?

Ultimo aggiornamento: 16/12/2022

Desidero utilizzare le istanze spot di Amazon Elastic Compute Cloud (Amazon EC2) con Amazon Elastic Kubernetes Service (Amazon EKS). Quali sono le best practice?

Breve descrizione

Di seguito sono riportate alcune best practice per l'utilizzo delle istanze spot di Amazon EC2 con Amazon EKS:

  • Non utilizzare le istanze spot per processi di lunga durata o applicazioni stateful.
  • Utilizza i gruppi di nodi gestiti con le istanze Spot.
  • Aggiungi più tipi di istanza ai gruppi di nodi.
  • Utilizza AWS Node Termination Handler (NTH) per i gruppi di nodi autogestiti.

Risoluzione

Non utilizzare le istanze Spot per processi a esecuzione prolungata o applicazioni stateful

La durata breve di un'istanza spot può causare la terminazione indesiderata di processi di lunga durata. Può anche influire sulle applicazioni stateful, perché queste non tollerano gli arresti. Per i processi di lunga durata, utilizza invece le istanze on demand.

Utilizzo di gruppi di nodi gestiti con istanze spot

È possibile impostare il tipo di capacità di un gruppo di nodi gestito come spot. Il gruppo di nodi gestito configura quindi un gruppo con scalabilità automatica per l'utilizzo del ribilanciamento della capacità del dimensionamento automatico EC2. Quando il ribilanciamento della capacità del dimensionamento automatico EC2 è attivato e un nodo spot riceve un suggerimento di ribilanciamento, Amazon EKS tenta di sostituire il nodo spot.

Una volta che il nuovo nodo spot è pronto, Amazon EKS separa e scarica il nodo spot precedente. Ciò può contribuire a ridurre il rischio di danneggiamento dei volumi Amazon Elastic Block Store (Amazon EBS) o di interruzioni delle connessioni al database.

Aggiunta di più tipi di istanze ai gruppi di nodi

Ogni pool di istanze spot è costituito da una capacità di istanza EC2 inutilizzata per un tipo di istanza specifico in una zona di disponibilità specifica. Quando prova a eseguire il provisioning di un nuovo nodo, il gruppo di nodi utilizza uno dei tipi di istanza definiti nella sua configurazione. Se il tipo di istanza non dispone di capacità spot in nessuna delle zone di disponibilità, il gruppo di nodi non riesce a dimensionare e si riduce.

Per evitare questo problema, aumenta il numero di tipi di istanza simili nel gruppo di nodi.

Immaginiamo che tu disponga di un tipo di istanza m5.large (2 vCPU/8 GiB RAM). Aggiungi istanze con gli stessi valori di vCPU e RAM, come m5a.large, m5n.large e m4.large.

Utilizzo di AWS NTH per i gruppi di nodi autogestiti

AWS Node Termination Handler (NTH), dal sito Web di GitHub, viene implementato in un cluster Amazon EKS come implementazione o DaemonSet. NTH aggiunge ai gruppi di nodi autogestiti funzionalità di cui non dispongono. Il servizio rileva e risponde in modo appropriato agli eventi di manutenzione EC2, agli avvisi di interruzione spot, agli eventi di dimensionamento dei gruppi con scalabilità automatica e ai ribilanciamenti delle zone di disponibilità. Utilizza l'opzione Queue Processor (Elaboratore di code) per aggiungere tutte le funzionalità di NTH al gruppo di nodi autogestito.

Utilizzo di Karpenter per gestire le istanze spot

Karpenter è un autoscaler di cluster open source che fornisce automaticamente nuovi nodi in risposta a pod non programmabili. Karpenter dispone anche di funzionalità per ridurre orizzontalmente e consolidare i nodi per limitare sprechi e costi. Il servizio utilizza la strategia di allocazione con priorità e ottimizzazione della capacità per il provisioning delle istanze EC2.

Karpenter utilizza tutti i tipi di istanza EC2 disponibili nelle Regioni AWS e nelle zone di disponibilità di un cluster Amazon EKS per ottimizzare le istanze spot. Puoi utilizzare Karpenter con lo strumento Instance Selector di EC2 per generare un elenco dei tipi di istanza che soddisfano requisiti di calcolo specifici. Utilizzando una serie diversificata di tipi di istanza, è possibile ridurre il rischio di errori relativi a capacità insufficiente. È inoltre una best practice distribuire le istanze in diverse zone di disponibilità per utilizzare pool spot diversi.

Per ulteriori informazioni sulle best practice e le limitazioni di Karpenter, consulta Karpenter best practices (Best practice di Karpenter) su GitHub.

Importante: Karpenter non è attualmente in grado di gestire l'avviso di due minuti per l'avviso di terminazione dell'interruzione spot (ITN). Per risolvere questo problema, puoi installare NTH per isolare e scaricare senza problema i nodi spot quando vengono interrotti.


Questo articolo è stato utile?


Hai bisogno della fattura o di supporto tecnico?