Esta página explica cómo crear y administrar máquinas virtuales puntuales , incluido lo siguiente:
- Cómo crear, iniciar e identificar máquinas virtuales puntuales
- Cómo detectar, manejar y probar la preferencia de máquinas virtuales puntuales
- Mejores prácticas para máquinas virtuales puntuales
Las máquinas virtuales puntuales son instancias de máquinas virtuales (VM) con el modelo de aprovisionamiento puntual . Las máquinas virtuales spot están disponibles con un descuento de hasta el 60 % y el 91 % en comparación con el precio de las máquinas virtuales estándar. Sin embargo, Compute Engine podría reclamar los recursos adelantándose a las VM puntuales en cualquier momento. Las máquinas virtuales puntuales se recomiendan solo para aplicaciones tolerantes a fallas que puedan soportar la preferencia de máquinas virtuales. Asegúrese de que su aplicación pueda manejar la preferencia antes de decidir crear máquinas virtuales puntuales.
Antes de comenzar
- Lea la documentación conceptual para Spot VM :
- Revise las limitaciones y los precios de las máquinas virtuales de spot.
- Para evitar que las máquinas virtuales Spot consuman sus cuotas para las CPU, GPU y discos de las máquinas virtuales estándar, considere solicitar una cuota interrumpible para las máquinas virtuales Spot.
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
- Modelo de aprovisionamiento de VM configurado en Spot en la consola de Google Cloud
-
--provisioning-model=SPOT
en la CLI de gcloud -
"provisioningModel": "SPOT"
en la API de Compute Engine En la consola de Google Cloud, vaya a la página Crear una instancia .
En el menú de navegación, haga clic en Avanzado . En el panel Avanzado que aparece, complete los siguientes pasos:
- En la sección Modelo de aprovisionamiento , seleccione Spot en la lista de modelos de aprovisionamiento de VM .
Opcional: Para seleccionar la acción de terminación que ocurre cuando Compute Engine se adelanta a la VM, completa los siguientes pasos:
- Expanda la sección de configuración avanzada del modelo de aprovisionamiento de VM .
- En la lista Al terminar VM , seleccione una de las siguientes opciones:
- Para detener la máquina virtual durante la preferencia, seleccione Detener (predeterminado).
- Para eliminar la VM durante la preferencia, seleccione Eliminar .
Opcional: especifique otras opciones de configuración. Para obtener más información, consulte Opciones de configuración durante la creación de instancias .
Para crear e iniciar la VM, haga clic en Crear .
-
VM_NAME
: nombre de la nueva VM. -
TERMINATION_ACTION
: Opcional: especifica qué acción tomar cuando Compute Engine se adelanta a la VM, ya seaSTOP
(comportamiento predeterminado) oDELETE
. -
VM_NAME
: nombre de la nueva VM. -
IMAGE
: especifique uno de los siguientes:-
IMAGE
: una versión específica de una imagen pública o de la familia de imágenes. Por ejemplo, una imagen específica es--image=debian-10-buster-v20200309
. - Una familia de imágenes . Esto crea la máquina virtual a partir de la imagen del sistema operativo más reciente y no obsoleta. Por ejemplo, si especifica
--image-family=debian-10
, Compute Engine crea una VM a partir de la última versión de la imagen del sistema operativo en la familia de imágenes de 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 imagen. -
MACHINE_TYPE
: el tipo de máquina predefinido o personalizado para la nueva VM. TERMINATION_ACTION
: Opcional: especifica qué acción tomar cuando Compute Engine se adelanta a la VM, ya seaSTOP
(comportamiento predeterminado) oDELETE
.Para obtener una lista de los tipos de máquinas disponibles en una zona, use el comando
gcloud compute machine-types list
con la marca--zones
.-
PROJECT_ID
: la identificación 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 utilizará para la nueva VM. -
MACHINE_TYPE
: el tipo de máquina predefinido o personalizado para 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 imagen. -
IMAGE
: especifique uno de los siguientes:- 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
esIMAGE_PROJECT
. - Una familia de imágenes . Esto crea la máquina virtual a partir de la imagen del sistema operativo más reciente y no obsoleta. Por ejemplo, si especifica
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
dondedebian-cloud
esIMAGE_PROJECT
, Compute Engine crea una VM a partir de la última versión de la imagen del sistema operativo en 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 tomar cuando Compute Engine se adelanta a la VM, ya seaSTOP
(comportamiento predeterminado) oDELETE
. Vaya a la página de instancias de VM .
Haga clic en el nombre de la máquina virtual que desea identificar. Se abre la página de detalles de la instancia de VM .
Vaya 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 VM está configurado en Spot , la VM es una VM Spot.
- Al finalizar la VM indica qué acción tomar cuando Compute Engine se adelanta a la VM, ya sea detenerla o eliminarla .
- De lo contrario, si el modelo de aprovisionamiento de VM está configurado en Estándar o — :
- Si la opción Preemptibility está configurada en On , la VM es una VM interrumpible.
- De lo contrario, la VM es una VM estándar.
- Si el modelo de aprovisionamiento de VM está configurado en Spot , la VM es una VM Spot.
Si el resultado incluye el campo
provisioningModel
establecido enSPOT
, similar al siguiente, la VM es una VM Spot.... scheduling: ... provisioningModel: SPOT instanceTerminationAction: TERMINATION_ACTION ...
donde
TERMINATION_ACTION
indica qué acción tomar cuando Compute Engine se adelanta a la VM, ya sea 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
establecido enstandard
o si el resultado omite el campoprovisioningModel
:- Si la salida incluye el campo
preemptible
establecido entrue
, la VM es una máquina virtual interrumpible. - De lo contrario, la VM es una VM estándar.
- Si la salida incluye el campo
-
PROJECT_ID
: la identificación del proyecto en el que se encuentra la VM. -
ZONE
: la zona donde se encuentra la VM. -
VM_NAME
: el nombre de la VM que desea verificar. Si el resultado incluye el campo
provisioningModel
establecido enSPOT
, similar al siguiente, la VM es una VM Spot.{ ... "scheduling": { ... "provisioningModel": "SPOT", "instanceTerminationAction": "TERMINATION_ACTION" ... }, ... }
donde
TERMINATION_ACTION
indica qué acción tomar cuando Compute Engine se adelanta a la VM, ya sea 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
establecido enstandard
o si el resultado omite el campoprovisioningModel
:- Si la salida incluye el campo
preemptible
establecido entrue
, la VM es una máquina virtual interrumpible. - De lo contrario, la VM es una VM estándar.
- Si la salida incluye el campo
- Maneje la preferencia con un script de apagado .
- Detectar apropiación de máquinas virtuales puntuales .
- Configuración de preferencia de prueba .
La VM se creó con al menos acceso de lectura/escritura a Cloud Storage. Para obtener instrucciones sobre cómo crear una máquina virtual con los ámbitos adecuados, consulte la documentación de autenticación .
Tienes un depósito de Cloud Storage existente y permiso para escribir en él.
Copie o descargue el script de apagado:
Copie el script de apagado anterior después de reemplazar lo siguiente:
-
PROGRAM_NAME
es el nombre del proceso o programa que desea cerrar. Por ejemplo,apache2
onginx
. -
LOCAL_USER
es el nombre de usuario con el que inició sesión en la máquina virtual. -
BUCKET_NAME
es el nombre del depósito de Cloud Storage donde desea guardar el archivo de punto de control del programa. Tenga en cuenta que el nombre del depósito no comienza congs://
en este caso.
-
Descargue el script de apagado en su estación de trabajo local y luego reemplace las siguientes variables en el archivo:
-
[PROGRAM_NAME]
es el nombre del proceso o programa que desea cerrar. Por ejemplo,apache2
onginx
. -
[LOCAL_USER]
es el nombre de usuario con el que inició sesión en la máquina virtual. -
[BUCKET_NAME]
es el nombre del depósito de Cloud Storage donde deseas guardar el archivo de punto de control del programa. Tenga en cuenta que el nombre del depósito no comienza congs://
en este caso.
-
Agregue el script de apagado a una máquina virtual nueva o existente .
En la consola de Google Cloud, vaya a la página Registros .
Seleccione su proyecto y haga clic en Continuar .
Agregue
compute.instances.preempted
al filtro por etiqueta o campo de búsqueda de texto .Opcionalmente, también puede ingresar un nombre de VM si desea ver las operaciones de preferencia para una VM específica.
Presione Intro para aplicar los filtros especificados. La consola de Google Cloud actualiza la lista de registros para mostrar solo las operaciones en las que se adelantó una VM.
Seleccione una operación en la lista para ver detalles sobre la VM que fue reemplazada.
-
SYSTEM_EVENT
: el evento del sistema del resultado del comandogcloud compute operations list
; por ejemplo,systemevent-xxxxxxxx
. -
ZONE
: la zona del evento del sistema; por ejemplo,us-central1-f
. -
PROJECT_ID
: una identificación del proyecto . -
ZONE
: una zona . Utilice plantillas de instancias . En lugar de crear máquinas virtuales de spot una a la vez, puede usar plantillas de instancias para crear varias máquinas virtuales de spot con las mismas propiedades. Se requieren plantillas de instancia para usar MIG. Como alternativa, también puede crear varias máquinas virtuales de spot utilizando la API de instancia masiva .
Utilice MIG para distribuir regionalmente y recrear automáticamente máquinas virtuales puntuales . Utilice MIG para hacer que las cargas de trabajo en máquinas virtuales puntuales sean más flexibles y resistentes. Por ejemplo, utilice MIG regionales para distribuir máquinas virtuales en varias zonas, lo que ayuda a mitigar los errores de disponibilidad de recursos. Además, utilice la reparación automática para recrear automáticamente las máquinas virtuales puntuales después de que se aprueben.
Elija tipos de máquinas más pequeñas . Los recursos para máquinas virtuales puntuales provienen del exceso y del respaldo Google Cloud capacidad. La capacidad para máquinas virtuales puntuales suele ser más fácil de conseguir para tipos de máquinas más pequeñas , es decir, tipos de máquinas con menos recursos, como vCPU y memoria. Es posible que encuentre más capacidad para máquinas virtuales puntuales seleccionando un tipo de máquina personalizada más pequeña, pero la capacidad es aún mayor para tipos de máquinas predefinidas más pequeñas. Por ejemplo, en comparación con la capacidad para el tipo de máquina predefinido
n2-standard-32
, la capacidad para el tipo de máquina personalizadan2-custom-24-96
es más probable, pero la capacidad para el tipo de máquina predefinidon2-standard-16
es aún más probable.Ejecute grandes grupos de máquinas virtuales puntuales durante las horas de menor actividad . la carga en Google Cloud Los centros de datos varían según la ubicación y la hora del día, pero generalmente son más bajos durante las noches y los fines de semana. Como tal, las noches y los fines de semana son los mejores momentos para ejecutar grandes grupos de máquinas virtuales Spot.
Diseñe sus aplicaciones para que sean tolerantes a fallas y apropiaciones . Es importante estar preparado para el hecho de que hay cambios en los patrones de preferencia en diferentes momentos. Por ejemplo, si una zona sufre una interrupción parcial, se podría sustituir una gran cantidad de máquinas virtuales puntuales para dejar espacio a las máquinas virtuales estándar que deben trasladarse como parte de la recuperación. En ese pequeño lapso de tiempo, la tasa de preferencia sería muy diferente a la de cualquier otro día. Si su aplicación supone que las apropiaciones siempre se realizan en grupos pequeños, es posible que no esté preparado para tal evento.
Vuelva a intentar crear máquinas virtuales puntuales que hayan sido reemplazadas . Si sus máquinas virtuales Spot han sido reemplazadas, intente crear nuevas máquinas virtuales Spot una o dos veces antes de recurrir a las máquinas virtuales estándar. Dependiendo de sus requisitos, podría ser una buena idea combinar máquinas virtuales estándar y máquinas virtuales puntuales en sus clústeres para garantizar que el trabajo avance a un ritmo adecuado.
Utilice scripts de apagado . Administre los avisos de apagado y prevención con una secuencia de comandos de apagado que puede guardar el progreso de un trabajo para que pueda continuar donde lo dejó, en lugar de comenzar desde cero.
- Conéctese a su instancia de VM .
- Obtenga más información sobre los scripts de apagado .
- Obtenga información sobre cómo limitar el tiempo de ejecución de una máquina virtual .
- Obtenga más información sobre las plantillas de instancias .
- Obtenga más información sobre los MIG .
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Crear una máquina virtual puntual
Cree una máquina virtual puntual mediante la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine. Una máquina virtual puntual es cualquier máquina virtual configurada para utilizar el modelo de aprovisionamiento puntual:
Consola
nube de gcloud
Para crear una máquina virtual desde la CLI de gcloud, use el comando
gcloud compute instances create
. Para crear máquinas virtuales puntuales, debe incluir el indicador--provisioning-model=SPOT
. Opcionalmente, también puede especificar una acción de terminación para las máquinas virtuales de spot al incluir también el indicador--instance-termination-action
.gcloud compute instances create VM_NAME \ --provisioning-model=SPOT \ --instance-termination-action=TERMINATION_ACTION
Reemplace lo siguiente:
Para obtener más información sobre las opciones que puede especificar al crear una VM, consulte Opciones de configuración durante la creación de instancias . Por ejemplo, para crear máquinas virtuales puntuales con una imagen y un tipo de máquina específicos, utilice 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
Reemplace lo siguiente:
Terraformar
Puede utilizar un recurso de Terraform para crear una instancia puntual utilizando un bloque de programación
DESCANSAR
Para crear una VM desde la API de Compute Engine, usa el método
instances.insert
. Debe especificar un tipo de máquina y un nombre para la VM. Opcionalmente, también puede especificar una imagen para el disco de arranque.Para crear máquinas virtuales de spot, debe incluir el campo
"provisioningModel": spot
Opcionalmente, también puede especificar una acción de terminación para máquinas virtuales de spot al incluir también 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" }, ... }Reemplace lo siguiente:
Para obtener más información sobre las opciones que puede especificar al crear una VM, consulte Opciones de configuración durante la creación de instancias .
Ir
Java
Pitón
Para crear varias máquinas virtuales puntuales con las mismas propiedades, puede crear una plantilla de instancia y usarla para crear un grupo de instancias administrado (MIG) . Para obtener más información, consulte las mejores prácticas .
Iniciar máquinas virtuales puntuales
Al igual que otras máquinas virtuales, las máquinas virtuales puntuales comienzan con su creación. Del mismo modo, si se detienen las máquinas virtuales puntuales, puede reiniciarlas para reanudar el estado
RUNNING
. Puede detener y reiniciar las máquinas virtuales spot con preferencia tantas veces como desee, siempre que haya capacidad. Para obtener más información, consulte Ciclo de vida de la instancia de VM .Si Compute Engine detiene una o más máquinas virtuales puntuales en un grupo de instancias administradas (MIG) de escalado automático o en un clúster de Google Kubernetes Engine (GKE), el grupo reinicia las máquinas virtuales cuando los recursos vuelven a estar disponibles.
Identificar el modelo de aprovisionamiento de una VM y la acción de terminación
Identifique el modelo de aprovisionamiento de una máquina virtual para ver si es una máquina virtual estándar, una máquina virtual puntual o una máquina virtual interrumpible . Para una máquina virtual puntual, también puede identificar la acción de terminación . Puedes identificar el modelo de aprovisionamiento y la acción de terminación de una VM mediante la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.
Consola
nube de gcloud
Para describir una VM desde la CLI de gcloud, usa el comando
gcloud compute instances describe
:gcloud compute instances describe VM_NAME
donde
VM_NAME
es el nombre de la VM que desea verificar.En el resultado, verifique el campo
scheduling
para identificar la VM:DESCANSAR
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
Reemplace lo siguiente:
En el resultado, verifique el campo
scheduling
para identificar la VM:Ir
Java
Pitón
Administrar la preferencia de Spot VM
Para aprender cómo administrar la preferencia de Spot VM, revise las siguientes secciones:
Manejar la preferencia con un script de apagado
Cuando Compute Engine se apropia de una VM puntual, puedes usar una secuencia de comandos de apagado para intentar realizar acciones de limpieza antes de que se apruebe la VM. Por ejemplo, puede detener cómodamente un proceso en ejecución y copiar un archivo de punto de control en Cloud Storage . En particular, la duración máxima del período de cierre es más corta para un aviso de preferencia que para un cierre iniciado por el usuario. Para obtener más información sobre el período de apagado de un aviso de preferencia, consulte Proceso de preferencia en la documentación conceptual para máquinas virtuales puntuales.
El siguiente es un ejemplo de una secuencia de comandos de apagado que puede agregar a una máquina virtual de spot en ejecución o al crear una nueva máquina virtual de spot. Este script se ejecuta cuando la VM comienza 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, el script realiza una carga paralela de un archivo de punto de control en un depósito 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."
Este script asume lo siguiente:
Para agregar este script a una VM, configúrelo para que funcione con una aplicación en su VM y agréguelo a los metadatos de la VM.
Detectar preferencia de máquinas virtuales puntuales
Determine si Compute Engine se adelantó a las VM puntuales mediante la consola de Google Cloud , la CLI de gcloud o la API de Compute Engine .
Consola
Puede verificar si una VM fue reemplazada revisando los registros de actividad del sistema.
nube de gcloud
Usa el comando
gcloud compute operations list
con un parámetro de filtro para obtener una lista de eventos de preferencia en tu proyecto.gcloud compute operations list \ --filter="operationType=compute.instances.preempted"
Opcionalmente, puede utilizar parámetros de filtro adicionales para ampliar el alcance de los resultados. Por ejemplo, para ver eventos de preferencia solo para instancias dentro de un grupo de instancias administrado, use 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 para los nombres de todas las VM en este grupo de instancias administrado.El resultado es 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
Un tipo de operación de
compute.instances.preempted
indica que la instancia de VM fue reemplazada. Puedes usar el comandogcloud compute operations describe
para obtener más información sobre una operación de preferencia específica.gcloud compute operations describe SYSTEM_EVENT \ --zone=ZONE
Reemplace lo siguiente:
El resultado es 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. ...
DESCANSAR
Para obtener una lista de operaciones recientes del sistema para un proyecto y una zona específicos, utilice el método
zoneOperations.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations
Reemplace lo siguiente:
Opcionalmente, para que la respuesta muestre solo operaciones de preferencia, puede agregar un filtro a su solicitud de API:
operationType="compute.instances.preempted"
Como alternativa, para ver las operaciones de preferencia para una máquina virtual específica, agregue un parámetro
targetLink
al filtro:operationType="compute.instances.preempted" AND targetLink="https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Reemplace lo siguiente: +
PROJECT_ID
: la identificación del proyecto . +ZONE
: la zona . +VM_NAME
: el nombre de una VM específica en esta zona y proyecto.La respuesta contiene una lista de operaciones recientes. Por ejemplo, una preferencia es similar a la 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.", ... }
Alternativamente, puede determinar si una VM fue reemplazada desde dentro de la propia VM. Esto es útil si deseas manejar un apagado debido a una preferencia de Compute Engine de manera diferente a un apagado normal en un script de apagado . Para hacer esto, simplemente verifique en el servidor de metadatos el valor
preempted
en los metadatos predeterminados de su VM.Por ejemplo, use
curl
desde su VM 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 se adelantó a la VM; de lo contrario, esFALSE
.Si desea utilizar esto fuera de un script de apagado, puede agregar
?wait_for_change=true
a la URL. Esto realiza una solicitud HTTP GET bloqueada que solo regresa cuando los metadatos han cambiado y la VM ha sido reemplazada.curl "http://metadata.google.internal/computeMetadata/v1/instance/preempted?wait_for_change=true" -H "Metadata-Flavor: Google" TRUE
Configuración de preferencia de prueba
Puede ejecutar eventos de mantenimiento simulados en sus máquinas virtuales para obligarlas a apropiarse. Utilice esta función para probar cómo sus aplicaciones manejan las máquinas virtuales puntuales. Lea Simular un evento de mantenimiento de host para aprender cómo probar eventos de mantenimiento en sus instancias.
También puede simular una preferencia de VM deteniendo la instancia de VM , lo que se puede utilizar en lugar de simular un evento de mantenimiento y evita los límites de cuota.
Mejores prácticas
A continuación se presentan algunas prácticas recomendadas que le ayudarán a aprovechar al máximo las máquinas virtuales Spot.
¿Qué sigue?
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-04-17 (UTC).
-