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 cuota.

Si deseas obtener información para 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 APIs de Trusted Cloud by S3NS . 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init
    2. Set a default region and zone.

    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 gcloud CLI.

      Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

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

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 basadas en la plantilla, se aplica el límite de tiempo a cada VM.

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

  • Límite de tiempo como duración de 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 una hora de finalización para las VMs.

  2. Usa la plantilla de instancias para crear un MIG o actualizar uno 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 Trusted Cloud , ve a la página Plantillas de instancias.

    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 configura la marca --instance-termination-action como 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 del período especificado.

    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 configura el campo instanceTerminationAction como 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 del período especificado.

    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 una hora de finalizació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 hora en las que deseas que un MIG finalice las VMs.

Console

  1. En la consola de Trusted Cloud , ve a la página Plantillas de instancias.

    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 configura el campo instanceTerminationAction como 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 en 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 ejecución (maxRunDuration):

    terminationTimestamp de una VM = Hora de inicio o creación 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 inicio o creación 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 recreó 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 finalización se establece en esa hora, siempre que sea en el futuro. Si ya pasó la hora de finalización, cualquier acción del 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 plantilla nueva, crea una plantilla de instancias basada en la plantilla existente.

Durante la actualización de una VM, no cambia la marca de tiempo de finalización. Por ejemplo, si estableces el nivel de interrupción de las actualizaciones en REFRESH, se conservará la marca de tiempo de finalización cada vez que el MIG actualice 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 finalizació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 las borra incluso antes de que alcancen sus límites de tiempo.

Si configuraste programaciones de ajuste de escala, las VMs se ejecutarán solo hasta el final de una programación o hasta que una VM alcance su marca de tiempo de finalización, lo que suceda primero.

¿Qué sigue?