Limita el tiempo de ejecución de las VMs en un MIG


En este documento, se describe cómo finalizar de forma automática las máquinas virtuales (VMs) en un grupo de instancias administrado (MIG) mediante la especificación de un límite de tiempo para las VMs. También se describe cómo funciona el límite de tiempo para las VMs en un MIG.

Puedes optimizar las cargas de trabajo temporales si especificas un límite de tiempo para las VMs en un MIG. Cuando una VM alcanza su límite de tiempo, el MIG la finaliza (borra) automáticamente. Limitar el tiempo de ejecución de las VMs en un MIG con un límite de tiempo ayuda a minimizar los costos y liberar la cuota.

Para obtener información sobre cómo especificar un límite de tiempo para una VM independiente, consulta Limita el tiempo de ejecución de una VM. Si quieres que un MIG agregue o borre VMs de forma automática en función de tus cargas de trabajo, consulta Aplica el ajuste de escala automático en grupos de instancias.

Antes de comenzar

  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Limita el tiempo de ejecución de las VMs en un MIG

Puedes limitar el tiempo de ejecución de las VMs en un MIG si especificas un límite de tiempo en la plantilla de instancias que se usa para el MIG. Cuando el MIG crea VMs según la plantilla, se aplica el límite de tiempo a cada VM.

Puedes especificar uno de los siguientes dos tipos de límites de tiempo:

  • Límite de tiempo como duración de la ejecución
  • Límite de tiempo como hora de finalización

Para especificar un límite de tiempo para las VMs en un MIG, sigue estos pasos:

  1. Crea una plantilla de instancias con una duración de ejecución para las VMs o con un tiempo de finalización para las VMs.

  2. Usa la plantilla de instancias para crear un MIG o actualizar un MIG existente.

Limitaciones

Crea una plantilla de instancias con una duración de ejecución para las VMs

Para finalizar de forma automática las VMs de un MIG después de que se ejecutan durante un período determinado, establece una duración máxima de ejecución (maxRunDuration) en la plantilla de instancias.

Console

  1. En la consola de Google Cloud, ve a la página Plantillas de instancia.

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias.

  3. Selecciona la ubicación de la siguiente manera:

    • Si deseas usar la plantilla de instancias entre regiones, elige Global.
    • Si deseas reducir la dependencia entre regiones, elige Regional.
  4. Si eliges regional, selecciona la región en la que deseas crear tu plantilla de instancias.

  5. En la sección Políticas de disponibilidad, expande Configuración avanzada del modelo de aprovisionamiento de VM.

  6. Selecciona la casilla de verificación Establecer un límite de tiempo para la VM.

  7. En el campo Tipo de límite de tiempo, selecciona Por horas (predeterminado) para especificar el límite de tiempo como una duración. En el siguiente campo, ingresa la duración en horas.

  8. En la lista Finalización de VM, selecciona Borrar.

  9. En los siguientes campos, acepta los valores predeterminados o modifícalos según sea necesario.

  10. Haz clic en Crear.

gcloud

Usa el comando instance-templates create. Para borrar automáticamente las VMs después de un período específico, incluye la marca --max-run-duration y establece la marca --instance-termination-action en DELETE de la siguiente manera:

  gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --max-run-duration=DURATION \
      --instance-termination-action=DELETE

Reemplaza lo siguiente:

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias.
  • DURATION: la duración de la que deseas que se ejecuten las VMs. El MIG borra automáticamente la VM después de la duración especificada.

    Formatea la duración en forma de la cantidad de días, horas, minutos y segundos seguidos de d, h, m y s, respectivamente. Por ejemplo, especifica 30m para una duración de 30 minutos o especifica 1d2h3m4s para una duración de 1 día, 2 horas, 3 minutos y 4 segundos. La duración mínima es de 30 segundos (30s) y la máxima es de 120 días (120d).

Terraform

Para crear una plantilla de instancias con Terraform, usa el recurso google_compute_instance_template. Para crear una plantilla de instancias que borre automáticamente las VMs después de un período específico, debes incluir el argumento max_run_duration y establecer el argumento instance_termination_action en DELETE.

Para obtener más información, consulta la documentación de Terraform para el recurso google_compute_instance_template.

REST

Usa el método instanceTemplates.insert. Para borrar automáticamente las VMs después de un período específico, incluye el campo maxRunDuration y establece el campo instanceTerminationAction en DELETE de la siguiente manera:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "maxRunDuration":
      {
        "seconds": DURATION
      },
      "instanceTerminationAction": "DELETE"
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que deseas crear la plantilla de instancias.
  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina predefinido o personalizado de las VMs del grupo.
  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen; por ejemplo, debian-cloud.
  • IMAGE o IMAGE_FAMILY: especifica una de las siguientes opciones:

    • IMAGE: una versión específica de la imagen de SO; por ejemplo, debian-10-buster-v20200309.

    • IMAGE_FAMILY: Es una familia de imágenes. Esto especifica la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas family/debian-10, se usa la versión más reciente de la familia de imágenes de Debian 10.

  • DURATION: la duración de la que deseas que se ejecuten las VMs. El MIG borra automáticamente la VM después de la duración especificada.

    Formatea la duración en forma de la cantidad de días, horas, minutos y segundos seguidos de d, h, m y s, respectivamente. Por ejemplo, especifica 30m para una duración de 30 minutos o especifica 1d2h3m4s para una duración de 1 día, 2 horas, 3 minutos y 4 segundos. La duración mínima es de 30 segundos (30s) y la máxima es de 120 días (120d).

Crea una plantilla de instancias con un tiempo de cancelación para las VMs

Para finalizar de forma automática las VMs de un MIG en un momento específico, establece una hora de finalización (terminationTime) en la plantilla de instancias. Puedes establecer una fecha y una hora en las que deseas que un MIG finalice las VMs.

Console

  1. En la consola de Google Cloud, ve a la página Plantillas de instancia.

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias.

  3. Selecciona la ubicación de la siguiente manera:

    • Si deseas usar la plantilla de instancias entre regiones, elige Global.
    • Si deseas reducir la dependencia entre regiones, elige Regional.
  4. Si eliges regional, selecciona la región en la que deseas crear tu plantilla de instancias.

  5. En la sección Políticas de disponibilidad, expande Configuración avanzada del modelo de aprovisionamiento de VM.

  6. En el campo Tipo de límite de tiempo, selecciona Por fecha para especificar el límite de tiempo como una hora y una fecha. En el siguiente campo, haz clic en Seleccionar fecha y hora y selecciona la fecha, hora y zona horaria para la finalización automática.

  7. En la lista Finalización de VM, selecciona Borrar.

  8. En los siguientes campos, acepta los valores predeterminados o modifícalos según sea necesario.

  9. Haz clic en Crear.

gcloud

Usa el comando instance-templates create. Para borrar automáticamente las VMs en un momento específico, incluye la marca --termination-time y establece la marca --instance-termination-action en DELETE de la siguiente manera:

  gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --termination-time=TIME \
      --instance-termination-action=DELETE

Reemplaza lo siguiente:

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias.
  • TIME: Es la hora en la que deseas que se finalice esta VM de forma automática. El tiempo que especifiques debe ser al menos 30 segundos en el futuro y 120 días como máximo. Dale formato a la hora como una marca de tiempo RFC 3339:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Reemplaza lo siguiente:

    • YYYY-MM-DD: una fecha con formato de un año de 4 dígitos, un mes de 2 dígitos y un día de 2 dígitos, separado del mes por guiones.
    • HH:MM:SS: una hora con formato de hora de 2 dígitos con el formato de 24 horas, minutos de 2 dígitos y segundos de 2 dígitos separados por dos puntos
    • OFFSET: la zona horaria con formato como una compensación del horario universal coordinado (UTC). Por ejemplo, para usar la hora estándar del Pacífico (PST), que es 8 horas antes del UTC, especifica -08:00. Como alternativa, para no usar compensación (UTC+0), especifica Z.

REST

Usa el método instanceTemplates.insert. Para borrar automáticamente las VMs en un momento específico, incluye el campo terminationTime y establece el campo instanceTerminationAction en DELETE de la siguiente manera:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "terminationTime": TIME,
      "instanceTerminationAction": "DELETE"
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que deseas crear la plantilla de instancias.
  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina predefinido o personalizado de las VMs del grupo.
  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen; por ejemplo, debian-cloud.
  • IMAGE o IMAGE_FAMILY: especifica una de las siguientes opciones:

    • IMAGE: una versión específica de la imagen de SO; por ejemplo, debian-10-buster-v20200309.

    • IMAGE_FAMILY: Es una familia de imágenes. Esto especifica la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas family/debian-10, se usa la versión más reciente de la familia de imágenes de Debian 10.

  • TIME: Es la hora en la que deseas que se finalice esta VM de forma automática. El tiempo que especifiques debe ser al menos 30 segundos en el futuro y 120 días como máximo. Dale formato a la hora como una marca de tiempo RFC 3339:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Reemplaza lo siguiente:

    • YYYY-MM-DD: una fecha con formato de un año de 4 dígitos, un mes de 2 dígitos y un día de 2 dígitos, separado del mes por guiones.
    • HH:MM:SS: una hora con formato de hora de 2 dígitos con el formato de 24 horas, minutos de 2 dígitos y segundos de 2 dígitos separados por dos puntos
    • OFFSET: la zona horaria con formato como una compensación del horario universal coordinado (UTC). Por ejemplo, para usar la hora estándar del Pacífico (PST), que es 8 horas antes del UTC, especifica -08:00. Como alternativa, para no usar compensación (UTC+0), especifica Z.

Cómo funciona el límite de tiempo para las VMs en un MIG

Cuando especificas un límite de tiempo para las VMs en un MIG, la hora a la que un MIG finalizará una VM se establece automáticamente en el campo de marca de tiempo de finalización (terminationTimestamp) de la VM.

Según el tipo de límite de tiempo que especifiques, la marca de tiempo de finalización de una VM se establece de la siguiente manera:

  • Límite de tiempo como duración de la ejecución (maxRunDuration):

    terminationTimestamp de una VM = Hora de creación o inicio más reciente de la VM + maxRunDuration

    Cuando especificas una duración, la marca de tiempo de finalización se establece en relación con la hora de creación o inicio más reciente de la VM. Si se vuelve a crear, reiniciar, reanudar o reemplazar la VM, se vuelve a calcular la marca de tiempo de finalización. La marca de tiempo de finalización puede variar entre las VMs de un MIG según la última vez que se creó o inició cada VM. Por ejemplo, si se repara una VM, se vuelve a calcular la marca de tiempo de finalización de la VM agregando la duración al momento en que se volvió a crear la VM durante la reparación.

  • Límite de tiempo como hora de finalización (terminationTime):

    terminationTimestamp de una VM = terminationTime

    Cuando especificas una hora, la marca de tiempo de rescisión se establece en esa hora, siempre que sea una hora futura. Si pasó el tiempo de finalización, cualquier acción de MIG que intente crear, reiniciar o reemplazar una VM fallará con un error. Para resolver este error, debes crear una plantilla de instancias nueva con una hora de finalización en el futuro y aplicar esa plantilla al MIG. Si deseas usar las propiedades de la plantilla existente en la nueva, entonces crea una plantilla de instancias basada en la plantilla existente.

Durante la actualización de una VM, la marca de tiempo de finalización no cambia. Por ejemplo, si configuras el nivel de interrupción para las actualizaciones en REFRESH, la marca de tiempo de finalización se retiene cada vez que el MIG actualiza la VM.

Cuando suspendes o detienes una VM en un MIG, la marca de tiempo de finalización se borra automáticamente, independientemente del tipo de límite de tiempo. Cuando reanudas o inicias una VM, la marca de tiempo de terminación se vuelve a establecer según el tipo de límite de tiempo, como se explicó anteriormente en esta sección.

Cómo funciona el ajuste de escala automático cuando se establece un límite de tiempo

El ajuste de escala automático permite que tu MIG agregue o quite VMs de forma automática en función de los aumentos o disminuciones en la carga. Cuando un MIG borra las VMs que alcanzaron sus marcas de tiempo de finalización, el MIG crea VMs nuevas para mantener el tamaño recomendado por el escalador automático. Las VMs nuevas se ejecutan durante el límite de tiempo especificado. Si la recomendación del escalador automático es reducir la cantidad de VMs, el MIG borra las VMs incluso antes de que alcancen sus límites de tiempo.

Si configuraste programaciones de escalamiento, las VMs se ejecutan solo hasta el final de una programación o hasta que una VM alcanza su marca de tiempo de finalización, lo que ocurra primero.

¿Qué sigue?