Inicia y detén una VM


En esta página, se describe cómo iniciar y detener una instancia de máquina virtual (VM). Ten en cuenta que Compute Engine usa STOP y TERMINATE indistintamente. Para suspender y reanudar una VM, lee Suspende y reanuda una VM. Para obtener más información sobre cómo detener y suspender una VM, consulta Ciclo de vida de la instancia de VM.

Si ya no la necesitas, puedes detenerla de forma temporal y reiniciarla más tarde. Una VM detenida conserva sus discos persistentes, sus IP internas y sus direcciones MAC. Sin embargo, la VM cierra el SO invitado y pierde su estado de la aplicación. Si necesitas retener el SO invitado y el estado de la aplicación, suspende la VM. Básicamente, una VM detenida se restablece a su estado de encendido y no se guardan los datos. Detén una VM si deseas cambiar el tipo de máquina, agregar o quitar discos adjuntos, cambiar la plataforma de CPU mínima, agregar o quitar GPU o aplicar recomendaciones de tipo de máquina.

Detener una VM hace que Compute Engine envíe la señal de cierre de ACPI a la VM. Los sistemas operativos (SO) invitados modernos están configurados para realizar un cierre ordenado antes de apagarse en respuesta a la señal de apagado. Compute Engine espera a que el SO invitado finalice el cierre y, luego, pasa la VM al estado TERMINATED.

Antes de comenzar

Restricciones

No puedes detener y reiniciar una VM con una SSD local conectado. Sin embargo, si la VM usa SSD locales, Compute Engine no evita que se cierre la VM desde el SO invitado. Si cierras una VM con SSD locales a través del SO invitado, no puedes reiniciar la VM y los datos en la SSD local se perderán. Asegúrate de migrar los datos importantes del SSD local a un disco persistente o a otra VM antes de borrar la VM.

Facturación

Las VM en estado TERMINATED no generan costos de uso por segundo y no cuentan para tu cuota de CPU regional. Sin embargo, se cobran los recursos conectados a la VM, como los discos persistentes y las direcciones IP externas. hasta que se borren. Para que no se te cobre por los recursos vinculados, puedes volver a configurar una VM detenida a fin de desconectarlos y, luego, borrarlos.

Puedes optar por detener las VM que no usas y evitar que se te cobre por las VM que no están activas. Cuando estés listo, puedes volver a iniciar las VM con las mismas propiedades, metadatos y recursos.

Detén una VM

Para detener una VM, usa Google Cloud Console, la herramienta de gcloud o la API de Compute Engine.

Console

  1. En Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Selecciona una o más VM que quieras detener.

  3. Haz clic en Detener.

gcloud

Para detener una VM, usa el comando gcloud compute instances stop y especifica una o más VM que quieras detener, como sigue:

gcloud compute instances stop VM_NAME

Reemplaza VM_NAME por el nombre de la VM que deseas detener.

API

Para detener una VM, crea una solicitud POST mediante el método instances.stop:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto en el que se encuentra tu VM.
  • ZONE: La zona en la que se encuentra la VM.
  • VM_NAME: El nombre de la VM que deseas detener.

Una VM TERMINATED todavía existe con todos sus ajustes de configuración y metadatos, pero pierde sus datos en memoria y el estado de la máquina virtual. Todos los recursos vinculados a la VM interrumpida permanecen así hasta que los desvincules de forma manual o borres la VM.

Cuando una VM está en estado TERMINATED, puedes reiniciarla o borrarla. Si no planeas reiniciar la VM, bórrala.

Detén una VM a través del SO

De manera opcional, puedes detener una VM a través del SO invitado con el comando sudo shutdown -h now o sudo poweroff. Usa estos comandos para detener una VM que usa SSD locales. Ejecuta uno de estos comandos cuando accedas a la VM:

sudo shutdown -h now
sudo poweroff

Reinicia una VM detenida que no tiene un disco encriptado

Para reiniciar una VM detenida, usa el método instances().start. Este método inicia una VM detenida que tiene el estado TERMINATED.

El método start reinicia una VM en estado TERMINATED, mientras que métodos como reset() y sudo reboot solo funcionan con las VM que se encuentran en ejecución en el momento. Casi todas las VM, incluidas las VM interrumpibles, se pueden reiniciar si están en estado TERMINATED.

Console

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Selecciona una o más VM que desees iniciar.

  3. Haz clic en Iniciar/Reanudar.

gcloud

Para iniciar una VM, usa el comando gcloud compute instances start y especifica una o más VM que desees iniciar:

gcloud compute instances start VM_NAME

Reemplaza VM_NAME por el nombre de la VM que deseas iniciar.

API

Para iniciar una VM, crea una solicitud POST mediante el método instances.start:

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto en el que se encuentra tu VM.
  • ZONE: La zona en la que se encuentra la VM.
  • VM_NAME: El nombre de la VM que deseas iniciar.

A fin de reiniciar la VM con las bibliotecas cliente, crea una solicitud para el método instances().start:

def restartInstance(auth_http, gce_service):
  request = gce_service.instances().start(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

Reinicia una VM que tenga discos encriptados

Si la VM que quieres reiniciar usa claves de encriptación proporcionadas por el cliente, debes ingresarlas cuando intentes reiniciar la VM.

Console

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Selecciona la VM que deseas iniciar.

  3. Haz clic en Iniciar/Reanudar. Se abre una ventana donde puedes especificar claves de encriptación para los dispositivos que estén conectados a esta VM.

  4. Especifica las claves de encriptación para cada uno de los discos encriptados conectados a esta VM.

  5. Haz clic en Iniciar para iniciar la VM.

gcloud

Para iniciar una VM que usa claves de encriptación, usa el comando gcloud compute instances start con la marca --csek-key-file. Si usas una clave unida con RSA, usa el comando gcloud beta:

gcloud compute instances start VM_NAME \
    --csek-key-file ENCRYPTION_KEY_FILE

Reemplaza lo siguiente:

  • VM_NAME: Es el nombre de la VM que deseas iniciar.
  • ENCRYPTION_KEY_FILE: Es la ruta de acceso relativa al archivo JSON que contiene la clave de encriptación Esta clave se usa para encriptar los discos persistentes conectados a la VM. Para obtener más información, consulta el formato de archivo de claves de encriptación.

API

Para iniciar una VM que tiene claves de encriptación, crea una solicitud POST con el método instances.startWithEncryptionKey:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/startWithEncryptionKey
    {
      "disks": [
        {
           "source": "DISK_URL",
           "diskEncryptionKey": {
             "ENCRYPTION_TYPE": "ENCRYPTION_KEY"
           }
        }
      ]
    }
 

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto en el que se encuentra tu VM.
  • ZONE: La zona en la que se encuentra la VM.
  • VM_NAME: Es el nombre de la VM que deseas iniciar.
  • DISK_URL: Es la URL del recurso que corresponde al nombre del recurso completo del disco adjunto que se encripta con una clave de encriptación proporcionada por el cliente.
  • ENCRYPTION_TYPE: el tipo de encriptación del disco que usas: rawKey, kmsKeyName o rsaEncryptedKey. Cuando uses rsaEncryptedKey, debes usar la API Beta en lugar de la API v1.
  • ENCRYPTION_KEY: Es la clave de encriptación que usas para encriptar los discos persistentes conectados a la VM. Las claves de tipo rawKey o rsaEncryptedKey deben estar codificadas en base64. Para preparar una clave de tipo rsaEncryptedKey, sigue las instrucciones que se indican en Cómo unir claves RSA.

Restablece una VM

El restablecimiento de una VM es similar al proceso de reinicio forzado de tu computadora, en el que puedes presionar un botón de restablecimiento o mantener presionado el botón de encendido. Cuando se restablece una VM, se borra de manera forzosa el contenido de la memoria de la máquina y se restablece la VM a su estado inicial. No se realiza un cierre ordenado del sistema operativo invitado. A lo largo de este proceso, la VM permanece en el estado RUNNING.

Para restablecer una VM en ejecución, Google Cloud Console, la herramienta de gcloud o la API de Compute Engine.

Console

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Selecciona una o más VM que desees restablecer.

  3. Haz clic en Restablecer.

gcloud

Para restablecer una VM en ejecución, usa el comando gcloud compute instances reset y especifica una o más VM que quieras restablecer:

gcloud compute instances reset VM_NAME

Reemplaza VM_NAME por el nombre de la VM que deseas restablecer.

API

Para restablecer una VM, crea una solicitud POST con el método instances.reset:

 POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/reset

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto en el que se encuentra tu VM.
  • ZONE: La zona en la que se encuentra la VM.
  • VM_NAME: Es el nombre de la VM que deseas restablecer.

Para restablecer tu VM con bibliotecas cliente, crea una solicitud para el método instances().reset:

def resetInstance(auth_http, gce_service):
  request = gce_service.instances().reset(project="myproject", zone="us-central1-a", instance="example-instance")

  print response

Cuando ejecutas el comando reset, la operación de zona posterior muestra DONE después de que se cierra la VM.

Otros métodos de reinicio

También puedes restablecer la VM con los siguientes métodos:

  • sudo reboot (solo Linux): Llama a este método desde la VM. Este método limpia la memoria y vuelve a inicializar la VM con los metadatos, la imagen y los discos persistentes originales. Este comando no adopta ninguna versión actualizada de la imagen, y la VM conserva la misma dirección IP efímera. El procedimiento es similar al proceso de reinicio de tu computadora.
  • Reinicio de una VM de Windows: Puedes reiniciar una VM de Windows, de forma similar a sudo reboot en el ejemplo anterior, mediante el menú Inicio. En el menú Iniciar, haz clic en la flecha junto a Log off y, luego, haz clic en Reiniciar.

¿Qué sigue?