Instancias puntuales

Las instancias Spot son versiones muy rebajadas de las instancias estándar. Están diseñados para utilizar los recursos informáticos disponibles para cargas de trabajo interrumpibles o sin estado. Las instancias puntuales pueden adelantarse (o desalojarse) en cualquier momento.

Con las instancias Spot, puede elegir el perfil compatible que mejor se adapte a sus características de carga de trabajo, necesidades de rendimiento y precio. Las instancias puntuales son ideales para cargas de trabajo tolerantes a fallos e interrumpibles, ya que IBM Cloud VPC se adelanta a estas instancias en función de la demanda de recursos.

Las instancias Spot son ideales para, entre otras, las siguientes cargas de trabajo.

  • Servidores de prueba de desarrollo
  • Análisis de datos
  • Reproducción de imágenes
  • Inclusión en contenedores
  • Proceso por lotes

Ventajas de las instancias puntuales

Las instancias puntuales tienen las siguientes ventajas.

  • Rentabilidad
  • Escalable: puede añadir o eliminar instancias de Spot a través de Auto scale for VPC
  • Las instancias puntuales no utilizan la cuota de instancia estándar. Las instancias Spot tienen sus propias cuotas (por defecto, 100).
  • Sin tiempo mínimo de ejecución
  • Redimensionable (hay que detener la instancia para cambiar el tamaño)

Limitaciones de las instancias puntuales

Las instancias de Spot no son compatibles con las siguientes funciones.

  • Instancias bursátiles
  • Hosts dedicados
  • Reservas

Detalles de las instancias puntuales

  • Las instancias Spot sólo admiten perfiles GPU y perfiles Flex.
  • Auto Scale y los grupos de instancias admiten instancias Spot.
  • Se admiten grupos de colocación, pero tenga en cuenta que el uso de grupos de colocación puede provocar errores de capacidad.

Las instancias puntuales no tienen garantizada la capacidad disponible. Si no hay capacidad disponible, puedes probar en otra zona o región o volver a intentarlo más tarde.

Los perfiles de instancia tienen una propiedad llamada availability_class que puede ser "standard", "spot" o ambas. Si "spot" está en la matriz de valores, puede utilizar el perfil para crear una instancia de spot.

Cuando se crea una instancia, es necesario establecer un par de campos nuevos:

  • availability.class necesita ser "spot"
  • availability_policy.preemption puede ser "detener" o "eliminar" (por defecto es "detener")

Vea el siguiente ejemplo de las propiedades en una solicitud API.

{
   "availability": {
       "class": "spot"
   },
   "availability_policy": {
       "preemption": "delete"
   },
   ...
}

Preferencia

El desalojo de una instancia Spot se produce cuando la plataforma determina que es necesario desalojar la instancia Spot. Al inicio del tanteo, se aplica la política de tanteo y comienza un periodo de gracia de tanteo de 30 segundos. Al final de este periodo de gracia, la instancia puntual se cierra forzosamente.

La política de preferencia determina el comportamiento de la instancia de subasta cuando se le da preferencia. La propiedad availability_policy.preemption cuando se añade a instancias soportadas tiene un valor de "stop" o "delete". Esta propiedad sólo se aplica a los casos puntuales en los que availability.class = spot.

  • "parada" - la instancia pasa al estado de parada cuando finaliza la tentativa. Puede volver a iniciar la instancia o eliminarla.
  • "eliminar" - la instancia se elimina cuando después de la tentativa.

Los cambios realizados en la política de preferencia durante una preferencia no se aplican hasta la siguiente preferencia.

Se le notifica una preferencia de dos maneras.

  • Se emite un comando apagado graceful dentro del sistema operativo de la instancia Spot. Este comando apagado puede ser respondido programáticamente dentro del huésped.
  • Cuando se selecciona una instancia puntual para la preferencia, se envía un registro al usuario al inicio del proceso de preferencia. Ejemplo: " instance.00002 ": "Spot instance {{.instanceID}} es seleccionado para preemption". Transcurridos 30 segundos y si la instancia puntual aún no se ha detenido, se emite un apagado forzado en el invitado. Para obtener más información sobre el registro, consulte Registro para VPC.

Las instancias puntuales que se eliminan debido a la reducción de escala con un grupo de instancias no se consideran preferentes, por lo que se ignora la política de preferencia.

Cuando una instancia puntual es adelantada, se envía un comando de apagado graceful al sistema operativo de la instancia puntual. Esta petición de apagado puede ser interceptada y se puede ejecutar un script de apagado creando el script de apagado y añadiéndolo a un archivo de servicio systemd. Encontrará un script de ejemplo en usr/local/bin/ibm-cloud-shutdown-script.sh.

#!/bin/bash
OUTPUT_FILE="/tmp/counter.out"
counter=0
while true; do
    echo "$counter" > "$OUTPUT_FILE"
    ((counter++))
    sleep 1
done

Este script es un marcador de posición para ejecutar un apagado. Para ejecutar el script desde el archivo de servicio systemd, añada la ruta a su script en el campo ExecStop del archivo de servicio, como se muestra en el siguiente ejemplo.

Ejemplo systemd archivo de servicio que se encuentra en /etc/systemd/system/ibm-cloud-shutdown-script.service:

[Unit]
Description=IBM Cloud Shutdown Script
Wants=network-online.target rsyslog.service
After=network-online.target rsyslog.service
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=true
ExecStop=/usr/local/bin/ibm-cloud-shutdown-script.sh
TimeoutStopSec=0
KillMode=process
[Install]
WantedBy=multi-user.target

El tiempo entre el comando graceful shutdown y el comando force stop subsiguiente es de 30 segundos. Por lo tanto, si un script de apagado sigue ejecutándose después de los 30 segundos, será interrumpido por la parada forzada. Este periodo de gracia de 30 segundos es el mejor intento y puede variar según las circunstancias.

Recreación de una instancia puntual mediante un grupo de instancias

Cuando una instancia puntual es adelantada, si es miembro de un grupo de instancias, entonces el grupo de instancias intenta crear una instancia puntual para reemplazar la instancia puntual adelantada. La nueva instancia de punto se crea y se adjunta a una de las subredes especificadas en la matriz de subredes del grupo de instancias.

Si desea volver a crear automáticamente una instancia de punto después de la anticipación, puede utilizar un grupo de instancias para volver a crear estas instancias de punto.

  1. Cree una plantilla de instancia que se ajuste a sus necesidades con la instancia availability.class a spot y la availability_policy.preemption a delete.

  2. Cree un grupo de instancias con la plantilla de instancias que ha creado.

    Para aumentar la probabilidad de encontrar capacidad para su instancia spot (si la capacidad está limitada en una zona), especifique varias subredes repartidas por las zonas de la región para obtener una alta disponibilidad. { :tip}

Para mantener sus instancias prevenidas en un estado detenido, entonces necesita especificar stop para la configuración de availability_policy.preemption_. Una vez que el grupo de instancias haya creado la instancia localizada, deberá enviar un mensaje a PATCH /instance_groups/{instance_group_id}/memberships/{id} y especificar false para la propiedad delete_instance_on_membership_delete.