Consumo y administración de reservas

En este documento, se describe cómo consumir y administrar reservas para los recursos zonales de Compute Engine. Las reservas proporcionan un nivel de seguridad muy alto a fin de obtener capacidad para los recursos zonales de Compute Engine. Si deseas obtener información sobre las reservas, consulta Reservas para recursos zonales de Compute Engine. Si deseas obtener información sobre cómo crear reservas, consulta Crea una reserva para un solo proyecto o Crea una reserva compartida.

Antes de comenzar

Consumo de instancias reservadas

Cuando creas una instancia de máquina virtual (VM), puedes configurar la marca de afinidad de reserva la instancia para elegir si la instancia puede usar cualquier reserva disponible que coincida (configuración predeterminada), usar una reserva específica o no usar ninguna reserva. Para que una instancia consuma recursos de una reserva específica, esa reserva se debe crear con la marca de reserva específica requerida que corresponde.

En todos los casos, una instancia de VM solo puede consumir una reserva si sus propiedades coinciden exactamente con las propiedades de instancia de la reserva:

  • Zona
  • Tipo de máquina (familia de máquinas, CPU virtuales y memoria)
  • Plataforma de CPU mínima
  • Tipo de GPU
  • Recuento de GPU
  • Interfaz de SSD local
  • Cantidad de SSD locales

Para obtener más información, consulta la sección sobre Cómo funcionan las reservas.

Consumo de instancias de cualquier reserva que coincida

En este modelo, las instancias nuevas y existentes cuentan automáticamente para la reserva si sus propiedades coinciden con las propiedades de la instancia reservada. Este modelo es útil cuando creas y borras muchas VM y deseas que las reservas se usen siempre que sea posible.

Cuando se usa este modelo de consumo, las instancias priorizan el consumo de cualquier reserva de un solo proyecto que coincida antes de consumir cualquier reserva compartida que coincida, ya que estas últimas están disponibles de forma más amplia. Para obtener más información sobre cómo las instancias se consumen de forma automática, consulta el orden de consumo.

Para usar este modelo, excluye la marca --require-specific-reservation cuando crees tus reservas, de modo que las instancias coincidentes puedan consumir estas reservas de forma automática.

Console

  1. Crea una reserva abierta.

    1. En Cloud Console, ve a la página Descuentos por compromiso de uso.

      Ir a Descuentos por compromiso de uso

    2. Para crear una reserva independiente que no tenga un compromiso principal, haz clic en Crear reserva.

    3. Asigna un nombre a tu reserva, por ejemplo: reservation-01.

    4. En Usar con instancia de VM, selecciona Usar reserva de forma automática para que cualquier instancia que coincida pueda usar esta reserva de manera automática.

    5. Elige la región y la zona en las que deseas reservar los recursos.

    6. Especifica la cantidad de instancias de VM que deseas reservar.

    7. Especifica los recursos que deseas que tenga cada instancia:

      • Cantidad de CPU virtuales
      • Plataforma de CPU mínima
      • Cantidad de memoria
      • GPU
      • SSD local (según sea necesario)
    8. Haz clic en el botón Crear para crear la reserva.

  2. Crea una instancia de VM que se dirija a cualquier reserva abierta y que coincida con las propiedades de la instancia en reservation-01, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, y la cantidad y la interfaz del SSD local.

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

      Ir a Instancias de VM

    2. Selecciona el proyecto y haz clic en Continuar.

    3. Haz clic en Crear instancia.

    4. Especifica un nombre para tu instancia.

    5. Especifica un Tipo de máquina que coincida con las propiedades de reservation-01. Por ejemplo, si especificaste una plataforma de CPU mínima o GPU en la reserva, entonces, para consumir la reserva, debes personalizar esta instancia para que coincida con la reserva.

    6. Si tu reserva incluye SSD locales, en Discos, haz clic en Agregar disco nuevo para agregar SSD locales que coincidan con la interfaz y la cantidad de SSD locales de la reserva.

    7. En Administración, en Reservas, selecciona Usar la reserva creada de forma automática.

    8. Haz clic en Crear.

gcloud

  1. Crea una reserva abierta llamada reservation-01.

    gcloud compute reservations create reservation-01 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --vm-count=2 \
        --zone=us-central1-a
    
  2. Crea una instancia de VM que se dirija a cualquier reserva abierta y que coincida con las propiedades de la instancia en reservation-01, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, y la cantidad y la interfaz del SSD local.

    gcloud compute instances create instance-1 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=any
    

API

  1. Cree una reserva abierta llamada reservation-01.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-01",
      "specificReservation":{
        "count":"2",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "specificReservationRequired": false
    }
    
  2. Crea una instancia de VM que se dirija a cualquier reserva abierta y que coincida con las propiedades de la instancia en reservation-01, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, y la cantidad y la interfaz del SSD local.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-1",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "ANY_RESERVATION"
      },
      ...
    }
    

Consumo de instancias de una reserva específica

En este modelo, solo las instancias nuevas que se dirigen a una reserva específica por nombre consumen esa reserva, y la reserva no se consume de forma automática. Este modelo es útil, por ejemplo, cuando deseas mantener una cierta capacidad como respaldo para eventos especiales.

Cuando crees la reserva, especifica que las instancias son necesarias para orientar la reserva específica mediante uno de los siguientes métodos:

  • En Cloud Console, selecciona la casilla de verificación Seleccionar reserva específica.
  • En la herramienta de gcloud, incluye la marca --require-specific-reservation.
  • En la API de Compute Engine, establece el campo specificReservationRequired en true.

Luego, crea varias VM que se orienten a esa reserva de forma específica y que coincidan con sus propiedades.

Si usas una plantilla de instancia para crear VM en un grupo de instancias administrado regional, crea reservas idénticas con el mismo nombre en cada zona aplicable. Luego, organiza las reservas por nombre en la plantilla de instancia del grupo.

Por ejemplo, crea una reserva específica llamada reservation-02 y, luego, crea una instancia coincidente que se dirija a esa reserva y que coincida con sus propiedades de instancia.

Según el tipo de instancia que quieras consumir, sigue los pasos que se indican enConsume una reserva específica de un solo proyecto oConsume una reserva compartida específica.

Consume una reserva específica de un solo proyecto

Para consumir una reserva específica de un solo proyecto, usa Cloud Console, la herramienta de gcloud o la API de Compute Engine.

Console

  1. Crea una reserva con recursos que solo puedan usar las instancias que se dirigen a esta reserva de forma específica por nombre.

    1. En Cloud Console, ve a la página Descuentos por compromiso de uso.

      Ir a Descuentos por compromiso de uso

    2. Haz clic en Crear reserva para crear una reserva independiente sin un compromiso superior.

    3. Asigna un nombre a tu reserva, por ejemplo: reservation-02.

    4. En Usar con instancia de VM, marca la opción Seleccionar reserva específica para que solo las instancias coincidentes que tenga esta reserva como objetivo y especifiquen su nombre puedan usarla.

    5. Elige la región y la zona en las que deseas reservar los recursos.

    6. Especifica la cantidad de instancias de VM que deseas reservar.

    7. Especifica los recursos que deseas que tenga cada instancia:

      • Cantidad de CPU virtuales
      • Plataforma de CPU mínima
      • Cantidad de memoria
      • GPU
      • SSD local
    8. Haz clic en Crear.

  2. Crea una instancia de VM que se dirija a esa reserva específica por nombre.

    Asegúrate de que las propiedades de la instancia coincidan con las propiedades de la instancia de esa reserva específica, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, la interfaz y el tamaño del SSD local.

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

      Ir a Instancias de VM

    2. Selecciona el proyecto y haz clic en Continuar.

    3. Haz clic en el botón Crear instancia.

    4. Especifica un nombre para tu instancia.

    5. Especifica un Tipo de máquina que coincida con las propiedades de reservation-01. Por ejemplo, si especificaste una plataforma de CPU mínima en la reserva, entonces, para consumir la reserva, debes personalizar esta instancia para que coincida con la reserva.

    6. Si tu reserva incluye SSD locales, en Discos, haz clic en Agregar disco nuevo para agregar SSD locales que coincidan con la interfaz y la cantidad de SSD locales de la reserva.

    7. En Administración, en Reservas, selecciona una reserva disponible con propiedades coincidentes, por ejemplo: reservation-02.

    8. Haz clic en Crear para crear la instancia.

gcloud

  1. Crea una reserva llamada reservation-02 con la marca --require-specific-reservation. Estos recursos reservados solo los pueden usar las instancias que se dirigen a esta reserva de forma específica por nombre.

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --require-specific-reservation
    
  2. Crea una instancia de VM que se dirija a reservation-02 por nombre mediante las marcas --reservation-affinity y --reservation.

    Asegúrate de que las propiedades de la instancia coincidan con las propiedades de la instancia de la reserva, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, y la interfaz y el tamaño del SSD local.

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=reservation-02
    

API

  1. Crea una reserva llamada reservation-02 con el campo specificReservationRequired configurado como true.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "specificReservationRequired": true
    }
  2. Crea una instancia de VM que se dirija a reservation-02 por nombre mediante el campo reservationAffinity.

    Asegúrate de que las propiedades de la instancia coincidan con las propiedades de la instancia de la reserva, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, y la interfaz y el tamaño del SSD local.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values":
        ["reservations/reservation-02"
        ]
      },
      ...
    }

Consume una reserva compartida específica

Para consumir una reserva específica de un solo proyecto, usa la herramienta de gcloud o la API de Compute Engine.

gcloud

  1. Crea una reserva llamada reservation-02 con la marca --require-specific-reservation. Estos recursos reservados solo los pueden usar las instancias que se dirigen a esta reserva de forma específica por nombre.

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --project=my-owner-project \
        --share-setting=projects \
        --share-with=project-1,project-2 \
        --require-specific-reservation
    
  2. Crea una instancia de VM que se dirija a reservation-02 por nombre mediante las marcas --reservation-affinity y --reservation. Para consumir esta reserva desde cualquier proyecto de consumidor con el que se comparta esta reserva, también debes especificar el proyecto que creó la reserva, my-owner-project.

    Asegúrate de que las propiedades de la instancia coincidan con las propiedades de la instancia de la reserva, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, y la interfaz y el tamaño del SSD local.

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=projects/my-owner-project/reservations/reservation-02
    

API

  1. Crea una reserva llamada reservation-02 con el campo specificReservationRequired configurado como true.

    POST https://compute.googleapis.com/compute/v1/projects/my-owner-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projects": ["project-1", "project-2"],
      }
      "specificReservationRequired": true
    }
  2. Crea una instancia de VM que se dirija a reservation-02 por nombre mediante el campo reservationAffinity. Para consumir esta reserva desde cualquier proyecto de consumidor con el que se comparta esta reserva, también debes especificar el proyecto que creó la reserva, my-owner-project.

    Asegúrate de que las propiedades de la instancia coincidan con las propiedades de la instancia de la reserva, incluida la zona, el tipo de máquina (familia de máquinas, CPU virtuales y memoria), la plataforma de CPU mínima, la cantidad y el tipo de GPU, y la interfaz y el tamaño del SSD local.

    POST https://compute.googleapis.com/compute/v1/projects/project-2/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values":
        ["projects/my-owner-project/reservations/reservation-02"
        ]
      },
      ...
    }

Crea instancias sin consumir reservas

Para evitar el consumo de recursos de tus reservas de forma explícita, cuando crees la VM, establece la marca de afinidad de la reserva como “ninguna”. De forma alternativa, para evitar el uso de tus reservas de forma implícita, crea una instancia que no coincida con las propiedades de instancia de ninguna de tus reservas.

Console

  1. Crea una instancia que no consuma una reserva de forma explícita.

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

      Ir a Instancias de VM

    2. Haz clic en Crear instancia.

    3. Crea una instancia mediante el procedimiento usual.

    4. En Administración, en Reservas, selecciona No usar para asegurarte de que esta instancia no consuma ninguna reserva existente.

    5. Haz clic en Crear.

gcloud

Crea una instancia que no consuma una reserva de forma explícita.

gcloud compute instances create instance-3 --reservation-affinity=none

De forma alternativa, crea una instancia que no coincida con las propiedades de la instancia de ninguna de tus reservas. Para revisar tus propiedades de reserva, consulta la sección sobre enumeración y descripción de reservas.

API

Crea una instancia que no consuma una reserva de forma explícita.

POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances

{
  "machineType": "zones/us-central1-a/machineTypes/n2-standard-16",
  "name": "instance-3",
  "reservationAffinity":
  {
    "consumeReservationType": "NO_RESERVATION"
  },
  ...
}

De forma alternativa, crea una instancia que no coincida con las propiedades de la instancia de ninguna de tus reservas. Para revisar tus propiedades de reserva, consulta la sección sobre enumeración y descripción de reservas.

Garantiza el uso de las reservas

Si no puedes consumir tus recursos reservados, confirma que la configuración de la instancia y la reserva sean correctas y que tus reservas aún tengan instancias que no estén en uso actualmente. Para ello, verifica que las propiedades de instancia de la reserva coincidan con las propiedades de la instancia y que la reserva aún tenga instancias que no estén en uso actualmente. Como alternativa, crea una reserva específica y, luego, crea una instancia que se dirija a esa reserva específica y revise los errores resultantes.

Verifica las propiedades de la reserva

Las propiedades de instancia de la reserva deben coincidir con las propiedades del comando de creación de instancias. Para verificar, haz lo siguiente:

  1. Describe la reserva. Si todas las instancias de la reserva están en uso actualmente, debes cambiar el tamaño de la reserva si deseas que pueda reservar capacidad adicional. De lo contrario, verifica las propiedades de instancia de la reserva en busca de lo siguiente:

    • zone
    • specificReservationRequired
      • Si se configura como true, el comando de creación de instancias se debe dirigir a esta reserva por su nombre.
    • machineType
    • guestAccelerators.acceleratorType
    • guestAccelerators.acceleratorCount
    • minCpuPlatform
      • Si tienes una instancia de VM con una minCpuPlatform y deseas crear una reserva que use esa instancia, crea la reserva con propiedades coincidentes, incluida una minCpuPlatform coincidente.
      • Si tienes una reserva con una minCpuPlatform y deseas crear una instancia que use esa reserva, crea la instancia con propiedades coincidentes, incluida una minCpuPlatform coincidente.
    • localSsds.interface
      • Si tienes una reserva para una instancia de VM con varios SSD locales, la instancia de VM que consume la reserva debe tener la misma cantidad de SSD locales con una localSsds.interface que coincida con cada SSD local.
  2. Crea una instancia que coincida con esas propiedades.

  3. Describe la instancia para verificar que sus propiedades coinciden con las propiedades de instancia de la reserva. Por ejemplo, con la herramienta gcloud, usa el comando instances describe.

  4. Describe tu reserva para verificar que su inUseCount ha aumentado.

    • Si inUseCount no cambió, significa que las propiedades no coinciden.
    • Si inUseCount aumentó, significa que se está usando tu reserva.

Si aún no puedes crear una reserva después de verificar la capacidad y las propiedades de instancia de la reserva, el error puede deberse a la disponibilidad del recurso. Obtén más información para solucionar problemas de disponibilidad de recursos.

Dirigirse a una reserva específica

Si deseas crear una instancia que se dirija a una reserva específica, no podrás crearla a menos que coincida con las propiedades de instancia de la reserva. Usa este método para verificar que tienes las propiedades de instancia correctas.

  1. Crea una reserva con la opción specificReservationRequired.
  2. Crea una instancia que coincida de forma explícita con las propiedades de instancia de la reserva y que tenga esa reserva como objetivo por su nombre mediante la propiedad de afinidad de la reserva.
    • Si las propiedades de la instancia no coinciden, verás un mensaje de error.
    • Si las propiedades de la instancia coinciden, significa que se está usando la reserva.

Si aún no puedes crear una reserva después de verificar la capacidad y las propiedades de instancia de la reserva, el error puede deberse a la disponibilidad del recurso. Obtén más información para solucionar problemas de disponibilidad de recursos.

Enumeración y descripción de reservas

Enumera y consulta los detalles de la reserva mediante Console, la herramienta de gcloud o la API.

Console

  1. En Cloud Console, ve a la página Descuentos por compromiso de uso.

    Ir a Descuentos por compromiso de uso

  2. Haz clic en Reservas.

La lista de reservas incluye detalles sobre cada reserva. En la columna Máquinas usadas (total), se describe el uso de cada reserva. Por ejemplo, una reserva que muestra 25 (50) es una reserva para 50 instancias, y 25 de estas instancias se han consumido y están en uso actualmente.

gcloud

Enumera tus reservas con el comando gcloud compute reservations list:

gcloud compute reservations list [--filter="zone:('ZONE')"]

NAME             IN_USE_COUNT   COUNT   ZONE
reservation-04   25             50      us-central1-a
reservation-05   0              100     us-central1-b

Describe tus reservas con el comando gcloud compute reservations describe:

gcloud compute reservations describe RESERVATION_NAME --zone=ZONE

kind: compute#reservation
name: reservation-05
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d/reservations/reservation-04
specificReservation:
  count: '50'
  inUseCount: '25'
  instanceProperties:
    guestAccelerators:
    - acceleratorCount: 1
      acceleratorType: nvidia-tesla-k80
    localSsds:
    - diskSizeGb: '375'
      interface: SCSI
    machineType: n1-standard-2
    minCpuPlatform: Any CPU Platform
specificReservationRequired: false
status: READY
zone: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d    

Puedes usar los valores count y inUseCount para determinar el uso de cada reserva. En este ejemplo, se reservan 50 instancias para reservation-04, y se consumieron 25 instancias de la reserva y están en uso actualmente.

Para crear una instancia que use esta reserva, recuerda hacer coincidir las propiedades de la instancia de la reserva. Por ejemplo:

gcloud compute instances create my-instance \
    --accelerator=type=nvidia-tesla-k80,count=1 \
    --maintenance-policy terminate \
    --local-ssd=size=375,interface=scsi \
    --machine-type n1-standard-2 \
    --zone us-east1-d 

API

En la API, enumera tus reservas mediante una solicitud GET al método reservations.list.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

{
  "id": "4100668622331754141",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d/reservations/reservation-03",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d",
  "name": "reservation-03",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2"
    },
    "count": "100",
    "inUseCount": "0"
  },
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation"
},
{
  "id": "2533514314332214789",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d",
  "name": "reservation-04",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2",
      "guestAccelerators": [
        {
          "acceleratorType": "nvidia-tesla-k80",
          "acceleratorCount": 1
        }
      ],
      "minCpuPlatform": "Any CPU Platform",
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    },
    "count": "50",
    "inUseCount": "25"
  },
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation"
}

Describe una reserva mediante una llamada al método reservations.get.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

{
  "id": "2533514314332214789",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d",
  "name": "reservation-04",
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2",
      "guestAccelerators": [
        {
          "acceleratorType": "nvidia-tesla-k80",
          "acceleratorCount": 1
        }
      ],
      "minCpuPlatform": "Any CPU Platform",
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    },
    "count": "50",
    "inUseCount": "25"
  }
}

Puedes usar los valores count y inUseCount para determinar el uso de cada reserva. En este ejemplo, se reservan 50 instancias, 25 de las cuales se consumieron de la reserva y están en uso actualmente.

Modifica reservas

Cambia el tamaño de una reserva si deseas cambiar la cantidad de VM reservadas. Borra una reserva si ya no la necesitas.

Solo puedes cambiar el tamaño o borrar una reserva si no se encuentra adjunta a un compromiso.

Cambia el tamaño de una reserva

Puedes cambiar la cantidad de VM en una reserva que no se encuentran vinculadas a un compromiso mediante la herramienta de gcloud o la API.

gcloud

Cambia el tamaño de tu reserva con el comando gcloud compute reservations update. Por ejemplo:

Crea una reserva para dos instancias de VM:

gcloud compute reservations create reservation-01 \
    --machine-type=n2-standard-32 \
    --zone=us-central1-a \
    --vm-count=2

Cambia el tamaño de la reserva de dos a diez instancias de VM:

gcloud compute reservations update reservation-01 \
    --zone=us-central1-a \
    --vm-count=10

API

En la API, crea una solicitud POST para el método reservations.resize y, luego, incluye el specificSkuCount nuevo en el cuerpo de la solicitud. En el siguiente cuerpo de solicitud, se actualiza el recuento de VM de la reserva a 10.

POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/reservations/<var>RESERVATION_NAME</var>/resize

{"specificSkuCount": "10"}

La solicitud de actualización se realizará de forma correcta si, en el momento de la solicitud, hay suficientes recursos en la zona de destino y una cuota suficiente en la región de destino.

Borra una reserva

Puedes borrar reservas que no estén vinculadas a un compromiso mediante Console, la herramienta de gcloud o la API.

Console

  1. En Cloud Console, ve a la página Descuentos por compromiso de uso.

    Ir a Descuentos por compromiso de uso

  2. Haz clic en Reservas para ver una lista de tus reservas.

  3. Selecciona la casilla de verificación junto a cada una de las reservas que deseas borrar.

  4. Haz clic en Borrar reserva.

gcloud

Para liberar reservas con el comando delete:

gcloud compute reservations delete <var>RESERVATION_NAME</var> --zone <var>ZONE</var>

API

En la API, realiza una solicitud DELETE al método reservation.delete.

DELETE https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/reservations/<var>RESERVATION_NAME</var>

Una vez que el comando delete se completa con éxito, ya no se te cobrará por la reserva y los recursos ya no estarán reservados para ti. Cuando se borra una reserva, las instancias en ejecución que estaban vinculadas a ella no se ven afectadas; se te seguirá cobrando por esas instancias.

Combina reservas con descuentos por compromiso de uso

Un descuento por compromiso de uso proporciona un acuerdo de precio con descuento de 1 o 3 años, pero no reserva capacidad en una zona específica. Una reserva garantiza que la capacidad se mantenga en una zona específica, incluso si las VM reservadas no están en ejecución. Cuando combinas una reserva con un compromiso, obtienes descuentos y recursos reservados.

De manera predeterminada, cuando creas una reserva, todos los descuentos por compromiso de uso aplicables para núcleos y memoria se aplican de forma automática a tus instancias de VM. Sin embargo, para obtener tarifas con descuento por compromiso de uso para GPU y SSD locales, debes crear una reserva para esos recursos cuando compras el compromiso.

Después de comprar un compromiso, no puede cancelarse. Para obtener más información, consulta Descuentos por compromiso de uso.

Compra un compromiso para GPU o SSD locales

Para comprar un compromiso de GPU o SSD locales, haz lo siguiente:

  • Debes adquirir un compromiso N1 de uso general. Las GPU solo son compatibles con los tipos de máquina N1 (excepto las GPU A100).
  • Debes crear una reserva que incluya GPU o SSD locales al mismo tiempo que compras el compromiso.
  • No es necesario que te comprometas a usar CPU virtuales o memoria.

Debes adquirir compromisos de tipos específicos de GPU. Por ejemplo, puedes adquirir compromisos de NVIDIA P100s o NVIDIA V100s, pero no puedes adquirir compromisos de GPU de NVIDIA P100 y esperar aplicarlas a otros tipos de GPU.

La cantidad de GPU y SSD locales que reservas debe ser igual a la cantidad que te comprometes a usar. Por ejemplo, si deseas reservar 4 GPU V100, también debes comprometerte a usar 4 GPU V100. Sin embargo, la cantidad de CPU virtual y memoria que reservas puede ser más o menos igual a la cantidad que la que te comprometes a usar.

Si solo deseas obtener compromisos para GPU o SSD locales, puedes especificar 0 en los compromisos de CPU virtual y de memoria. Sin embargo, la reserva que vinculas al compromiso debe contener los mismos SSD locales y GPU que el compromiso, así como los tipos de máquinas (con CPU virtuales y memoria) que deseas reservar.

Adquiere un compromiso con una reserva conectada mediante Cloud Console, la herramienta de gcloud o la API.

Console

  1. En Google Cloud Console, ve a la página Descuentos por compromiso de uso.

    Ir a Descuentos por compromiso de uso

  2. Para adquirir un compromiso nuevo, haz clic en Adquirir un compromiso.

  3. Otorga un nombre al compromiso y elige la región en la que quieres que se aplique.

  4. En Tipo de compromiso, selecciona Uso general.

  5. Elige una duración del compromiso de 1 o 3 años.

  6. Ingresa la cantidad de núcleos y memoria que deseas adquirir. Si solo deseas comprometerte a usar y reservar SSD locales o GPU, sin comprometerte a usar CPU virtuales ni memoria, especifica 0 en la cantidad de compromisos de CPU virtual y memoria.

  7. Haz clic en Agregar GPU y selecciona el tipo de GPU y la cantidad de GPU que deseas comprometerte a usar.

  8. Haz clic en Agregar SSD local y especifica la cantidad de discos que deseas comprometerte a usar.

  9. Haz clic en Agregar reserva nueva a fin de crear una o más reservas para las instancias que usarán las GPU y los SSD locales.

    1. Asigna un nombre a tu reserva.
    2. En Usar con instancia de VM, realiza los siguientes pasos:
      • Si quieres usar los recursos de esta reserva solo cuando creas instancias coincidentes que se dirigen de forma específica a esta reserva por nombre, selecciona Seleccionar reserva específica.
      • Si deseas que las instancias coincidentes usen de forma automática esta reserva, selecciona Usar reserva de forma automática.
    3. Elige la Zona en la que deseas reservar los recursos.
    4. Especifica la Cantidad de instancias de VM que deseas reservar.
    5. Especifica los recursos que quieres reservar para cada instancia:
      • Si tienes una plantilla de instancias, haz clic en Usar plantilla de instancias y selecciona una plantilla de instancias de la lista.
      • De lo contrario, haz clic en Especificar tipo de máquina.
        1. Haz clic en Personalizar a fin de usar el control deslizante para seleccionar los Núcleos y la Memoria para tu tipo de máquina.
        2. Especifica la Plataforma de CPU.
        3. Para agregar GPU, ingresa la cantidad de GPU y el Tipo de GPU.
        4. De manera opcional, especifica la cantidad de SSD locales que deseas agregar a cada instancia y el Tipo de interfaz que usarás.
    6. Haz clic en el botón Listo para crear la reserva.
  10. Haz clic en el botón Adquirir para adquirir el compromiso.

  11. Lee las condiciones de compra y haz clic en Adquirir cuando estés listo para adquirir el compromiso.

gcloud

Usa el comando gcloud compute commmitments create para adquirir un compromiso y, luego, incluye las marcas a fin de crear una reserva vinculada.

Por ejemplo, el siguiente compromiso incluye 4 GPU y una reserva nueva para usar esas 4 GPU en 2 instancias n1-standard-32 en us-central1-a.

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-central1-a \
    --machine-type=n1-standard-16 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

Si quieres comprometerte a usar y reservar GPU o SSD locales sin comprometerte a usar CPU virtuales ni memoria, especifica 0 para la cantidad de compromisos de CPU virtual y memoria.

gcloud compute commitments create commitment-01 \
    --region=us-west2 \
    --resources=vcpu=0,memory=0 \
    --resources-accelerator=type=nvidia-tesla-p4,count=1 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-west2-b \
    --machine-type=n1-standard-2 \
    --accelerator=type=nvidia-tesla-p4,count=1 \
    --vm-count=1

Para crear varias reservas durante la compra de un compromiso, usa un archivo YAML que contenga las propiedades de la reserva. Por ejemplo:

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --resources=vcpu=96,memory=624,local-ssd=750 \
    --resources-accelerator=type=nvidia-tesla-v100,count=1 \
    --plan 12-month \
    --reservations-from-file=YAML_FILE

Por ejemplo, el siguiente archivo YAML contiene 2 reservas. La primera reserva, res-01, contiene 1 instancia n1-standard-2 con 1 GPU y es una reserva dirigida, lo que significa que debes dirigirte a esa reserva en particular por nombre para usar las instancias reservadas. La segunda reserva, res-02, contiene 1 instancia de VM n1-standard-2 con 2 tipos de SSD locales adjuntas.

- reservation: res-01
  reservation_zone: us-central1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-v100
- reservation: res-02
  reservation_zone: us-central1-a
  vm_count: 1
  machine_type: n1-standard-2
  local_ssd:
  - interface: scsi
    size: 375
  - interface: nvme
    size: 375

API

Usa el método regionCommitments.insert y asegúrate de incluir el campo reservations para definir las propiedades de la reserva. Por ejemplo, el siguiente compromiso incluye 4 GPU y una reserva para usar esas 4 GPU en 2 instancias en us-central1-a.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

Si solo deseas comprometerte a usar y reservar SSD locales o GPU, sin comprometerte a usar CPU virtuales ni memoria, especifica 0 en la cantidad de compromisos de CPU virtual y memoria. Por ejemplo:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
    {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

El compromiso se crea de forma correcta solo si hay suficientes recursos en la zona de destino y una cuota suficiente en el momento en que se realiza la solicitud.

Cuando creas un compromiso con una reserva vinculada, no puedes borrar la reserva mientras dure el compromiso. Cuando vence el compromiso, Compute Engine borra cualquier reserva adjunta de forma automática.

Si necesitas transferir GPU o SSD locales a través de reservas con compromisos, consulta la sección Modifica las reservas vinculadas a los compromisos.

Modifica las reservas que se adjuntan a los compromisos

Si un compromiso tiene una o más reservas con GPU o SSD locales, puedes usar la herramienta de gcloud o la API para transferir GPU o SSD locales a través de esas reservas. Por ejemplo, puedes mover las GPU de una reserva a otra reserva nueva.

Limitaciones:

  • Solo puedes mover recursos entre dos reservas: la reserva de origen y la de destino. La reserva de origen ya debe existir, mientras que el destino puede ser una reserva nueva o existente.
  • Las reservas de origen y destino deben estar en la misma zona.
  • No puedes modificar las propiedades del recurso en las reservas existentes; solo puedes transferir recursos existentes de una reserva a otra.
  • La cantidad total de GPU y SSD locales debe permanecer constante.
  • Solo puedes cambiar 100 VM por solicitud. Si deseas actualizar más, llama a la API varias veces o comunícate con la asistencia de Google Cloud.
  • No puedes transferir CPU virtuales o memoria, ni modificar otras propiedades de las reservas adjuntas.

gcloud

Usa el comando gcloud beta compute commitments update-reservations.

Crea un compromiso con una reserva:

  • res-1 tiene 4 instancias n1-standard-2, cada una con 1 GPU P100 (4 CPU virtuales y 4 GPU P100). El total de recursos reservados incluye 4 GPU P100.
gcloud beta compute commitments create my-commitment-with-reservations \
    --region=asia-east1 \
    --resources=vcpu=10,memory=32GB \
    --resources-accelerator=type=nvidia-tesla-p100,count=4 \
    --plan 12-month \
    --reservations-from-file=one-reservation.yaml

El archivo one-reservation.yaml contiene lo siguiente:

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 4
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

Actualiza el compromiso para transferir algunos recursos de res-1 a una reserva nueva, res-2. En este ejemplo, haz lo siguiente:

  • Modifica res-1 para tener 2 instancias n1-standard-2, cada una con 2 GPU P100 (2 CPU virtuales y 2 GPU P100).
  • Agrega res-2 para tener 2 instancias n1-standard-2, cada una con 1 GPU P100 (4 CPU virtuales y 2 GPU P100).

La cantidad total de GPU reservadas dentro del compromiso se mantiene en 4 de forma constante.

gcloud beta compute commitments update-reservations my-commitment-with-reservations \
    --region=us-central1 \
    --reservations-from-file=two-reservations.yaml

El archivo two-reservations.yaml contiene lo siguiente:

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 2
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100
- reservation: res-2
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 2
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

API

Usa el método regionCommitments.updateReservations.

Por ejemplo, crea un compromiso con la siguiente reserva:

  • res-1 tiene 4 instancias n1-standard-2, cada una con 1 GPU nvidia-tesla-p100 (4 CPU virtuales y 4 GPU P100).

En este ejemplo, el total de recursos reservados incluye 4 GPU P100.

POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservation/updateReservations

{
  "name": "my-commitment-with-reservation",
  "plan": "TWELVE_MONTH",
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "4",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ],
  "resources":
  [
    {
      "amount": "10",
      "type": "VCPU"
    },
    {
      "amount": "32768",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ]
}

Actualiza el compromiso para transferir algunos recursos de res-1 a una otra reserva nueva, res-2. En este ejemplo, haz lo siguiente:

  • Modifica res-1 para tener 2 instancias n1-standard-2, cada una con 2 GPU P100 (2 CPU virtuales y 2 GPU P100).
  • Agrega res-2 para tener 2 instancias n1-standard-2, cada una con 1 GPU P100 (4 CPU virtuales y 2 GPU P100).

La cantidad total de GPU reservadas dentro del compromiso permanece constante en 4.

POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservation/updateReservations

{
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    },
    {
      "name": "res-2",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ]
}

Visualiza los informes de uso de reservas

Para exportar informes detallados del uso de Compute Engine a un bucket de Cloud Storage, usa la característica de exportación de uso. Consulta Ve informes de uso para obtener instrucciones.

El informe de uso muestra lo siguiente:

  • Recursos reservados que están en uso. Estas entradas se muestran como recursos normales de CPU virtuales, memoria, GPU y SSD locales.
  • Recursos reservados que no están en uso. Estas entradas tienen nombres de SKU y URI de recursos de reserva normales.
  • El total de recursos reservados. Estas entradas tienen nombres de SKU de reserva y URI de recursos de reserva. No existen costos asociados con estas entradas. Usa estas entradas para calcular cuántas de tus reservas están en uso.
Medida Formato MeasurementId Formato Resource URI
Recursos reservados que están en uso com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/RESOURCE_TYPE/RESOURCE_NAME.

Por ejemplo, https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance
Recursos reservados que no están en uso com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

Por ejemplo, https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-a/reservations/my-reservation
Total de recursos reservados com.google.cloud/services/compute-engine/ReservationSKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

Por ejemplo, https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-a/reservations/my-reservation

Por ejemplo, en el siguiente fragmento de un informe de uso para una reserva denominada my-reservation, se muestra lo siguiente:

  • En la fila 1, se muestra la memoria RAM reservada que está en uso. El ResourceId de la fila muestra que una instancia llamada my-instance usa esta RAM.
  • En la fila 2, se muestra la memoria RAM reservada que no está en uso. El ResourceId de la fila muestra que my-reservation mantiene esta RAM reservada, que aún no la usa ninguna instancia.
  • En la fila 3, se muestra el total de RAM reservada de la reserva.
Report Date,MeasurementId,Quantity,Unit,Resource URI,ResourceId,Location
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/instances/my-instance,1775485842510981624,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/ReservationN2StandardRam,333940149714944,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
...

¿Qué sigue?