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 de forma intercambiable. Para suspender y reanudar una VM, lee Suspende y reanuda una instancia. Para obtener más información sobre cómo detener y suspender una VM, consulta Ciclo de vida de la instancia.

Puedes detener una VM temporalmente si ya no la necesitas y reiniciarla más adelante. Una VM detenida conserva sus discos persistentes, sus IP internas y sus direcciones MAC. Sin embargo, la VM cierra el sistema operativo invitado y pierde su estado de la aplicación. Básicamente, una VM detenida se restablece a su estado de encendido y no se guardan los datos. Puedes detener 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 tamaño.

Detener una VM hace que Compute Engine envíe la señal de apagado de ACPI a la VM. Los sistemas operativos 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 sistema invitado finalice el cierre y, luego, pasa la VM al estado TERMINATED.

Una VM detenida no genera cargos, pero sí generan cargos todos los recursos adjuntos a la VM. Por ejemplo, se te cobrará por los discos persistentes y las direcciones IP externas incluso si se detiene una VM. Para que no se te cobre por los recursos vinculados, puedes volver a configurar una VM detenida de modo que no use esos recursos y, luego, borrarlos.

Si necesitas retener el SO invitado y el estado de la aplicación, suspende la instancia.

Antes de comenzar

Restricciones

No puedes detener una VM con un SSD local conectado. Compute Engine no te impide apagar una VM desde el sistema operativo invitado si la VM tiene un SSD local. En su lugar, debes migrar los datos importantes del SSD local a un disco persistente o a otra VM antes de borrar la instancia por completo. Compute Engine no evita que apagues el sistema operativo invitado en una VM con un SSD local, por lo que debes tomar precauciones.

Facturación

Las VM del estado TERMINATED no se cobran por uso por segundo y no se consideran en la cuota de CPU regional. Sin embargo, todos los recursos adjuntos a la máquina virtual, como las IP estáticas y los discos persistentes, se cobran hasta que se borran.

Puedes optar por detener las VM que no estés usando y evitar que se te cobre por VM que no están activas. Cuando estés listo, puedes volver a iniciar las VM con las mismas propiedades de VM, 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 desees detener.

  3. Haz clic en Detener.

gcloud

Usa el comando instances stop y especifica una o más VM que quieras detener.

gcloud compute instances stop VM_NAME

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

API

En la API, crea una solicitud POST para detener una VM.

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 la VM adquiere el 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 sistema operativo invitado con el comando sudo shutdown -h now o sudo poweroff. Ejecuta uno de estos comandos cuando accedas a la máquina virtual:

sudo shutdown -h now
sudo poweroff

Reinicia una VM detenida que no tiene un disco encriptado

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

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

Console

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

    Ir a la página Instancias de VM

  2. Selecciona las casillas junto a una o más instancias para iniciarlas.

  3. Haz clic en Start.

gcloud

Para iniciar tus VM con gcloud compute, haz lo siguiente:

gcloud compute instances start VM_NAME

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

API

En la API, realiza una solicitud POST al siguiente URI:

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

Para obtener más información sobre este método, consulta la documentación de referencia de instances().start.

Reinicia una VM que tenga discos encriptados

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

Console

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

    Ir a la página Instancias de VM

  2. Haz clic en el nombre de la VM que quieres iniciar. Se abrirá la página de detalles de la instancia.

  3. Haz clic en el botón Iniciar (Start). 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. Haga clic en Iniciar para iniciar la VM.

gcloud

Cuando inicies la VM, proporciona la clave mediante la marca --csek-key-file y el nombre del disco. Si usas una clave unida con RSA, utiliza el componente gcloud beta:

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

Reemplaza lo siguiente:

  • INSTANCE_NAME: El nombre de la VM
  • ENCRYPTION_KEY: Es la clave de encriptación que usas para encriptar los discos persistentes conectados a la VM.

API

En la API, realiza una solicitud POST al al método instances.startWithEncryptionKey.

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

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • ZONE: la zona de esta instancia.
  • INSTANCE_NAME: El nombre de la instancia.
  • 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 instancia. Las claves de tipo rawKey o rsaEncryptedKey deben estar codificadas en base64. Se deben tomar medidas adicionales para preparar una clave de tipo rsaEncryptedKey. Para obtener más información, consulta Unión de clave RSA.
  • DISK_URL: 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.

Restablece una VM

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

Puedes restablecer una VM en ejecución con el botón Restablecer en Cloud Console, el comando instances reset en gcloud o mediante una solicitud POST a la API.

Console

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

    Ir a la página Instancias de VM

  2. Selecciona una o más VM para restablecer.

  3. Haz clic en Restablecer.

gcloud

Para restablecer tu VM con gcloud compute, haz lo siguiente:

gcloud compute instances reset VM_NAME

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

API

En la API, realiza una solicitud POST al siguiente URI, reemplazando el proyecto, la zona y el nombre de la VM de la siguiente manera:

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: El nombre de la VM que deseas restablecer.

A fin de restablecer la instancia con las 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

Para obtener más información sobre este método, consulta la documentación de referencia de instances().reset.

Luego de ejecutar el comando reset, la operación de zona posterior muestra DONE después de que la instancia se apague por completo.

Usa otros métodos de reinicio

También puedes optar por restablecer tu VM mediante 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. Esto es similar al proceso de reinicio de tu computadora.
  • Reinicia una VM de Windows: Puedes reiniciar una VM de Windows, similar a sudo reboot anterior, mediante el menú Inicio. En el menú Iniciar, haz clic en la flecha junto a Log off y, luego, haz clic en Reiniciar.
  • gcloud compute instances delete seguido de gcloud compute instances create: Este es un reinicio completamente destructivo que inicializará la VM con cualquier información que se pase en gcloud compute instances create. Luego, puedes seleccionar cualquier imagen nueva o recursos distintos que te gustarían usar. La VM reiniciada probablemente tendrá una dirección IP diferente. Con este método, se puede intercambiar la máquina física que aloja la VM.

¿Qué sigue?