¿Cómo puedo lanzar instancias de Spot y solucionar problemas mediante grupos de nodos administrados por Amazon EKS?

4 minutos de lectura
0

Quiero crear un grupo de nodos administrado con capacidad de Spot para mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS) y solucionar problemas.

Resolución

1.    Instale eksctl.

Importante: Asegúrese de comprobar todos los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI) antes de usarlos y sustituya las instancias de las cadenas de ejemplo con sus valores. Por ejemplo, reemplace example_cluster con el nombre de su clúster.

2.    Cree un grupo de nodos administrado con capacidad de Spot en su clúster existente mediante la ejecución del siguiente 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)>

Ejemplo:

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

Nota: Hay otros indicadores que puede configurar al crear un grupo de nodos administrado por Spot, como --name, --nodes, --nodes-min y --nodes-max. Obtenga la lista completa de todos los indicadores disponibles mediante la ejecución del siguiente comando:

#eksctl create nodegroup --help

3.    Si mantiene un archivo de configuración eksctl ClusterConfig para su clúster, también puede crear un grupo de nodos administrado por Spot con ese archivo. Cree instancias de Spot mediante grupos de nodos administrados con un archivo de configuración spot-cluster.yamlmediante la ejecución del siguiente 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.    Cree un grupo de nodos mediante el archivo de configuración ejecutando el siguiente comando:

# eksctl create nodegroup -f spot-cluster.yaml

Solución de problemas relacionados con las instancias de Spot en Amazon EKS

Compruebe el estado de un grupo de nodos administrado mediante eksctl o la consola Amazon EKS de la siguiente manera:

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

El estado de los grupos de nodos administrados por Spot puede empeorar si se produce un error, debido a la falta de capacidad de Spot para los tipos de instancias utilizados. Vea el siguiente error a modo de ejemplo:

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: Para adoptar correctamente las instancias de Spot, se recomienda implementar la diversificación de instancias de Spot como parte de la configuración de grupos de nodos administrados por Spot. La diversificación de instancias de Spot ayuda a obtener capacidad a partir de varios grupos de instancias de Spot. Esta capacidad sirve tanto para ampliar como para reemplazar las instancias de Spot que podrían recibir una notificación de finalización de la instancia de Spot.

Si los grupos de nodos Spot de su clúster deben aprovisionarse con tipos de instancias que cumplan con una proporción de 1 vCPU : 4 GB de RAM, diversifique sus grupos de instancias de Spot. Diversifique sus grupos de instancias mediante una de las siguientes estrategias:

  • Cree varios grupos de nodos, cada uno con tamaños diferentes. Por ejemplo, un grupo de nodos de 4 vCPU y 16 GB de RAM, y otro grupo de nodos de 8 vCPU y 32 GB de RAM.
  • Implemente la diversificación de instancias dentro de los grupos de nodos. Para ello, seleccione una combinación de tipos y familias de instancias de diferentes grupos de instancias de Spot que cumplan con los mismos criterios de memoria y vCPU.

Utilice amazon-ec2-instance-selector para seleccionar los tipos y las familias de instancias pertinentes con una cantidad suficiente de vCPU y RAM. Para ello, ejecute el siguiente 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

Ejemplo:

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

El comando anterior muestra una lista similar a la siguiente. Use estas instancias como parte de uno de sus grupos de nodos.

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

Nota: Los tipos de instancias de los grupos de nodos existentes no se pueden cambiar mediante la API de Amazon EKS. Se recomienda crear un nuevo grupo de nodos de Spot con los tipos de instancias deseados. Ingrese lo siguiente en el comando eksctl create nodegroup. Tenga en cuenta el nuevo señalador eksctl, que indica que un grupo de nodos ejecuta instancias de 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>

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año