Come posso avviare le istanze spot e risolvere eventuali problemi utilizzando gruppi di nodi gestiti da Amazon EKS?

4 minuti di lettura
0

Desidero creare un gruppo di nodi gestito con capacità spot per il mio cluster Amazon Elastic Kubernetes Service (Amazon EKS) e avere la possibilità di risolvere eventuali problemi.

Risoluzione

1.    Installa eksctl.

Importante: assicurati di controllare tutti i comandi dell'Interfaccia della linea di comando AWS (AWS CLI) prima di utilizzarli e sostituisci le istanze di stringhe example con i tuoi valori. Ad esempio, sostituisci example_cluster con il nome del tuo cluster.

2.    Crea un gruppo di nodi gestito con capacità spot nel tuo cluster esistente eseguendo il seguente comando:

#eksctl create nodegroup --cluster=<example_cluster> --spot --instance-types=<Comma-separated list of instance types> --region <EKS cluster AWS region. Defaults to the value set in your AWS config (~/.aws/config)>

Esempio:

#eksctl create nodegroup --cluster=demo --spot --instance-types=c3.large,c4.large,c5.large --region us-east-1

Nota: ci sono altri flag che puoi configurare durante la creazione di un gruppo di nodi gestiti spot, come --name, --nodes, --nodes-min e --nodes-max. Ottieni l'elenco completo di tutti i flag disponibili eseguendo il seguente comando:

#eksctl create nodegroup --help

3.    Se mantieni un file di configurazione eksctl ClusterConfig per il tuo cluster, puoi anche creare un gruppo di nodi gestito spot con quel file. Crea istanze spot utilizzando gruppi di nodi gestiti con un file di configurazione spot-cluster.yaml eseguendo il seguente comando:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: <example_cluster>
  region: <example_region>
managedNodeGroups:
- name: spot
  instanceTypes: ["c3.large","c4.large","c5.large","c5d.large","c5n.large","c5a.large"]
  spot: true

4.    Crea un gruppo di nodi utilizzando il file di configurazione eseguendo il seguente comando:

# eksctl create nodegroup -f spot-cluster.yaml

Risoluzione dei problemi relativi alle istanze spot in Amazon EKS

Verifica lo stato di un gruppo di nodi gestito utilizzando eksctl o la console Amazon EKS come segue:

$ eksctl utils nodegroup-health --name=<example_nodegroup> --cluster=<example_cluster>

Lo stato dei gruppi di nodi gestiti spot può peggiorare fino a generare un errore, a causa della mancanza di capacità spot per i tipi di istanze usati. Vedi il seguente errore come esempio:

AsgInstanceLaunchFailures Could not launch Spot Instances. UnfulfillableCapacity - Unable to fulfill capacity due to your request configuration. Please adjust your request and try again. Launching EC2 instance failed.

Nota: per adottare correttamente le istanze spot, è consigliabile implementare la diversificazione delle istanze spot come parte della configurazione del gruppo di nodi gestiti spot. La diversificazione delle istanze spot aiuta a ottenere capacità da più pool di istanze spot. L'ottenimento di tale capacità serve sia per scalare sia per sostituire le istanze spot che potrebbero ricevere una notifica di chiusura dell'istanza spot.

Se i gruppi di nodi spot del cluster devono essere dotati di tipi di istanze che rispettino un rapporto di 1 vCPU:4 GB di RAM, diversifica i pool di istanze spot. Diversifica i tuoi pool di istanze utilizzando una delle seguenti strategie:

  • Crea più gruppi di nodi, ognuno dei quali con dimensioni diverse. Ad esempio, un gruppo di nodi di dimensioni pari a 4 vCPU e 16 GB di RAM e un altro gruppo pari a 8 vCPU e 32 GB di RAM.
  • Implementa la diversificazione delle istanze all'interno dei gruppi di nodi. A tale scopo, seleziona una combinazione di tipi e famiglie di istanze da diversi pool di istanze spot che soddisfano gli stessi criteri di vCPU e memoria.

Usa amazon-ec2-instance-selector per selezionare i tipi e le famiglie di istanze pertinenti con un numero sufficiente di vCPU e RAM eseguendo il seguente comando:

curl -Lo ec2-instance-selector https://github.com/aws/amazon-ec2-instance-selector/releases/download/v2.0.3/ec2-instance-selector-`uname | tr '[:upper:]' '[:lower:]'`-amd64 && chmod +x ec2-instance-selector
sudo mv ec2-instance-selector /usr/local/bin/
ec2-instance-selector --version

Esempio:

ec2-instance-selector --vcpus 4 --memory 16 --gpus 0 --current-generation -a x86_64 --deny-list '.*[ni].*'

Il comando precedente visualizza un elenco simile al seguente. Usa queste istanze come parte di uno dei tuoi gruppi di nodi.

  • m4.xlarge
  • m5.xlarge
  • m5a.xlarge
  • m5ad.xlarge
  • m5d.xlarge
  • t2.xlarge
  • t3.xlarge
  • t3a.xlarge

Nota: i tipi di istanza dei gruppi di nodi esistenti non possono essere modificati utilizzando l'API Amazon EKS. Consigliamo di creare un nuovo gruppo di nodi spot con i tipi di istanze desiderati. Inserisci quanto segue nel comando eksctl create nodegroup. Nota il nuovo flag eksctl per indicare che un gruppo di nodi esegue le istanze spot: --spot.

$eksctl create nodegroup --cluster=<example_cluster> --spot --instance-types m5.xlarge,m4.xlarge,m5a.xlarge,m5d.xlarge,m5n.xlarge,m5ad.xlarge --region <example_region>

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa