Consumir y administrar 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. Cada reserva proporciona garantía para una o más instancias de máquina virtual (VM) con las mismas propiedades. 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 propiedad de afinidad de reserva de 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. La propiedad de afinidad de la reserva aparece de la siguiente manera:

  • Sección Usar con una instancia de VM en la consola
  • La marca --reservation-affinity en la CLI de gcloud
  • El campo "reservationAffinity" en la API de Compute Engine

En todos los casos, una VM solo puede consumir una reserva si todas las propiedades siguientes para la VM y la reserva tienen una coincidencia exacta:

  • Proyecto
  • Zona
  • Tipo de máquina
  • Plataforma de CPU mínima
  • Tipo y recuento de GPU
  • Tipo y recuento de SSD locales

Para que una instancia consuma recursos de una reserva específica, esa reserva se debe crear con la propiedad de reserva específica requerida que corresponde.

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 de consumo, 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 si creas y borras muchas VM y deseas usar las reservas siempre que sea posible.

Cuando se usa este modelo de consumo, todas las reservas de un solo proyecto se consumen antes que cualquier reserva compartida, ya que estas últimas tienen más disponibilidad. 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.

Consola

  1. Crea una reserva con recursos que puedan usar las instancias de VM con una propiedad de afinidad de reserva configurada para consumir cualquier reserva (opción predeterminada). Puedes crear una reserva independiente o una adjunta para un compromiso.

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

      Ir a Descuentos por compromiso de uso

    2. Crea una reserva mediante una de las siguientes opciones:

      • Para crear una reserva independiente, haz clic en Crear reserva.

      • Para crear una reserva vinculada a un compromiso, haz clic en Compromiso de compra. Después de especificar las otras opciones, haz clic en Agregar un elemento en la sección Reservas. Para obtener más información sobre cómo adquirir un compromiso con una reserva conectada, consulta Combina reservas con descuentos por compromiso de uso.

    3. En el campo Nombre, ingresa el nombre de tu reserva. En este ejemplo, ingresa reservation-01.

    4. Elige la región y zona en la que deseas reservar los recursos. En este ejemplo, selecciona us-central1 como región y us-central1-a como zona.

    5. Elige tu Tipo de recurso compartido preferido:

      • A fin de crear una reserva para un solo proyecto, selecciona Local.
      • Para crear una reserva compartida entre varios proyectos, selecciona Compartido. Para compartir esta reserva con otros proyectos, haz clic en Agregar proyectos y selecciona los proyectos deseados de la organización del proyecto actual.
    6. En Usar con instancia de VM, selecciona Usar reserva de forma automática para que cualquier instancia de VM que coincida pueda usar esta reserva de manera automática.

    7. En el campo Cantidad de instancias de VM, ingresa la cantidad de instancias de VM que deseas reservar. En este ejemplo, ingresa 2.

    8. Especifica los recursos que deseas reservar para cada instancia de VM:

      • Si deseas reservar VM que coincidan con una plantilla de instancias existente, selecciona Usar plantilla de instancias y selecciona una plantilla de instancias de la lista.
      • De lo contrario, selecciona Especificar tipo de máquina y especifica lo siguiente:
        1. En los campos Familia de máquinas, Serie y Tipo de máquina, selecciona una familia de máquinas, series y tipos de máquinas.
        2. Especifica una plataforma de CPU mínima o GPU (opcional):
          1. Para expandir la sección Plataforma de CPU y GPU, haz clic en la flecha de expansión .
          2. Opcional: Para especificar una plataforma de CPU mínima, selecciona una opción en la lista Formulario de CPU.
          3. Opcional: Para agregar GPU, haz clic en Agregar GPU. Luego, en los campos Tipo de GPU y Cantidad de GPU, selecciona el tipo y la cantidad de GPU para cada VM.
        3. Opcional: Agrega SSD locales:
          1. En el campo Cantidad de discos, selecciona la cantidad de SSD locales para cada VM.
          2. En el campo Tipo de interfaz, selecciona la interfaz para las SSD locales.

      Para este ejemplo, selecciona Especificar tipo de máquina. Luego, selecciona el tipo de máquina n2-standard-32 para la familia de máquinas General-purpose y la serie N2. Luego, selecciona la plataforma de CPU mínima Intel Cascade Lake.

    9. Termina de crear la reserva:

      • Si quieres crear una reserva independiente, haz clic en Crear.

      • Si quieres crear una reserva vinculada a un compromiso, ejecuta este comando:

        1. Para terminar de especificar las propiedades de esta reserva, haz clic en Listo.
        2. Para terminar de crear el compromiso y las reservas adjuntas, haz clic en Comprar.
  2. En el mismo proyecto o en el que se comparte la reserva, crea una instancia de VM que se dirija a cualquier reserva abierta.

    Asegúrate de que las propiedades de la instancia de VM coincidan con las propiedades de la instancia de VM 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 interfaz y el tamaño del SSD local.

    Para obtener más información sobre cómo crear una instancia de VM, consulta Crea y, luego, inicia una instancia de VM.

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

      Ir a Crear una instancia

    2. Especifica un nombre para la VM.

    3. En las siguientes secciones, selecciona una configuración que coincida con exactitud con todas las propiedades de tu reserva, incluidas las propiedades opcionales. Para este ejemplo, debes hacer coincidir las siguientes propiedades de instancia de VM con reservation-01:

      • Región: us-central1
      • Zona: us-central1-a
      • Tipo de máquina: n2-standard-32
      • Plataforma de CPU mínima: Intel Cascade Lake
      • GPU: Ninguna
      • SSD locales: Ninguno
    4. Expande la sección Herramientas de redes, discos, seguridad, administración, instancia única y, luego, la sección Administración. En la lista Reservas, haz clic en Usar la reserva creada de forma automática.

    5. Para crear la VM, haz clic en Crear.

gcloud

  1. Crea una reserva abierta llamada reservation-01.

    gcloud compute reservations create reservation-01 \
        --vm-count=2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --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 de consumo, 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 la consola, selecciona la casilla de verificación Seleccionar reserva específica.
  • En la CLI 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 en Consume una reserva específica de un solo proyecto o Consume 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 la consola, la CLI de gcloud o la API de Compute Engine.

Console

  1. Crea una reserva con recursos que solo puedan usar las instancias de VM que se dirigen a esta reserva de forma específica por nombre. Puedes crear una reserva independiente o una adjunta para un compromiso.

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

      Ir a Descuentos por compromiso de uso

    2. Crea una reserva mediante una de las siguientes opciones:

      • Para crear una reserva independiente, haz clic en Crear reserva.

      • Para crear una reserva vinculada a un compromiso, haz clic en Compromiso de compra. Después de especificar las otras opciones, haz clic en Agregar un elemento en la sección Reservas. Para obtener más información sobre cómo adquirir un compromiso con una reserva conectada, consulta Combina reservas con descuentos por compromiso de uso.

    3. En el campo Nombre, ingresa el nombre de tu reserva. En este ejemplo, ingresa reservation-02.

    4. Elige la región y zona en la que deseas reservar los recursos. En este ejemplo, selecciona us-central1 como región y us-central1-a como zona.

    5. Para especificar que tu reserva será una de un solo proyecto, selecciona Local como el Tipo de recurso compartido.

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

    7. En el campo Cantidad de instancias de VM, ingresa la cantidad de instancias de VM que deseas reservar. En este ejemplo, ingresa 10.

    8. Especifica los recursos que deseas reservar para cada instancia de VM:

      • Si deseas reservar VM que coincidan con una plantilla de instancias existente, selecciona Usar plantilla de instancias y selecciona una plantilla de instancias de la lista.
      • De lo contrario, selecciona Especificar tipo de máquina y especifica lo siguiente:
        1. En los campos Familia de máquinas, Serie y Tipo de máquina, selecciona una familia de máquinas, series y tipos de máquinas.
        2. Especifica una plataforma de CPU mínima o GPU (opcional):
          1. Para expandir la sección Plataforma de CPU y GPU, haz clic en la flecha de expansión .
          2. Opcional: Para especificar una plataforma de CPU mínima, selecciona una opción en la lista Formulario de CPU.
          3. Opcional: Para agregar GPU, haz clic en Agregar GPU. Luego, en los campos Tipo de GPU y Cantidad de GPU, selecciona el tipo y la cantidad de GPU para cada VM.
        3. Opcional: Agrega SSD locales:
          1. En el campo Cantidad de discos, selecciona la cantidad de SSD locales para cada VM.
          2. En el campo Tipo de interfaz, selecciona la interfaz para las SSD locales.

      Para este ejemplo, selecciona Especificar tipo de máquina. Luego, selecciona el tipo de máquina n2-standard-32 para la familia de máquinas General-purpose y la serie N2. Luego, selecciona la plataforma de CPU mínima Intel Cascade Lake.

    9. Termina de crear la reserva:

      • Si quieres crear una reserva independiente, haz clic en Crear.

      • Si quieres crear una reserva vinculada a un compromiso, ejecuta este comando:

        1. Para terminar de especificar las propiedades de esta reserva, haz clic en Listo.
        2. Para terminar de crear el compromiso y las reservas adjuntas, haz clic en Comprar.
  2. En el mismo proyecto, crea una instancia de VM que se dirija a esa reserva específica por nombre.

    Asegúrate de que las propiedades de la instancia de VM coincidan con las propiedades de la instancia de VM 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 y el tamaño y la interfaz del SSD local.

    Para obtener más información sobre cómo crear una instancia de VM, consulta Crea y, luego, inicia una instancia de VM.

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

      Ir a Crear una instancia

    2. Especifica un nombre para la VM.

    3. En las siguientes secciones, selecciona una configuración que coincida con exactitud con todas las propiedades de tu reserva, incluidas las propiedades opcionales. Para este ejemplo, debes hacer coincidir las siguientes propiedades de instancia de VM con reservation-02:

      • Región: us-central1
      • Zona: us-central1-a
      • Tipo de máquina: n2-standard-32
      • Plataforma de CPU mínima: Intel Cascade Lake
      • GPU: Ninguna
      • SSD locales: Ninguno
    4. Expande la sección Herramientas de redes, discos, seguridad, administración, instancia única y, luego, la sección Administración. En la lista Reservas, selecciona Seleccionar reserva específica y, luego, el Nombre de la reserva con las propiedades coincidentes que deseas. el consumo de instancia. Para este ejemplo, selecciona reservation-02.

    5. Para crear la VM, haz clic en Crear.

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 compartida específica, usa la consola, la CLI de gcloud o la API de Compute Engine.

Console

  1. Crea una reserva con recursos que solo puedan usar las instancias de VM que se dirigen a esta reserva de forma específica por nombre. Puedes crear una reserva compartida independiente o una reserva compartida vinculada a un compromiso.

    1. En la consola, selecciona el proyecto propietario en el que deseas crear la reserva compartida y ve a la página Descuentos por compromiso de uso.

      Ir a Descuentos por compromiso de uso

    2. Crea una reserva mediante una de las siguientes opciones:

      • Para crear una reserva independiente, haz clic en Crear reserva.

      • Para crear una reserva vinculada a un compromiso, haz clic en Compromiso de compra. Después de especificar las otras opciones, haz clic en Agregar un elemento en la sección Reservas. Para obtener más información sobre cómo adquirir un compromiso con una reserva conectada, consulta Combina reservas con descuentos por compromiso de uso.

    3. En el campo Nombre, ingresa el nombre de tu reserva. En este ejemplo, ingresa reservation-02.

    4. Elige la región y zona en la que deseas reservar los recursos. En este ejemplo, selecciona us-central1 como región y us-central1-a como zona.

    5. Para especificar que tu reserva es una reserva compartida, selecciona Compartido como el Tipo de recurso compartido.

    6. Haz clic en Agregar proyectos y selecciona los proyectos de la organización actual del proyecto con el que deseas compartir la reserva.

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

    8. En el campo Cantidad de instancias de VM, ingresa la cantidad de instancias de VM que deseas reservar. En este ejemplo, ingresa 10.

    9. Especifica los recursos que deseas reservar para cada instancia de VM:

      • Si deseas reservar VM que coincidan con una plantilla de instancias existente, selecciona Usar plantilla de instancias y selecciona una plantilla de instancias de la lista.
      • De lo contrario, selecciona Especificar tipo de máquina y especifica lo siguiente:
        1. En los campos Familia de máquinas, Serie y Tipo de máquina, selecciona una familia de máquinas, series y tipos de máquinas.
        2. Especifica una plataforma de CPU mínima o GPU (opcional):
          1. Para expandir la sección Plataforma de CPU y GPU, haz clic en la flecha de expansión .
          2. Opcional: Para especificar una plataforma de CPU mínima, selecciona una opción en la lista Formulario de CPU.
          3. Opcional: Para agregar GPU, haz clic en Agregar GPU. Luego, en los campos Tipo de GPU y Cantidad de GPU, selecciona el tipo y la cantidad de GPU para cada VM.
        3. Opcional: Agrega SSD locales:
          1. En el campo Cantidad de discos, selecciona la cantidad de SSD locales para cada VM.
          2. En el campo Tipo de interfaz, selecciona la interfaz para las SSD locales.

      Para este ejemplo, selecciona Especificar tipo de máquina. Luego, selecciona el tipo de máquina n2-standard-32 para la familia de máquinas General-purpose y la serie N2. Luego, selecciona la plataforma de CPU mínima Intel Cascade Lake. 1. Termina de crear la reserva:

      • Si quieres crear una reserva independiente, haz clic en Crear.

      • Si quieres crear una reserva vinculada a un compromiso, ejecuta este comando:

        1. Para terminar de especificar las propiedades de esta reserva, haz clic en Listo.
        2. Para terminar de crear el compromiso y las reservas adjuntas, haz clic en Comprar.
  2. En el mismo proyecto o en el que se comparte la reserva, crea una instancia de VM que se dirija a esa reserva específica por nombre.

    Asegúrate de que las propiedades de la instancia de VM coincidan con las propiedades de la instancia de VM 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 y el tamaño y la interfaz del SSD local.

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

      Ir a Crear una instancia

    2. Especifica un Nombre para la VM.

    3. En las siguientes secciones, selecciona una configuración que coincida con exactitud con todas las propiedades de tu reserva, incluidas las propiedades opcionales. Para este ejemplo, debes hacer coincidir las siguientes propiedades de instancia de VM con reservation-02:

      • Región: us-central1
      • Zona: us-central1-a
      • Tipo de máquina: n2-standard-32
      • Plataforma de CPU mínima: Intel Cascade Lake
      • GPU: Ninguna
      • SSD locales: Ninguno
    4. Expande la sección Herramientas de redes, discos, seguridad, administración, instancia única y, luego, la sección Administración. En la lista Reservas, selecciona Seleccionar reserva específica y, luego, haz lo siguiente:

      1. Selecciona un Proyecto de reserva que tenga reservas compartidas con tu proyecto actual. En este ejemplo, selecciona el proyecto que usaste para crear reservation-02.
      2. Selecciona el Nombre de reserva de la reserva compartida que deseas que consuma esta instancia de VM. Para este ejemplo, selecciona reservation-02.
    5. Para crear la VM, haz clic en Crear.

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",
        "projectMap": {
          "project-1": {
            "projectId": "project-1"
          },
          "project-2": {
            "projectId": "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 explícito de recursos de cualquier reserva, configura la propiedad de afinidad de la reserva a fin de no usar ninguna reserva cuando crees la VM. 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.

Consola

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

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

      Ir a Crear una instancia

    2. Crea una VM. Para obtener más información, consulta Crea e inicia una instancia de VM.

    3. Expande la sección Herramientas de redes, discos, seguridad, administración, instancia única y, luego, sigue estos pasos:

      1. Expande la sección Administración.
      2. Para asegurarte de que esta VM no consuma reservas existentes, en la lista Reservas, selecciona No usar.
    4. 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-32",
  "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.

Soluciona problemas

Obtén más información sobre cómo verificar el consumo de reservas y solucionar problemas de consumo de reservas.

Enumeración y descripción de reservas

Solo puedes enumerar y describir las reservas que creó tu proyecto actual. En consecuencia, las reservas compartidas solo se enumeran para el proyecto propietario: no puedes enumerar las reservas compartidas con un proyecto ni enumerar todas las reservas en una organización. También puedes ver la lista de todos los proyectos de consumidores para una reserva compartida cuando describes esa reserva. Si deseas obtener recomendaciones a fin de administrar las reservas compartidas, consulta las prácticas recomendadas para las reservas compartidas.

Consulta la lista de reservas que creó tu proyecto y los detalles de cada reserva mediante la consola, la CLI de gcloud o la API de Compute Engine.

Console

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

    Ir a Descuentos por compromiso de uso

  2. Para enumerar todas las reservas que se crearon en el proyecto actual, selecciona la pestaña Reservas.

    En la lista, cada fila describe una reserva y cada columna describe una propiedad. Por ejemplo, en la columna Máquinas usadas, se describe el uso y la capacidad total de cada reserva: un valor de 25 (50) representa una reserva para 50 instancias y 25 de estas instancias se han consumido y se están utilizando actualmente.

    Opcional: Para modificar qué reservas y propiedades se muestran, usa Filtro y Opciones de visualización de columnas respectivamente.

  3. Para describir todas las propiedades de una reserva, haz clic en el Nombre de una reserva en la lista. Se abrirá la página Detalles de la reserva (Reservation details).

gcloud

Consulta una lista de 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-04
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/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-central1-a    

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 \
    --local-ssd=size=375,interface=scsi \
    --machine-type n1-standard-2 \
    --zone us-central1-a 

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-central1-a/reservations/reservation-05",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "name": "reservation-05",
  "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-central1-a/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "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-central1-a/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-centra1-a",
  "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. Modifica qué proyectos pueden consumir una reserva compartida si deseas limitar o expandir el consumo.

Para cambiar cualquier otra propiedad de una reserva, primero crea una reserva nueva y, luego, borra la reserva anterior.

Cambia el tamaño de una reserva

Puedes cambiar la cantidad de VM en una reserva mediante la CLI de gcloud o la API.

gcloud

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

Por ejemplo, supongamos que creas 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

Para cambiar el tamaño de la reserva de ejemplo de dos a diez instancias de VM, usa el siguiente comando:

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 tendrá éxito si, en el momento de la solicitud, hay suficientes recursos en la zona objetivo y una cuota suficiente en la región objetivo.

Modifica los proyectos de consumidor para una reserva compartida

Para modificar los proyectos del consumidor de una reserva compartida, usa la consola, la CLI de gcloud o la API de Compute Engine. A fin de ver los proyectos con los que se comparte una reserva, describe la reserva.

Consola

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

    Ir a Descuentos por compromiso de uso

  2. Selecciona la pestaña Reservas.

  3. Haz clic en el Nombre de la reserva compartida en la que deseas modificar los proyectos de consumidor.

  4. Haz clic en Edit.

  5. Modifica la lista de Proyectos seleccionados:

    • Para dejar de compartir la reserva con un proyecto de consumidor específico, haz clic en Borrar junto al Nombre del proyecto.
    • Para compartir la reserva con más proyectos, haz clic en Agregar proyectos y selecciona los proyectos de la organización del proyecto propietario con los que deseas compartir la reserva.
  6. Haz clic en Guardar para confirmar las modificaciones en la reserva compartida.

gcloud

Con la CLI de gcloud, puedes cambiar la lista de proyectos que pueden consumir una reserva compartida si agregas o quitas proyectos, o reemplazas la lista completa.

  • Para agregar uno o más proyectos a la lista de proyectos que pueden consumir una reserva compartida, usa el comando gcloud compute reservations update con la marca --add-share-with.

    gcloud compute reservations update RESERVATION_NAME \
      --zone=ZONE \
      --project=OWNER_PROJECT_ID
      --add-share-with=CONSUMER_PROJECT_IDS \
    

    Reemplaza lo siguiente:

    • RESERVATION_NAME: Es el nombre de la reserva compartida que deseas modificar.
    • ZONE: Es la zona en la que se creó la reserva.
    • OWNER_PROJECT_ID: Es el ID del proyecto propietario, que es el proyecto que usaste para crear esta reserva.
    • CONSUMER_PROJECT_IDS: Es una lista separada por comas de uno o más ID de proyecto de los proyectos con los que deseas compartir esta reserva; por ejemplo, project-1,project-2. No incluyas OWNER_PROJECT_ID, que ya tiene permisos para consumir esta reserva de forma predeterminada.
  • Para quitar uno o más proyectos de la lista de proyectos que pueden consumir una reserva compartida, usa el comando gcloud compute reservations update con la marca --remove-share-with.

    gcloud compute reservations update RESERVATION_NAME \
      --zone=ZONE \
      --project=OWNER_PROJECT_ID
      --remove-share-with=CONSUMER_PROJECT_IDS \
    

    Reemplaza lo siguiente:

    • RESERVATION_NAME: Es el nombre de la reserva compartida que deseas modificar.
    • ZONE: Es la zona en la que se creó la reserva.
    • OWNER_PROJECT_ID: Es el ID del proyecto propietario, que es el proyecto que usaste para crear esta reserva.
    • CONSUMER_PROJECT_IDS: Es una lista separada por comas de uno o más ID del proyecto de los proyectos con los que deseas dejar de compartir esta reserva; por ejemplo, project-1,project-2. No puedes dejar de compartir esta reserva con el OWNER_PROJECT_ID.
  • Para reemplazar la lista de proyectos que pueden consumir una reserva compartida, usa el comando gcloud compute reservations update con la marca --share-with.

    gcloud compute reservations update RESERVATION_NAME \
      --zone=ZONE \
      --project=OWNER_PROJECT_ID
      --share-with=CONSUMER_PROJECT_IDS \
    

    Reemplaza lo siguiente:

    • RESERVATION_NAME: Es el nombre de la reserva compartida que deseas modificar.
    • ZONE: Es la zona en la que se creó la reserva.
    • OWNER_PROJECT_ID: Es el ID del proyecto propietario, que es el proyecto que usaste para crear esta reserva.
    • CONSUMER_PROJECT_IDS: Es una lista separada por comas de uno o más ID del proyecto de todos los proyectos en los que deseas permitir que se consuma esta reserva, por ejemplo project-1,project-2. Incluye todos los ID del proyecto de consumidor existentes con los que deseas seguir compartiendo esta reserva y omite cualquier ID del proyecto con el que desees dejar de compartirla. Luego, agrega cualquier ID del proyecto de consumidor nuevo con el que también desees compartir esta reserva. Estos proyectos deben estar en la misma organización que el proyecto de propietario. No incluyas OWNER_PROJECT_ID, que ya tiene permisos para consumir esta reserva de forma predeterminada.

API

En la API, realiza una solicitud PATCH para el método reservations.update. En el cuerpo de la solicitud, usa el campo shareSettings.projectMap para reemplazar la lista de proyectos con los que se comparte esta reserva.

PATCH https://compute.googleapis.com/compute/v1/projects/OWNER_PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=sharedSettings.projects

{
  "shareSetting": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  }
}

Reemplaza lo siguiente:

  • OWNER_PROJECT_ID: Es el ID del proyecto propietario, que es el proyecto que usaste para crear esta reserva.
  • ZONE: Es la zona en la que se creó la reserva.
  • RESERVATION_NAME: Es el nombre de la reserva que deseas modificar. Actualmente, debe ser una reserva compartida.
  • CONSUMER_PROJECT_ID_1 y CONSUMER_PROJECT_ID_2: Son los ID de los proyectos de uno o más proyectos con los que deseas compartir esta reserva. Incluye todos los ID del proyecto de consumidor existentes con los que deseas seguir compartiendo esta reserva y omite cualquier ID del proyecto con el que desees dejar de compartirla. Luego, agrega cualquier ID del proyecto de consumidor nuevo con el que también desees compartir esta reserva. Estos proyectos deben estar en la misma organización que el proyecto de propietario. No incluyas OWNER_PROJECT_ID, que ya tiene permisos para consumir esta reserva de forma predeterminada.

Después de modificar qué proyectos pueden consumir una reserva, el consumo de la reserva podría cambiar. Por ejemplo, cualquier proyecto de consumidor que se quitó dejó de consumir recursos de esta reserva. Además, si esta reserva se configuró para aplicarse de forma automática a cualquier instancia nueva o existente que coincida con las propiedades de la reserva (el comportamiento predeterminado), cualquier proyecto de consumidor agregado podría comenzar a consumir recursos de esta reserva. Si deseas supervisar el consumo de esta reserva, consulta Enumera y describe reservas.

Borra una reserva

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

Console

  1. En la consola, 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>

Reemplaza lo siguiente:

  • RESERVATION_NAME: nombre de la reserva que deseas borrar.
  • ZONE: Es la zona en la que se encuentra la reserva.

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>

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto que usaste para crear esta reserva.
  • RESERVATION_NAME: nombre de la reserva que deseas borrar.
  • ZONE: Es la zona en la que se encuentra la reserva.

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 núcleos (indicados por las CPU virtuales de un tipo de máquina) 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 adjunta a través de la consola, la herramienta de gcloud o la API.

Console

Antes de adquirir un compromiso mediante la consola, selecciona el proyecto que deseas usar para adquirirlo. Si el uso compartido de descuentos está habilitado para una cuenta de facturación, puedes adquirir el compromiso con cualquier proyecto de esa cuenta de facturación. Después de seleccionar el proyecto, realiza los siguientes pasos:

  1. En la consola de Google Cloud, 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. Para crear una reserva y adjuntarla al compromiso, haz clic en Agregar un elemento en la sección Reservas.

    1. En el campo Nombre, ingresa el nombre de tu reserva.
    2. Elige la región y zona en la que deseas reservar los recursos.
    3. Elige tu Tipo de recurso compartido preferido:
      • A fin de crear una reserva para un solo proyecto, selecciona Local.
      • Para crear una reserva compartida entre varios proyectos, selecciona Compartido. Para compartir esta reserva con otros proyectos, haz clic en Agregar proyectos y selecciona los proyectos deseados de la organización del proyecto actual.
    4. En el campo Usar con instancia de VM, selecciona una de las siguientes opciones:

      • Para usar los recursos de esta reserva solo cuando creas VM coincidentes que se dirigen de forma específica a esta reserva por nombre, selecciona Seleccionar reserva específica.
      • Para permitir que las instancias de VM coincidentes usen de forma automática esta reserva, selecciona Usar reserva de forma automática.
    5. En el campo Cantidad de instancias de VM, ingresa la cantidad de instancias de VM que deseas reservar.

    6. Especifica los recursos que deseas reservar para cada instancia de VM:

      • Si deseas reservar VM que coincidan con una plantilla de instancias existente, selecciona Usar plantilla de instancias y selecciona una plantilla de instancias de la lista.
      • De lo contrario, selecciona Especificar tipo de máquina y especifica lo siguiente:
        1. En los campos Familia de máquinas, Serie y Tipo de máquina, selecciona una familia de máquinas, series y tipos de máquinas.
        2. Especifica una plataforma de CPU mínima o GPU (opcional):
          1. Para expandir la sección Plataforma de CPU y GPU, haz clic en la flecha de expansión .
          2. Opcional: Para especificar una plataforma de CPU mínima, selecciona una opción en la lista Formulario de CPU.
          3. Opcional: Para agregar GPU, haz clic en Agregar GPU. Luego, en los campos Tipo de GPU y Cantidad de GPU, selecciona el tipo y la cantidad de GPU para cada VM.
        3. Opcional: Agrega SSD locales:
          1. En el campo Cantidad de discos, selecciona la cantidad de SSD locales para cada VM.
          2. En el campo Tipo de interfaz, selecciona la interfaz para las SSD locales.
    7. Para terminar de especificar las propiedades de esta reserva, haz clic en Listo.

  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-32 \
    --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 CLI 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 para actualizar las reservas que se conectan a los compromisos.

Por ejemplo, supongamos que creas un compromiso con la siguiente reserva:

  • res-1 tiene 4 instancias n1-standard-2, cada una con 1 GPU P100 (un total de 8 CPU virtuales y 4 GPU P100). El total de recursos reservados incluye las 4 GPU P100.

Puedes crear el compromiso de ejemplo con el siguiente comando:

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

En el ejemplo anterior, 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

Puedes actualizar el compromiso de ejemplo para transferir recursos confirmados entre diferentes reservas. En este ejemplo, supongamos que deseas transferir algunos recursos confirmados de res-1 a una reserva nueva, res-2. Para lograrlo, sigue estos pasos:

  • Modifica res-1 para que tenga 1 instancia n1-standard-2 con 1 GPU P100 (2 CPU virtuales).
  • Agrega res-2 para tener 3 instancias n1-standard-2, cada una con 1 GPU P100 (un total de 6 CPU virtuales y 3 GPU P100).

En particular, la cantidad total de GPU reservadas dentro del compromiso permanece constante en 4.

Para realizar la actualización de ejemplo, usa el siguiente comando:

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

En el ejemplo anterior, el archivo two-reservations.yaml contiene lo siguiente:

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 1
  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: 3
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

API

Usa el método regionCommitments.updateReservations.

Por ejemplo, supongamos que creas 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.

Puedes crear el compromiso de ejemplo con el siguiente comando:

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"
    }
  ]
}

Puedes actualizar el compromiso de ejemplo para transferir recursos confirmados entre diferentes reservas. En este ejemplo, supongamos que deseas transferir algunos recursos confirmados de res-1 a una reserva nueva, res-2. Para lograrlo, sigue estos pasos:

  • 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).

En particular, la cantidad total de GPU reservadas dentro del compromiso permanece constante en 4.

Para realizar la actualización de ejemplo, usa el siguiente comando:

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?