En esta página se explica cómo crear y gestionar máquinas virtuales de Spot, entre otras cosas:
- Cómo crear, iniciar e identificar máquinas virtuales de Spot
- Cómo detectar, gestionar y probar la interrupción de máquinas virtuales de acceso puntual
- Prácticas recomendadas para las VMs de acceso puntual
Las VMs de acceso puntual son instancias de máquina virtual (VM) con el modelo de aprovisionamiento de acceso puntual. Las máquinas virtuales de acceso puntual están disponibles con un descuento de hasta el 60-91% en comparación con el precio de las máquinas virtuales estándar. Sin embargo, Compute Engine puede reclamar los recursos interrumpiendo las VMs de acceso puntual en cualquier momento. Las máquinas virtuales de acceso puntual solo se recomiendan para aplicaciones tolerantes a fallos que puedan soportar la interrupción temporal de máquinas virtuales. Asegúrate de que tu aplicación pueda gestionar la expropiación antes de decidirte a crear VMs Spot.
Antes de empezar
- Lee la documentación conceptual sobre las VMs de acceso puntual:
- Consulta las limitaciones y los precios de las VMs de acceso puntual.
- Para evitar que las máquinas virtuales Spot consuman tus cuotas de CPUs, GPUs y discos de máquinas virtuales estándar, considera solicitar cuota interrumpible para las máquinas virtuales Spot.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Crear una VM de Spot
Crea una máquina virtual de Spot con la Google Cloud consola, la CLI de gcloud o la API de Compute Engine. Una VM de acceso puntual es cualquier VM configurada para usar el modelo de aprovisionamiento de acceso puntual:
- Modelo de aprovisionamiento de la VM definido como Spot en la Google Cloud consola
--provisioning-model=SPOT
en la CLI de gcloud"provisioningModel": "SPOT"
en la API de Compute Engine
Consola
En la Google Cloud consola, ve a la página Crear una instancia.
En el menú de navegación, haz clic en Opciones avanzadas. En el panel Avanzado que aparece, sigue estos pasos:
- En la sección Modelo de aprovisionamiento, seleccione Spot en la lista Modelo de aprovisionamiento de la VM.
Opcional: Para seleccionar la acción de finalización que se produce cuando Compute Engine expulsa la VM, sigue estos pasos:
- Despliega la sección Configuración avanzada del modelo de aprovisionamiento de la VM.
- En la lista Al finalizar la VM, selecciona una de las siguientes opciones:
- Para detener la VM durante la expropiación, selecciona Detener (opción predeterminada).
- Para eliminar la VM durante la expropiación, selecciona Eliminar.
Opcional: Especifica otras opciones de configuración. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.
Para crear e iniciar la VM, haz clic en Crear.
gcloud
Para crear una VM desde la CLI de gcloud, usa el comando
gcloud compute instances create
. Para crear máquinas virtuales de acceso puntual, debes incluir la marca--provisioning-model=SPOT
. También puedes especificar una acción de finalización para las VMs de Spot incluyendo la marca--instance-termination-action
.gcloud compute instances create VM_NAME \ --provisioning-model=SPOT \ --instance-termination-action=TERMINATION_ACTION
Haz los cambios siguientes:
VM_NAME
: name de la nueva VM.TERMINATION_ACTION
: Opcional: especifica qué acción se debe llevar a cabo cuando Compute Engine desaloje la VM. Puede serSTOP
(comportamiento predeterminado) oDELETE
.
Para obtener más información sobre las opciones que puedes especificar al crear una VM, consulta Opciones de configuración durante la creación de instancias. Por ejemplo, para crear Spot VMs con un tipo de máquina e imagen específicos, usa el siguiente comando:
gcloud compute instances create VM_NAME \ --provisioning-model=SPOT \ [--image=IMAGE | --image-family=IMAGE_FAMILY] \ --image-project=IMAGE_PROJECT \ --machine-type=MACHINE_TYPE \ --instance-termination-action=TERMINATION_ACTION
Haz los cambios siguientes:
VM_NAME
: name de la nueva VM.IMAGE
: especifica una de las siguientes opciones:IMAGE
: una versión específica de una imagen pública o la familia de imágenes. Por ejemplo, una imagen concreta es--image=debian-10-buster-v20200309
.- Una familia de imágenes.
De esta forma, se crea la VM a partir de la imagen de SO más reciente que no esté obsoleta.
Por ejemplo, si especificas
--image-family=debian-10
, Compute Engine crea una VM a partir de la versión más reciente de la imagen del SO de la familia de imágenes Debian 10.
IMAGE_PROJECT
: el proyecto que contiene la imagen. Por ejemplo, si especificadebian-10
como familia de imágenes, especifiquedebian-cloud
como proyecto de imágenes.MACHINE_TYPE
: el tipo de máquina predefinido o personalizado de la nueva VM.TERMINATION_ACTION
: Opcional: especifica qué acción se debe llevar a cabo cuando Compute Engine desaloje la VM. Puede serSTOP
(comportamiento predeterminado) oDELETE
.Para obtener una lista de los tipos de máquinas disponibles en una zona, usa el comando
gcloud compute machine-types list
con la marca--zones
.
Terraform
Puedes usar un recurso de Terraform para crear una instancia de spot con un bloque de programación.
REST
Para crear una VM a partir de la API de Compute Engine, usa el método
instances.insert
. Debes especificar un tipo de máquina y un nombre para la VM. También puedes especificar una imagen para el disco de arranque.Para crear máquinas virtuales de Spot, debes incluir el campo
"provisioningModel": spot
. También puedes especificar una acción de finalización para las VMs de Spot incluyendo el campo"instanceTerminationAction"
.POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME
", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ] "scheduling": { "provisioningModel": "SPOT", "instanceTerminationAction": "TERMINATION_ACTION" }, ... }Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto del proyecto en el que se creará la VM.ZONE
: la zona en la que se creará la VM. La zona también debe admitir el tipo de máquina que se va a usar en la nueva VM.MACHINE_TYPE
: el tipo de máquina predefinido o personalizado de la nueva VM.VM_NAME
: el nombre de la nueva VM.IMAGE_PROJECT
: el proyecto que contiene la imagen. Por ejemplo, si especificafamily/debian-10
como familia de imágenes, especifiquedebian-cloud
como proyecto de imágenes.IMAGE
: especifica una de las siguientes opciones:- Una versión específica de una imagen pública. Por ejemplo, una imagen específica es
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
dondedebian-cloud
es elIMAGE_PROJECT
. - Una familia de imágenes.
De esta forma, se crea la VM a partir de la imagen de SO más reciente que no esté obsoleta.
Por ejemplo, si especificas
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
dondedebian-cloud
esIMAGE_PROJECT
, Compute Engine crea una VM a partir de la versión más reciente de la imagen del SO de la familia de imágenes de Debian 10.
- Una versión específica de una imagen pública. Por ejemplo, una imagen específica es
TERMINATION_ACTION
: Opcional: especifica qué acción se debe llevar a cabo cuando Compute Engine desaloje la VM. Puede serSTOP
(comportamiento predeterminado) oDELETE
.
Para obtener más información sobre las opciones que puedes especificar al crear una VM, consulta Opciones de configuración durante la creación de instancias.
Go
Java
Python
Para crear varias Spot VMs con las mismas propiedades, puedes crear una plantilla de instancia y usarla para crear un grupo de instancias gestionado (MIG). Para obtener más información, consulta las prácticas recomendadas.
Iniciar VMs de acceso puntual
Al igual que otras VMs, las VMs de acceso puntual se inician al crearse. Del mismo modo, si las VMs de instancia de spot se detienen, puedes reiniciarlas para que vuelvan al estado
RUNNING
. Puedes detener y reiniciar las máquinas virtuales de acceso puntual interrumpidas tantas veces como quieras, siempre que haya capacidad. Para obtener más información, consulta el artículo sobre el ciclo de vida de las instancias de máquina virtual.Si Compute Engine detiene una o varias VMs de Spot en un grupo de instancias administrado (MIG) con autoescalado o en un clúster de Google Kubernetes Engine (GKE), el grupo reinicia las VMs cuando los recursos vuelven a estar disponibles.
Identificar el modelo de aprovisionamiento y la acción de finalización de una VM
Identifica el modelo de aprovisionamiento de una VM para saber si es una VM estándar, una VM de acceso puntual o una VM interrumpible. En el caso de una máquina virtual de acceso puntual, también puedes identificar la acción de finalización. Puede identificar el modelo de aprovisionamiento y la acción de finalización de una VM mediante laGoogle Cloud consola, la CLI de gcloud o la API de Compute Engine.
Consola
Ve a la página Instancias de VM.
Haz clic en el nombre de la máquina virtual que quieras identificar. Se abrirá la página Detalles de la instancia de VM.
Ve a la sección Gestión, en la parte inferior de la página. En la subsección Políticas de disponibilidad, marque las siguientes opciones:
- Si el modelo de aprovisionamiento de la VM es Spot, la VM es una Spot VM.
- Al cancelar la VM: indica qué acción se debe llevar a cabo cuando Compute Engine cancele la VM, ya sea Detener o Eliminar la VM.
- De lo contrario, si el modelo de aprovisionamiento de VMs se define como Estándar
o —:
- Si la opción Interrumpibilidad está activada (Sí), la VM es una VM interrumpible.
- De lo contrario, la VM será una VM estándar.
- Si el modelo de aprovisionamiento de la VM es Spot, la VM es una Spot VM.
gcloud
Para describir una VM desde gcloud CLI, usa el comando
gcloud compute instances describe
:gcloud compute instances describe VM_NAME
donde
VM_NAME
es el nombre de la máquina virtual que quieres comprobar.En el resultado, comprueba el campo
scheduling
para identificar la VM:Si el resultado incluye el campo
provisioningModel
con el valorSPOT
, como en el siguiente ejemplo, la VM es una VM spot.... scheduling: ... provisioningModel: SPOT instanceTerminationAction: TERMINATION_ACTION ...
donde
TERMINATION_ACTION
indica la acción que se debe llevar a cabo cuando Compute Engine interrumpe temporalmente la VM: detener (STOP
) o eliminar (DELETE
) la VM. Si falta el campoinstanceTerminationAction
, el valor predeterminado esSTOP
.De lo contrario, si el resultado incluye el campo
provisioningModel
con el valorstandard
o si el resultado omite el campoprovisioningModel
:- Si el resultado incluye el campo
preemptible
con el valortrue
, la VM es una VM interrumpible. - De lo contrario, la VM será una VM estándar.
- Si el resultado incluye el campo
REST
Para describir una VM desde la API de Compute Engine, usa el método
instances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto del proyecto en el que se encuentra la VM.ZONE
: la zona en la que se encuentra la VM.VM_NAME
: el nombre de la VM que quieras comprobar.
En el resultado, comprueba el campo
scheduling
para identificar la VM:Si el resultado incluye el campo
provisioningModel
con el valorSPOT
, como en el siguiente ejemplo, la VM es una VM spot.{ ... "scheduling": { ... "provisioningModel": "SPOT", "instanceTerminationAction": "TERMINATION_ACTION" ... }, ... }
donde
TERMINATION_ACTION
indica la acción que se debe llevar a cabo cuando Compute Engine interrumpe temporalmente la VM: detener (STOP
) o eliminar (DELETE
) la VM. Si falta el campoinstanceTerminationAction
, el valor predeterminado esSTOP
.De lo contrario, si el resultado incluye el campo
provisioningModel
con el valorstandard
o si el resultado omite el campoprovisioningModel
:- Si el resultado incluye el campo
preemptible
con el valortrue
, la VM es una VM interrumpible. - De lo contrario, la VM será una VM estándar.
- Si el resultado incluye el campo
Go
Java
Python
Gestionar la interrupción de una máquina virtual de acceso puntual
Para saber cómo gestionar la expropiación de una VM de acceso puntual, consulta las siguientes secciones:
- Gestionar la preferencia con una secuencia de comandos de cierre.
- Detectar la interrupción de las máquinas virtuales de acceso puntual.
- Prueba los ajustes de preferencia.
Gestionar la expropiación con una secuencia de comandos de apagado
Cuando Compute Engine interrumpe temporalmente una máquina virtual de acceso puntual, puedes usar una secuencia de comandos de cierre para intentar realizar acciones de limpieza antes de que se interrumpa temporalmente la máquina virtual. Por ejemplo, puedes detener correctamente un proceso en ejecución y copiar un archivo de punto de control en Cloud Storage. Cabe destacar que la duración máxima del periodo de apagado es menor en el caso de un aviso de desalojo que en el de un apagado iniciado por el usuario. Para obtener más información sobre el periodo de apagado de una notificación de desalojo, consulta el artículo Proceso de desalojo de la documentación conceptual sobre las VMs de acceso puntual.
A continuación, se muestra un ejemplo de un script de apagado que puedes añadir a una VM de Spot en ejecución o añadir al crear una VM de Spot. Esta secuencia de comandos se ejecuta cuando la VM empieza a apagarse, antes de que el comando
kill
normal del sistema operativo detenga todos los procesos restantes. Después de detener correctamente el programa deseado, la secuencia de comandos sube en paralelo un archivo de punto de control a un segmento de Cloud Storage.#!/bin/bash MY_PROGRAM="PROGRAM_NAME" # For example, "apache2" or "nginx" MY_USER="LOCAL_USER" CHECKPOINT="/home/$MY_USER/checkpoint.out" BUCKET_NAME="BUCKET_NAME" # For example, "my-checkpoint-files" (without gs://) echo "Shutting down! Seeing if ${MY_PROGRAM} is running." # Find the newest copy of $MY_PROGRAM PID="$(pgrep -n "$MY_PROGRAM")" if [[ "$?" -ne 0 ]]; then echo "${MY_PROGRAM} not running, shutting down immediately." exit 0 fi echo "Sending SIGINT to $PID" kill -2 "$PID" # Portable waitpid equivalent while kill -0 "$PID"; do sleep 1 done echo "$PID is done, copying ${CHECKPOINT} to gs://${BUCKET_NAME} as ${MY_USER}" su "${MY_USER}" -c "gcloud storage cp $CHECKPOINT gs://${BUCKET_NAME}/" echo "Done uploading, shutting down."
En esta secuencia de comandos se da por hecho lo siguiente:
La VM se ha creado con al menos acceso de lectura y escritura a Cloud Storage. Para obtener instrucciones sobre cómo crear una VM con los ámbitos adecuados, consulta la documentación de autenticación.
Tienes un segmento de Cloud Storage y permiso para escribir en él.
Para añadir esta secuencia de comandos a una VM, configúrela para que funcione con una aplicación en su VM y añádala a los metadatos de la VM.
Copia o descarga la secuencia de comandos de apagado:
Copia la secuencia de comandos de apagado anterior después de sustituir lo siguiente:
PROGRAM_NAME
es el nombre del proceso o del programa que quieres cerrar. Por ejemplo,apache2
onginx
.LOCAL_USER
es el nombre de usuario con el que has iniciado sesión en la máquina virtual.BUCKET_NAME
es el nombre del segmento de Cloud Storage en el que quieres guardar el archivo de punto de control del programa. Ten en cuenta que, en este caso, el nombre del segmento no empieza porgs://
.
Descarga la secuencia de comandos de apagado en tu estación de trabajo local y, a continuación, sustituye las siguientes variables en el archivo:
[PROGRAM_NAME]
es el nombre del proceso o programa que quieres cerrar. Por ejemplo,apache2
onginx
.[LOCAL_USER]
es el nombre de usuario con el que has iniciado sesión en la máquina virtual.[BUCKET_NAME]
es el nombre del segmento de Cloud Storage en el que quieres guardar el archivo de punto de control del programa. Ten en cuenta que, en este caso, el nombre del segmento no empieza porgs://
.
Añade la secuencia de comandos de apagado a una VM nueva o a una VM que ya tengas.
Detectar la expropiación de máquinas virtuales de acceso puntual
Determina si Compute Engine ha desalojado las VMs de Spot mediante la Google Cloud console, CLI de gcloud o la API de Compute Engine.
Consola
Para comprobar si se ha retirado una VM, consulta los registros de actividad del sistema.
En la Google Cloud consola, ve a la página Registros.
Selecciona el proyecto y haz clic en Continuar.
Añade
compute.instances.preempted
al campo Filtrar por etiqueta o buscar texto.También puedes introducir el nombre de una VM si quieres ver las operaciones de desalojo de una VM específica.
Pulsa Intro para aplicar los filtros especificados. La Google Cloud consola actualiza la lista de registros para mostrar solo las operaciones en las que se ha retirado una VM.
Selecciona una operación de la lista para ver los detalles de la VM que se ha retirado.
gcloud
Usa el comando
gcloud compute operations list
con un parámetro filter para obtener una lista de eventos de preferencia en tu proyecto.gcloud compute operations list \ --filter="operationType=compute.instances.preempted"
Si quiere, puede usar parámetros de filtro adicionales para acotar aún más los resultados. Por ejemplo, para ver solo los eventos de desalojo de las instancias de un grupo de instancias gestionado, usa el siguiente comando:
gcloud compute operations list \ --filter="operationType=compute.instances.preempted AND targetLink:instances/BASE_INSTANCE_NAME"
donde
BASE_INSTANCE_NAME
es el nombre base especificado como prefijo de los nombres de todas las VMs de este grupo de instancias gestionado.El resultado debería ser similar al siguiente:
NAME TYPE TARGET HTTP_STATUS STATUS TIMESTAMP systemevent-xxxxxxxx compute.instances.preempted us-central1-f/instances/example-instance-xxx 200 DONE 2015-04-02T12:12:10.881-07:00
El tipo de operación
compute.instances.preempted
indica que la instancia de VM se ha desalojado. Puedes usar el comandogcloud compute operations describe
para obtener más información sobre una operación de desalojo específica.gcloud compute operations describe SYSTEM_EVENT \ --zone=ZONE
Haz los cambios siguientes:
SYSTEM_EVENT
: el evento del sistema de la salida del comandogcloud compute operations list
. Por ejemplo,systemevent-xxxxxxxx
.ZONE
: la zona del evento del sistema (por ejemplo,us-central1-f
).
El resultado debería ser similar al siguiente:
... operationType: compute.instances.preempted progress: 100 selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/operations/systemevent-xxxxxxxx startTime: '2015-04-02T12:12:10.881-07:00' status: DONE statusMessage: Instance was preempted. ...
REST
Para obtener una lista de las operaciones recientes del sistema de un proyecto y una zona concretos, usa el método
zoneOperations.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations
Haz los cambios siguientes:
PROJECT_ID
: un ID de proyecto.ZONE
: una zona.
Si quieres acotar la respuesta para que solo se muestren las operaciones de preferencia, puedes añadir un filtro a tu solicitud de la API:
operationType="compute.instances.preempted"
También puedes añadir un parámetro
targetLink
al filtro para ver las operaciones de preferencia de una VM específica:operationType="compute.instances.preempted" AND targetLink="https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Sustituye lo siguiente: +
PROJECT_ID
: el ID del proyecto. +ZONE
: la zona. +VM_NAME
: el nombre de una máquina virtual específica de esta zona y este proyecto.La respuesta contiene una lista de operaciones recientes. Por ejemplo, una expropiación se parece a lo siguiente:
{ "kind": "compute#operation", "id": "15041793718812375371", "name": "systemevent-xxxxxxxx", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f", "operationType": "compute.instances.preempted", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/instances/example-instance", "targetId": "12820389800990687210", "status": "DONE", "statusMessage": "Instance was preempted.", ... }
También puedes determinar si se ha desalojado una VM desde la propia VM. Esto es útil si quieres gestionar un cierre debido a una suspensión de Compute Engine de forma diferente a un cierre normal en una secuencia de comandos de cierre. Para ello, comprueba el valor
preempted
en los metadatos predeterminados de tu VM.Por ejemplo, usa
curl
en tu máquina virtual para obtener el valor depreempted
:curl "http://metadata.google.internal/computeMetadata/v1/instance/preempted" -H "Metadata-Flavor: Google" TRUE
Si este valor es
TRUE
, Compute Engine ha desalojado la máquina virtual; de lo contrario, esFALSE
.Si quieres usarlo fuera de una secuencia de comandos de cierre, puedes añadir
?wait_for_change=true
a la URL. Envía una solicitud HTTP GET pendiente que solo devuelve un valor cuando los metadatos han cambiado y la máquina virtual se ha retirado.curl "http://metadata.google.internal/computeMetadata/v1/instance/preempted?wait_for_change=true" -H "Metadata-Flavor: Google" TRUE
Probar la configuración de la preferencia
Puedes ejecutar eventos simulados de mantenimiento en tus máquinas virtuales para forzarlas a que se interrumpan. Usa esta función para probar cómo gestionan tus aplicaciones las VMs de spot. Consulta Simular un evento de mantenimiento del host para saber cómo probar eventos de mantenimiento en tus instancias.
Prácticas recomendadas
A continuación, se incluyen algunas prácticas recomendadas para sacar el máximo partido a las VMs esporádicas.
Usa plantillas de instancia. En lugar de crear VMs de Spot de una en una, puedes usar plantillas de instancia para crear varias VMs de Spot con las mismas propiedades. Para usar los MIGs, es necesario indicar plantillas de instancia. También puedes crear varias VMs de Spot con la API de instancias en bloque.
Usa MIGs para distribuir regionalmente y recrear automáticamente las Spot VMs. Usa grupos de instancias gestionados para que las cargas de trabajo de las máquinas virtuales de acceso puntual sean más flexibles y resilientes. Por ejemplo, usa MIGs regionales para distribuir las VMs en varias zonas, lo que ayuda a mitigar los errores de disponibilidad de recursos. Además, puedes usar la autorreparación para recrear automáticamente las VMs de Spot después de que se hayan interrumpido.
Elige tipos de máquinas más pequeños. Los recursos de las VMs de acceso puntual proceden de la capacidad Google Cloud excedente y de reserva. A menudo, es más fácil obtener capacidad para las VMs de Spot con tipos de máquinas más pequeños, es decir, tipos de máquinas con menos recursos, como vCPUs y memoria. Es posible que encuentres más capacidad para las máquinas virtuales de Spot si seleccionas un tipo de máquina personalizado más pequeño, pero es aún más probable que haya capacidad para los tipos de máquina predefinidos más pequeños. Por ejemplo, en comparación con la capacidad del
n2-standard-32
tipo de máquina predefinido, es más probable que haya capacidad para eln2-custom-24-96
tipo de máquina personalizada, pero es aún más probable que haya capacidad para eln2-standard-16
tipo de máquina predefinido.Ejecutar clústeres grandes de máquinas virtuales de acceso puntual durante las horas de menor actividad. La carga de los centros de datos de Google Cloud varía en función de la ubicación y la hora del día, pero suele ser menor por las noches y los fines de semana. Por lo tanto, las noches y los fines de semana son los mejores momentos para ejecutar grandes clústeres de VMs de spot.
Diseña tus aplicaciones para que sean tolerantes a fallos y a interrupciones. Es importante estar preparado para los cambios en los patrones de preferencia en diferentes momentos. Por ejemplo, si una zona sufre una interrupción parcial, se pueden desalojar un gran número de VMs de Spot para dejar espacio a las VMs estándar que deban moverse como parte de la recuperación. En ese breve periodo, la tasa de preferencia tendría un aspecto muy diferente al de cualquier otro día. Si tu aplicación da por hecho que las apropiaciones siempre se realizan en grupos pequeños, es posible que no esté preparada para este tipo de eventos.
Vuelve a intentar crear máquinas virtuales de acceso puntual que se hayan interrumpido. Si tus VMs de acceso puntual se han interrumpido, prueba a crear VMs de acceso puntual una o dos veces antes de volver a las VMs estándar. En función de tus requisitos, puede que sea una buena idea combinar máquinas virtuales estándar y máquinas virtuales Spot en tus clústeres para asegurarte de que el trabajo se lleva a cabo a un ritmo adecuado.
Usa secuencias de comandos de apagado. Gestiona las notificaciones de apagado y de preferencia con un script de apagado que pueda guardar el progreso de un trabajo para que pueda continuar donde lo dejó, en lugar de empezar de cero.
Siguientes pasos
- Conéctate a tu instancia de VM.
- Consulta información sobre los scripts de apagado.
- Más información sobre cómo limitar el tiempo de ejecución de una máquina virtual
- Consulta información sobre las plantillas de instancias.
- Consulta información sobre los grupos de instancias gestionados.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-11 (UTC).
-