Combina reservas con descuentos por compromiso de uso


Los descuentos por compromiso de uso (CUDs) proporcionan precios con grandes descuentos para los recursos de Compute Engine a cambio de contratos de compromiso de uso de 1 o 3 años (también conocidos como compromisos). Te comprometes a usar una cantidad mínima de recursos o a realizar una inversión mínima y, a cambio, recibes CUDs en tus costos de uso de recursos. Sin embargo, los compromisos no reservan capacidad zonal para tus recursos comprometidos. Para obtener recursos zonales a precios con descuento y, además, garantizar que se reserve la capacidad para ellos, debes comprar compromisos y crear reservas para esos recursos zonales.

En este documento, se explica cómo puedes recibir CUDs para tus recursos reservados y cómo adjuntar reservas a los compromisos basados en recursos.

Antes de comenzar

  • Revisa los conceptos básicos de las reservas, junto con sus requisitos y restricciones. Para obtener más información, consulta Reservas de recursos zonales de Compute Engine.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

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

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

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

        gcloud init

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

CUDs para tus recursos reservados

Recibes CUDs de compromisos activos para cualquier uso de recursos apto en tus proyectos. Si también tienes alguna reserva para conservar la capacidad de los recursos de ese proyecto, los CUDs de los compromisos activos también se pueden aplicar a esos recursos reservados. Para que cualquier recurso reservado sea apto para recibir CUDs, se aplican los siguientes requisitos:

  • No recibirás ningún otro tipo de descuento por el uso de recursos.
  • Tus VMs deben consumir las reservas mientras los compromisos estén activos.
  • Como mínimo, las siguientes propiedades deben coincidir entre tus compromisos activos y las reservas que consumen las VMs:

    • El proyecto y la región a los que se aplican
    • Serie de familias de máquinas

Según el tipo de recurso, puedes recibir CUDs para tus recursos reservados de una de las siguientes maneras:

  • CPUs virtuales y memoria: Para recibir CUDs para uno o ambos de estos tipos de recursos, puedes comprar compromisos basados en recursos o en gastos que incluyan los tipos de recursos requeridos. Cuando las VMs de tu proyecto consumen reservas cuyas propiedades coinciden con esos compromisos activos, recibes automáticamente los CUD aplicables para estos tipos de recursos reservados. Si reservaste más recursos de los que te comprometiste a usar, no recibirás CUDs para esos recursos adicionales.

  • GPUs y discos SSD locales: para recibir CUDs de uno o ambos de estos tipos de recursos, debes hacer lo siguiente:

    • Compra compromisos basados en recursos que incluyan los tipos de recursos requeridos.
    • Crea reservas para todos los recursos comprometidos con propiedades que coincidan con tu compromiso y adjúntalos a él.

    Cuando las VMs de tu proyecto consumen estas reservas conectadas, comienzas a recibir los CUDs aplicables para estos tipos de recursos reservados.

Adjunta reservas a compromisos basados en recursos

Puedes adjuntar reservas a cualquier compromiso basado en recursos y asegurarte de que la capacidad se mantenga en zonas específicas para los recursos comprometidos que planeas usar. Puedes conectar varias reservas a un solo compromiso. Sin embargo, una reserva solo se puede conectar a un compromiso. Cuando compras un compromiso, puedes adjuntar reservas a ese compromiso de una de las siguientes maneras:

  • Cómo usar reservas existentes cuyas propiedades coinciden con el compromiso
  • Cómo crear reservas coincidentes nuevas mientras compras tu compromiso

Cuando compras un compromiso con reservas conectadas, estas permanecen activas mientras el compromiso esté activo. Cuando vence el compromiso, Compute Engine borra cualquier reserva adjunta automáticamente. La eliminación de estas reservas no tiene efecto en ninguna VM en ejecución que esté consumiendo esas reservas. Las VMs en ejecución se seguirán ejecutando y se te cobrará por ellas.

Recursos comprometidos que no requieren reservas conectadas

Las CPUs virtuales y la memoria comprometidas no requieren que adjuntes reservas coincidentes a tus compromisos. Sin embargo, cuando compras un compromiso que incluye CPUs virtuales, memoria o ambas, aún puedes optar por conectar reservas que especifiquen esos recursos. Si deseas obtener información sobre cómo adquirir compromisos solo para CPUs virtuales, memoria o ambos, sin adjuntar reservas, consulta Adquiere compromisos sin reservas conectadas.

Recursos comprometidos que requieren reservas conectadas

Las GPUs con compromisos y los discos SSD locales requieren que adjuntes las reservas coincidentes a tus compromisos. Cuando compras un compromiso que incluye GPUs, discos SSD locales o ambos, también debes reservar esos recursos y adjuntar esas reservas a tu compromiso. Puedes hacerlo con una sola reserva o una combinación de ellas. Cuando adquieres un compromiso, también puedes incluir CPUs virtuales, memoria o ambos. Sin embargo, no es necesario reservar esas CPUs virtuales o memoria. Para obtener información sobre cómo adquirir compromisos que incluyan una o ambas GPUs y discos SSD locales, consulta Adquiere compromisos con reservas conectadas en este documento.

Para ver la lista completa de series de máquinas que admiten CUDs para GPU y discos SSD locales, consulta la sección Tipos de compromisos en la documentación de CUDs basados en recursos.

Cantidades de recursos permitidas en las reservas adjuntas

Para las CPUs virtuales y la memoria, puedes tener reservas adjuntas que especifiquen más o menos cantidades de recursos de los que te comprometes a usar. Si te comprometes a usar más CPUs virtuales o memoria de las que reservas, Compute Engine reserva solo capacidad para estos recursos reservados. Sin embargo, puedes seguir usando tus recursos comprometidos adicionales según su disponibilidad en tu región. Si reservas más CPUs virtuales o memoria de las que te comprometes a usar, no recibirás CUDs para esos recursos adicionales que reservas.

Por ejemplo, cuando compras un compromiso de 4 CPUs virtuales y 30 GB de memoria, puedes elegir realizar una de las siguientes acciones:

  • No adjuntar ninguna reserva.
  • Adjunta reservas que especifiquen cualquier combinación de estos tipos de recursos, por ejemplo, la siguiente:

    • 4 CPUs virtuales y 30 GB de memoria
    • 2 CPUs virtuales y 50 GB de memoria
    • 10 CPUs virtuales y 10 GB de memoria

Sin embargo, si el compromiso contiene GPUs, discos SSD locales o ambos, debes reservar y conectar todos esos recursos. Tus reservas adjuntas deben especificar la cantidad y los tipos exactos de las GPUs y los discos SSD locales que te comprometes a usar. En consecuencia, tampoco puedes tener ninguna cantidad o tipos adicionales de GPUs o discos SSD locales en tus reservas conectadas. Por ejemplo, supongamos que adquieres un compromiso de 30 GB de memoria y 4 GPUs NVIDIA P100. La reserva conectada (o la combinación de reservas conectadas) puede especificar cualquier cantidad de CPUs virtuales o memoria, pero debe tener exactamente 4 GPUs que sean del tipo NVIDIA P100. En este ejemplo, no puedes adjuntar reservas que especifiquen ninguna de las siguientes combinaciones de recursos:

  • 6 GPUs NVIDIA P100
  • 2 GPUs NVIDIA P100
  • 4 GPUs NVIDIA P100 y 2 GPUs NVIDIA V100
  • 4 GPUs NVIDIA P100 y 4 discos SSD locales

Compra compromisos con reservas conectadas

Cuando compras un compromiso nuevo, puedes adjuntar reservas a tu compromiso de cualquiera de las siguientes maneras:

Después de adquirir un compromiso, este se activa al día siguiente a las 12 a.m. hora del Pacífico de EE.UU. y Canadá (UTC-8, o UTC-7 durante el horario de verano). Entre el momento de la compra del compromiso y el momento en que se activa, el estado del compromiso permanece como NOT_YET_ACTIVE (o como PENDING en la consola de Google Cloud). Después de la activación, el estado del compromiso cambia a ACTIVE. Por ejemplo, supongamos que compras tu compromiso el 20 de enero a las 10:00 p.m. según la hora del Pacífico de EE.UU. y Canadá (UTC-8 o UTC-7). Compute Engine crea el compromiso de inmediato con su estado como NOT_YET_ACTIVE. Sin embargo, tu compromiso se vuelve ACTIVE solo el 21 de enero a las 12:00 a.m. hora del Pacífico de EE.UU. y Canadá (UTC-8 o UTC-7).

Requisitos

Antes de comprar un compromiso con reservas conectadas, revisa estos requisitos y asegúrate de que tu compromiso y las reservas cumplan con los siguientes criterios:

  • Debes comprar el compromiso y crear las reservas adjuntas en el mismo proyecto y región.
  • Debes comprar el compromiso y crear las reservas adjuntas para los recursos de la misma serie de familias de máquinas.
  • Debes inhabilitar la opción de eliminación automática en las reservas adjuntas.
  • Si tu compromiso tiene GPUs, el tipo de GPU espedificado en la reserva y el compromiso deben coincidir.
  • Para las GPUs y los discos SSD locales, la cantidad de recursos reservados de cada tipo de recurso debe coincidir de forma exacta con la cantidad de recursos confirmados en ese tipo de recurso. Por ejemplo, si deseas adquirir un compromiso para 4 GPU V100, las reservas conectadas de tu compromiso deben especificar un total de 4 GPUs V100. Sin embargo, la cantidad de CPU virtual y memoria que reservas puede ser más o menos igual a la cantidad que te comprometes a usar.
  • En el caso de las GPU, debes adquirir compromisos para los tipos específicos de GPU que planeas usar. Por ejemplo, puedes adquirir compromisos de NVIDIA P100s o NVIDIA V100s, pero no puedes usar un compromiso que compraste para las GPUs de NVIDIA P100 para cubrir las de NVIDIA V100.
  • Si tu reserva conectada es una reserva compartida y deseas recibir los CUDs aplicables cuando consumes esa reserva fuera del proyecto de tu compromiso, debes hacer lo siguiente:

    • Comparte tus reservas solo entre proyectos que pertenezcan a la misma cuenta de Facturación de Cloud que el compromiso.
    • Habilita el uso compartido de CUD para esa cuenta de Facturación de Cloud.

Incorporar reservas existentes

Puedes adjuntar reservas existentes mientras compras tu compromiso a través de la console de Google Cloud, Google Cloud CLI o REST.

Console

Antes de adquirir un compromiso con la consola de Google Cloud, elige el proyecto que deseas usar para adquirirlo. Si el uso compartido de CUD está habilitado para una cuenta de Facturación de Cloud, puedes adquirir el compromiso con cualquier proyecto de esa cuenta de Facturación de Cloud. Después de seleccionar el proyecto, haz lo siguiente:

  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, haz clic en Adquirir un compromiso. Se abrirá la página Comprar un descuento por compromiso de uso y se mostrará la pestaña Hardware.

  3. En el campo Nombre, escribe el nombre de tu compromiso.

  4. En el campo Región, selecciona la región en la que deseas confirmar los recursos de Compute Engine.

  5. En el campo Tipo de compromiso, selecciona la serie de la familia de máquinas para tus recursos comprometidos. Los siguientes tipos de compromiso proporcionan opciones para GPUs, discos SSD locales o ambos:

    • A2 optimizada para aceleradores para recursos de tipos de máquinas A2
    • A3 optimizada para aceleradores para recursos de tipos de máquinas altas A3
    • A3 Mega con optimización de acelerador para recursos de tipos de máquinas A3 Mega
    • C2 optimizada para procesamiento para los recursos de tipo de máquina C2
    • C2D optimizado para procesamiento para los recursos de tipo de máquina C2D
    • C3 de uso general para los recursos de tipo de máquina C3
    • C3D de uso general para los recursos de tipo de máquina C3D
    • N1 de uso general para los recursos de tipo de máquina N1
    • N2 de uso general para los recursos de tipo de máquina N2
    • N2D de uso general para los recursos de tipo de máquina N2D
    • G2 con optimización para gráficos para los recursos de tipo de máquina G2
    • M3 con optimización de memoria para los recursos de tipo de máquina M3
    • Z3 con optimización de almacenamiento para los recursos de tipos de máquinas Z3

  6. En el campo Duración, selecciona la duración del período de tu compromiso.

  7. En el campo Núcleos, ingresa la cantidad de CPU virtuales a las que deseas comprometerte.

  8. En el campo Memoria, ingresa la cantidad, en GB, de memoria que deseas asignar.

  9. Para confirmar las GPUs, en la sección GPUs, haz clic en Agregar GPU y, luego, haz lo siguiente:

    1. En el campo Tipo de GPU, selecciona el tipo de GPU.
    2. En el campo Cantidad de GPU, ingresa la cantidad de GPU.
    3. Opcional: Si tu modelo de GPU es compatible con estaciones de trabajo virtuales (vWS) NVIDIA RTX para cargas de trabajo de gráficos y planeas ejecutar cargas de trabajo de alto contenido gráfico, selecciona la casilla de verificación Habilitar estación de trabajo virtual (NVIDIA GRID).
  10. Para confirmar el uso de discos SSD locales, en la sección SSD locales, haz clic en Agregar SSD y, luego, en el campo Cantidad de SSD, especifica la cantidad de discos.

  11. Para adjuntar una o más reservas existentes al compromiso, en el campo Reservas, selecciona Adjunta reservas existentes.

    La consola de Google Cloud muestra una lista de todas las reservas de tu proyecto cuya región, tipo de máquina y tipo de GPU coinciden con el compromiso. A continuación, sigue estos pasos:

    1. Opcional. Para ver reservas con propiedades específicas, en el menú Filtrar, agrega o quita filtros de las propiedades que quieras.
    2. Selecciona todas las reservas que deseas adjuntar al compromiso.
  12. Para terminar de comprar tu compromiso con las reservas adjuntas, haz lo siguiente:

    1. Haz clic en Comprar.
    2. En el diálogo Comprar un descuento por compromiso de uso, si aceptas las condiciones específicas del servicio, vuelve a hacer clic en Comprar.

gcloud

Para comprar un compromiso adjuntando reservas existentes, ejecuta el comando gcloud compute commitments create. En el comando, incluye la marca --existing-reservation para especificar una reserva existente que deseas adjuntar a tu compromiso. Incluye una instancia nueva de esta marca para cada reserva existente que desees adjuntar. Puedes adjuntar cualquier cantidad de reservas existentes a tu compromiso.

Por ejemplo, para comprar un compromiso y adjuntarle dos reservas, ejecuta el siguiente comando:

gcloud compute commitments create COMMITMENT_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
    --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
    --plan=DURATION \
    --type=COMMITMENT_TYPE \
    --existing-reservation=name='RESERVATION_NAME_1',zone='RESERVATION_ZONE_1' \
    --existing-reservation=name='RESERVATION_NAME_2',zone='RESERVATION_ZONE_2'

Reemplaza lo siguiente:

  • COMMITMENT_NAME: el nombre del compromiso
  • REGION: la región en la que se encuentra el compromiso
  • PROJECT_ID: el ID del proyecto en el que deseas adquirir el compromiso con las reservas conectadas.
  • DURATION: Es la duración del compromiso, que puede ser 12-month o 36-month.
  • COMMITMENT_TYPE: el tipo de compromiso. Los siguientes tipos de compromiso proporcionan opciones para GPUs, discos SSD locales o ambos:

    • accelerator-optimized para los recursos de tipos de máquinas A2
    • accelerator-optimized-a3 para los recursos de tipos de máquinas High A3
    • accelerator-optimized-a3-mega para los recursos de tipos de máquinas Mega A3
    • compute-optimized para los recursos de tipos de máquinas C2
    • compute-optimized-c2d para los recursos de tipos de máquinas C2D
    • compute-optimized-c3 para los recursos de tipos de máquinas C3
    • compute-optimized-c3d para los recursos de tipos de máquinas C3D
    • general-purpose para los recursos de tipo de máquina N1
    • general-purpose-n2 para los recursos de tipos de máquinas N2
    • general-purpose-n2d para los recursos de máquinas N2D
    • graphics-optimized para los recursos de tipos de máquinas G2
    • memory-optimized-m3 para los recursos de tipo de máquina M3
    • storage-optimized-z3 para los recursos de tipos de máquinas Z3

  • COMMITTED_VCPUS: es la cantidad de CPUs virtuales que deseas en el compromiso. Debe ser un número entero positivo.

  • COMMITTED_MEMORY: Es la cantidad de memoria, en MB o GB, que deseas en el compromiso. Por ejemplo, 10240MB o 10GB. Si no especificas una unidad, Compute Engine usa GB como unidad. Puedes comprar memoria en incrementos de 0.25 GB.

  • COMMITTED_LOCAL_SSD: la cantidad de espacio SSD local, expresada en GB, que deseas incluir en el compromiso. Cada disco SSD local es de 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: es la cantidad de GPUs que deseas en tu compromiso.

  • COMMITTED_ACCELERATOR_TYPE: el tipo de GPU que deseas en tu compromiso.

  • RESERVATION_NAME_1 y RESERVATION_NAME_2: los nombres de las reservas existentes que deseas conectar al compromiso.

  • RESERVATION_ZONE_1 y RESERVATION_ZONE_2: las zonas de las reservas existentes que deseas conectar al compromiso.

Ejemplo: Adquiere un compromiso conectando reservas existentes

Supongamos que tienes dos reservas res-01 y res-02 en las zonas us-central1-a y us-central1-b del proyecto myproject. Supongamos que estas reservas contienen una capacidad combinada para 4 GPUs NVIDIA P100 y 4 discos SSD locales. Para comprar un compromiso nuevo en la región us-central1 de este proyecto para estas GPUs y discos SSD locales, y usar estas reservas existentes como reservas adjuntas, ejecuta el siguiente comando. Ten en cuenta que el compromiso de ejemplo también contiene CPUs virtuales y memoria.

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --existing-reservation=name=res-01,zone=us-central1-a \
    --existing-reservation=name=res-02,zone=us-central1-b
    

REST

Para comprar un compromiso adjuntando reservas existentes, realiza una solicitud POST al método regionCommitments.insert. En tu solicitud, incluye el campo existingReservations para especificar una lista separada por comas de todas las reservas existentes que deseas adjuntar a tu compromiso. Puedes adjuntar cualquier cantidad de reservas existentes a tu compromiso.

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

{
  "name": "COMMITMENT_NAME",
  "plan": "DURATION",
  "type": COMMITMENT_TYPE,
  "resources":
  [
    {
      "amount": "COMMITTED_VCPUS",
      "type": "VCPU"
    },
    {
      "amount": "COMMITTED_MEMORY",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
      "amount": "COMMITTED_ACCELERATOR_COUNT",
      "type": "ACCELERATOR"
    }
    {
      "amount": "COMMITTED_LOCAL_SSD",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations": "RESERVATION_URLs"
}

Reemplaza lo siguiente:

  • COMMITMENT_NAME: el nombre del compromiso
  • REGION: la región en la que se encuentra el compromiso
  • PROJECT_ID: el ID del proyecto en el que deseas adquirir el compromiso con las reservas conectadas.
  • DURATION: La duración del compromiso, que puede ser TWELVE_MONTH o THIRTY_SIX_MONTH
  • COMMITMENT_TYPE: el tipo de compromiso. Los siguientes tipos de compromiso proporcionan opciones para GPUs, discos SSD locales o ambos:

    • ACCELERATOR_OPTIMIZED para los recursos de tipos de máquinas A2
    • ACCELERATOR_OPTIMIZED_A3 para los recursos de tipos de máquinas High A3
    • ACCELERATOR_OPTIMIZED_A3_MEGA para los recursos de tipos de máquinas Mega A3
    • COMPUTE_OPTIMIZED para los recursos de tipos de máquinas C2
    • COMPUTE_OPTIMIZED_C2D para los recursos de tipos de máquinas C2D
    • COMPUTE_OPTIMIZED_C3 para los recursos de tipos de máquinas C3
    • COMPUTE_OPTIMIZED_C3D para los recursos de tipos de máquinas C3D
    • GENERAL_PURPOSE para los recursos de tipo de máquina N1
    • GENERAL_PURPOSE_N2 para los recursos de tipos de máquinas N2
    • GENERAL_PURPOSE_N2D para los recursos de máquinas N2D
    • GRAPHICS_OPTIMIZED para los recursos de tipos de máquinas G2
    • MEMORY_OPTIMIZED_M3 para los recursos de tipo de máquina M3
    • STORAGE_OPTIMIZED_Z3 para los recursos de tipos de máquinas Z3

  • COMMITTED_VCPUS: es la cantidad de CPUs virtuales que deseas en el compromiso. Debe ser un número entero positivo.

  • COMMITTED_MEMORY: la cantidad de memoria, en MB, que deseas en el compromiso. Un ejemplo es 10240MB. Puedes comprar memoria en incrementos de 256 MB.

  • COMMITTED_LOCAL_SSD: la cantidad de espacio SSD local, expresada en GB, que deseas incluir en el compromiso. Cada SSD local es de 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: es la cantidad de GPUs que deseas en tu compromiso.

  • COMMITTED_ACCELERATOR_TYPE: el tipo de GPU que deseas en tu compromiso.

  • RESERVATION_URLs: una lista separada por comas de las URLs de las reservas existentes que deseas adjuntar al compromiso. Por ejemplo, para adjuntar dos reservas, res-1 y res-2, especifica lo siguiente:

    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/example-res-1",
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/reservations/example-res-2"
    

Ejemplo: Adquiere un compromiso conectando reservas existentes

Supongamos que tienes dos reservas res-01 y res-02 en las zonas us-central1-a y us-central1-b del proyecto myproject. Supongamos que estas reservas contienen una capacidad combinada para 4 GPUs NVIDIA P100 y 4 discos SSD locales. Para comprar un compromiso nuevo en la región us-central1 de este proyecto para estas GPUs y discos SSD locales, y usar estas reservas existentes como reservas adjuntas, realiza la siguiente solicitud POST. Ten en cuenta que el compromiso de ejemplo también contiene CPUs virtuales y memoria.

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE"
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    },
    {
      "amount": "1536000",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations":
  [
    "https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/reservations/res-01",
    "https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-b/reservations/res-02"
  ]
}

Crea reservas nuevas para adjuntarlas

Puedes crear las reservas adjuntas mientras compras tu compromiso con la console de Google Cloud, Google Cloud CLI o REST.

Console

Antes de adquirir un compromiso con la consola de Google Cloud, elige el proyecto que deseas usar para adquirirlo. Si el uso compartido de CUD está habilitado para una cuenta de Facturación de Cloud, puedes adquirir el compromiso con cualquier proyecto de esa cuenta de Facturación de Cloud. Después de seleccionar el proyecto, haz lo siguiente:

  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, haz clic en Adquirir un compromiso. Se abrirá la página Comprar un descuento por compromiso de uso y se mostrará la pestaña Hardware.

  3. En el campo Nombre, escribe el nombre de tu compromiso.

  4. En el campo Región, selecciona la región en la que deseas confirmar los recursos de Compute Engine.

  5. En el campo Tipo de compromiso, selecciona la serie de la familia de máquinas para tus recursos comprometidos. Los siguientes tipos de compromiso proporcionan opciones para GPUs, discos SSD locales o ambos:

    • A2 optimizada para aceleradores para recursos de tipos de máquinas A2
    • A3 optimizada para aceleradores para recursos de tipos de máquinas altas A3
    • A3 Mega con optimización de acelerador para recursos de tipos de máquinas A3 Mega
    • C2 optimizada para procesamiento para los recursos de tipo de máquina C2
    • C2D optimizado para procesamiento para los recursos de tipo de máquina C2D
    • C3 de uso general para los recursos de tipo de máquina C3
    • C3D de uso general para los recursos de tipo de máquina C3D
    • N1 de uso general para los recursos de tipo de máquina N1
    • N2 de uso general para los recursos de tipo de máquina N2
    • N2D de uso general para los recursos de tipo de máquina N2D
    • G2 con optimización para gráficos para los recursos de tipo de máquina G2
    • M3 con optimización de memoria para los recursos de tipo de máquina M3
    • Z3 con optimización de almacenamiento para los recursos de tipos de máquinas Z3

  6. En Duración, elige 1 año o 3 años como la duración del período de tu compromiso.

  7. En el campo Núcleos, ingresa la cantidad de CPU virtuales a las que deseas comprometerte.

  8. En el campo Memoria, ingresa la cantidad, en GB, de memoria que deseas asignar.

  9. Para confirmar las GPUs, en la sección GPUs, haz clic en Agregar GPU y, luego, haz lo siguiente:

    1. En el campo Tipo de GPU, selecciona el tipo de GPU.
    2. En el campo Cantidad de GPU, ingresa la cantidad de GPU.
    3. Opcional: Si tu modelo de GPU es compatible con estaciones de trabajo virtuales (vWS) NVIDIA RTX para cargas de trabajo de gráficos y planeas ejecutar cargas de trabajo de alto contenido gráfico, selecciona la casilla de verificación Habilitar estación de trabajo virtual (NVIDIA GRID).
  10. Para confirmar el uso de discos SSD locales, en la sección SSD locales, haz clic en Agregar SSD y, luego, en el campo Cantidad de SSD, especifica la cantidad de discos.

  11. Para crear una reserva nueva y adjuntarla al compromiso, en el campo Reservas, selecciona Crear reservas y, luego, haz lo siguiente. Repite este paso para cada reserva nueva que desees crear y adjuntar.

    1. Haz clic en Agregar una reserva. Aparecerá la sección Nueva reserva.
    2. En el campo Nombre, ingresa un nombre para la reserva adjunta.
    3. En el campo Región, selecciona la misma región que tu compromiso.
    4. En el campo Zona, selecciona la zona en la que deseas reservar tus recursos.
    5. En la sección Tipo de recurso compartido, especifica cómo quieres compartir esta reserva de una de las siguientes maneras:

      • Para crear una reserva de un solo proyecto, selecciona Local.
      • Para crear una reserva que se comparta con varios proyectos, selecciona Compartido. Luego, para especificar los proyectos con los que deseas compartir esta reserva, haz clic en Agregar proyectos y, luego, selecciona los proyectos que deseas de la organización del proyecto actual.
    6. En el campo Usar con instancia de VM, selecciona cómo deseas que las VMs consuman tu reserva de una de las siguientes maneras:

      • Para permitir que las VMs con propiedades coincidentes consuman automáticamente esta reserva, haz clic en Usar reserva de forma automática (predeterminado).
      • Para consumir los recursos de esta reserva solo cuando creas VMs con propiedades coincidentes que se dirigen de forma específica a esta reserva por nombre, haz clic en Seleccionar reserva específica.
    7. En la sección Detalles del recurso, especifica la siguiente información:

      1. En el campo Cantidad de instancias de VM, ingresa la cantidad de instancias de VM que deseas reservar.
      2. En la sección Configuración de la máquina, especifica las propiedades de las VMs reservadas de una de las siguientes maneras:

        1. Para especificar las propiedades de tus VMs de una plantilla de instancias existente, selecciona Usar plantilla de instancias.

          En el campo Plantilla de instancias, selecciona una plantilla de instancias que especifique la misma serie de la familia de máquinas que tu compromiso. Si seleccionas una plantilla de instancias regional, la región de esa plantilla de instancias también debe coincidir con la región especificada en tu compromiso.

        2. Para especificar manualmente las propiedades de tus VMs, selecciona Seleccionar tipo de máquina y, luego, haz lo siguiente:

          1. Selecciona la familia de máquinas que se aplica a la serie de máquinas que especificaste para el compromiso:

            • De uso general para series de máquinas de uso general
            • Optimizadas para procesamiento para series de máquinas optimizadas para procesamiento
            • Optimización de memoria para series de máquinas con optimización de memoria
            • GPUs para series de máquinas optimizadas para aceleradores
          2. En la tabla que tiene la columna Serie, selecciona la misma serie de máquinas que especificaste para el compromiso.

          3. En el campo Tipo de máquina, especifica un tipo de máquina predefinido o personalizado de una de las siguientes maneras:

            1. Para elegir un tipo predefinido de máquina, selecciona Predeterminado y, luego, elige el tipo de máquina que desees.
            2. Para elegir un tipo personalizado de máquina, selecciona Personalizado y, luego, especifica los Núcleos y la Memoria que desees.
          4. Para especificar una plataforma de CPU mínima, GPUs o ambas, expande el menú Plataforma de CPU y GPU y haz lo siguiente:

            1. Opcional: Para especificar una plataforma de CPU mínima, elige una opción en la lista Formulario de CPU.
            2. Opcional: Para reservar GPUs, haz clic en Agregar GPU. Luego, en los campos Tipo de GPU y Cantidad de GPU, elige el tipo y la cantidad de GPU para cada VM.

          5. Para reservar discos SSD locales, haz lo siguiente:

            1. En el campo Cantidad de discos, selecciona la cantidad de discos SSD locales que deseas para cada VM.
            2. En el campo Tipo de interfaz, selecciona la interfaz para los discos SSD locales.
    8. Para terminar de especificar las propiedades de esta reserva, haz clic en Listo.

  12. Para terminar de comprar tu compromiso con las reservas adjuntas, haz lo siguiente:

    1. Haz clic en Comprar.
    2. En el diálogo Comprar un descuento por compromiso de uso, si aceptas las condiciones específicas del servicio, vuelve a hacer clic en Comprar.

gcloud

Para crear las reservas adjuntas mientras compras el compromiso, ejecuta el comando gcloud compute commitments create.

Según si deseas adjuntar una sola reserva o varias, ejecuta el comando de una de las siguientes maneras:

  • Para crear y adjuntar una sola reserva a tu compromiso, define las propiedades de la reserva adjunta ejecutando el siguiente comando:

    gcloud compute commitments create COMMITMENT_NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --plan DURATION \
        --type COMMITMENT_TYPE
        --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
        --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
        --reservation=RESERVATION_NAME \
        --reservation-zone=RESERVATION_ZONE \
        --machine-type=RESERVED_MACHINE_TYPE \
        --require-specific-reservation=REQUIRE_SPECIFIC_RESERVATION_VALUE \
        --vm-count=NUMBER_OF_RESERVED_VMs \
        --accelerator=type=RESERVED_ACCELERATOR_TYPE,count=RESERVED_ACCELERATOR_COUNT \
        --local-ssd=interface=INTERFACE_1,size=375 \
        --local-ssd=interface=INTERFACE_2,size=375 \
        --minimum-cpu-platform=MINIMUM_CPU_PLATFORM \
        --share-setting=SHARE_SETTING \
        --share-with=CONSUMER_PROJECT_ID_1,CONSUMER_PROJECT_ID_2
    
  • Para crear y adjuntar varias reservas a tu compromiso, define las propiedades de la reserva con un archivo YAML y, luego, especifícalo en el comando que usas para comprar el compromiso. De forma opcional, también puedes usar este enfoque de archivo YAML para crear y adjuntar una sola reserva a tu compromiso. Para crear tus reservas adjuntas con este enfoque, haz lo siguiente:

    1. Crea el archivo YAML en el directorio actual y especifica la configuración que deseas para cada reserva conectada. Por ejemplo, para especificar la configuración de una reserva compartida con dos proyectos que especifican GPU, dos discos SSD locales y una plataforma de CPU mínima, incluye el siguiente texto en tu archivo YAML:

      - reservation: RESERVATION_NAME
        reservation_zone: RESERVATION_ZONE
        require_specific_reservation: REQUIRE_SPECIFIC_RESERVATION_VALUE
        vm_count: NUMBER_OF_RESERVED_VMs
        machine_type: RESERVED_MACHINE_TYPE
        accelerator:
        - count: RESERVED_ACCELERATOR_COUNT
          type: RESERVED_ACCELERATOR_TYPE
        localssd:
        - interface: INTERFACE_1
          size: 375
        - interface: INTERFACE_2
          size: 375
        project: OWNER_PROJECT_ID
        minimum-cpu-platform: MINIMUM_CPU_PLATFORM
        share-setting: SHARE_SETTING
        share-with:
        - CONSUMER_PROJECT_ID_1
        - CONSUMER_PROJECT_ID_2
      
      

      Para especificar la configuración de varias reservas, repite estas propiedades para cada reserva que desees crear. Puedes adjuntar cualquier cantidad de reservas existentes que desees a tu compromiso.

    2. Ejecuta el comando gcloud compute commitments create y, además, incluye la marca --reservation-from-file.

      gcloud compute commitments create COMMITMENT_NAME \
          --region REGION \
          --project PROJECT_ID \
          --plan DURATION \
          --type COMMITMENT_TYPE \
          --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
          --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
          --reservations-from-file=YAML_FILE
      

Reemplaza lo siguiente por las propiedades correspondientes del compromiso y las reservas conectadas:

Compromiso

  • COMMITMENT_NAME: el nombre del compromiso
  • REGION: la región en la que se encuentra el compromiso
  • PROJECT_ID: el ID del proyecto en el que deseas adquirir el compromiso con las reservas conectadas.
  • DURATION: La duración del compromiso, que puede ser 12-month o 36-month
  • COMMITMENT_TYPE: el tipo de compromiso. Los siguientes tipos de compromiso proporcionan opciones para GPUs, discos SSD locales o ambos:

    • accelerator-optimized para los recursos de tipos de máquinas A2
    • accelerator-optimized-a3 para los recursos de tipos de máquinas High A3
    • accelerator-optimized-a3-mega para los recursos de tipos de máquinas Mega A3
    • compute-optimized para los recursos de tipos de máquinas C2
    • compute-optimized-c2d para los recursos de tipos de máquinas C2D
    • compute-optimized-c3 para los recursos de tipos de máquinas C3
    • compute-optimized-c3d para los recursos de tipos de máquinas C3D
    • general-purpose para los recursos de tipo de máquina N1
    • general-purpose-n2 para los recursos de tipos de máquinas N2
    • general-purpose-n2d para los recursos de máquinas N2D
    • graphics-optimized para los recursos de tipos de máquinas G2
    • memory-optimized-m3 para los recursos de tipo de máquina M3
    • storage-optimized-z3 para los recursos de tipos de máquinas Z3

  • COMMITTED_VCPUS: es la cantidad de CPUs virtuales que deseas en el compromiso. Debe ser un número entero positivo.

  • COMMITTED_MEMORY: Es la cantidad de memoria, en MB o GB, que deseas en el compromiso. Por ejemplo, 10GB o 10240MB. Si no especificas una unidad, Compute Engine usa GB como unidad. Puedes comprar memoria en incrementos de 0.25 GB.

  • COMMITTED_LOCAL_SSD: la cantidad de espacio SSD local, expresada en GB, que deseas incluir en el compromiso. Cada disco SSD local es de 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: es la cantidad de GPUs que deseas en tu compromiso.

  • COMMITTED_ACCELERATOR_TYPE: el tipo de GPU que deseas en tu compromiso.

  • YAML_FILE: es la ruta al archivo YAML que contiene la configuración de las reservas conectadas.

Reservas adjuntas

  • RESERVATION_NAME: el nombre de la reserva conectada.
  • RESERVATION_ZONE: la zona de la reserva conectada.
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: especifica si la reserva conectada es una reserva dirigida de forma específica, ya sea true o false. Para obtener más información sobre las reservas segmentadas de forma específica, consulta Cómo funcionan las reservas.
  • NUMBER_OF_RESERVED_VMS: el número de VMs que deseas reservar en la reserva conectada.
  • RESERVED_MACHINE_TYPE: el tipo de máquina que deseas para las VMs en tu reserva conectada.

    • Para los tipos de máquinas predefinidos, usa el formato MACHINE_FAMILY-standard-CPUS; por ejemplo, n2-standard-4.
    • Para los tipos de máquinas personalizados, usa el formato MACHINE_FAMILY-custom-CPUS-MEMORY; por ejemplo, n2-custom-4-5120. Si deseas obtener una lista completa de las restricciones, consulta las especificaciones para los tipos personalizados de máquinas.

      Reemplaza lo siguiente:

      • MACHINE_FAMILY: la familia de tipos de máquinas; por ejemplo, especifica n2 para las VMs N2.
      • CPUS: Es la cantidad de vCPUs.
      • MEMORY: la memoria total para una VM reservada. La memoria debe ser un múltiplo de 256 MB y debe proporcionarse en MB; por ejemplo, para crear una VM N2 con 4 CPUs virtuales y 5 GB de memoria, que son 5,120 MB, usa n2-custom-4-5120.
  • RESERVED_ACCELERATOR_COUNT: el número de GPUs que deseas agregar, por VM, en la reserva conectada.

  • RESERVED_ACCELERATOR_TYPE: el tipo de acelerador que deseas agregar en la reserva de reemplazo.

  • INTERFACE_1 y INTERFACE_2: son el tipo de interfaz que deseas que usen los discos SSD locales para cada VM reservada. Las opciones válidas son: scsi y nvme. Cada disco SSD local es de 375 GB. Repite el parámetro local_ssd para cada disco SSD local que desees agregar. Puedes especificar hasta 24 discos SSD locales.

  • OWNER_PROJECT_ID: el ID del proyecto en el que deseas adquirir el compromiso con la reserva conectada. Especifica este campo si deseas compartir tu reserva conectada en varios proyectos de consumidor.

  • MINIMUM_CPU_PLATFORM: la plataforma de CPU mínima que deseas especificar para la reserva conectada.

  • SHARE_SETTING: es el tipo de uso compartido de la reserva conectada. Especifica este campo con el valor como projects si deseas compartir tu reserva conectada en varios proyectos de consumidor. Excluye este campo si deseas crear una reserva de un solo proyecto.

  • CONSUMER_PROJECT_ID_1 y CONSUMER_PROJECT_ID_2: son los IDs de los proyectos que pueden compartir esta reserva, por ejemplo project-1 y project-2. Puedes incluir hasta 100 proyectos de consumidor. Estos proyectos deben estar en la misma organización que el proyecto de propietario. No incluyas el ID del proyecto en el que creas esta reserva, ya que ese proyecto puede consumirla de forma predeterminada. Excluye estos campos si deseas crear una reserva de un solo proyecto.

Compute Engine crea el compromiso con las reservas conectadas solo si hay suficientes recursos del tipo de máquina especificado en la zona de destino y una cuota suficiente en el momento en que se realiza tu solicitud. Si la compra se realizó correctamente, verás un mensaje de confirmación similar al siguiente:

Created[https://www.googleapis.com/compute/v1/projects/your-project/regions/your-region/commitments/your-commitment-name]

Ejemplos para comprar compromisos mediante la creación de reservas nuevas para conectarlas

En los siguientes ejemplos de situaciones y comandos, se muestra cómo puedes comprar un compromiso para GPUs, discos SSD locales o ambos creando reservas nuevas para conectarlas a ese compromiso.

Ejemplo 1: Adquiere un compromiso para GPUs mediante la vinculación de una sola reserva nueva

Supongamos que deseas comprar un compromiso de commitment-01 en la región us-central1 que incluye 4 GPUs NVIDIA V100. Deseas crear una reserva nueva reservation-01 como la reserva conectada para esas GPUs. Supongamos que también deseas especificar Compute Engine para usar esas GPUs reservadas en 2 VMs n1-standard-32 en la zona us-central1-a. Para comprar este compromiso de ejemplo con su reserva conectada, ejecuta el siguiente comando:

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --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

Ejemplo 2: Compra un compromiso para GPU sin comprometerte a usar CPUs virtuales o memoria

Para comprometerte a usar y reservar GPUs y discos SSD locales sin comprometerte a usar CPUs virtuales ni memoria, especifica 0 como el valor de la cantidad de CPUs virtuales y memoria. Por ejemplo, supongamos que deseas comprar un compromiso commitment-02 para una sola GPU NVIDIA P4 en la región us-west2. También quieres crear una reserva nueva como la reserva adjunta y especificar Compute Engine para usar la GPU reservada en una VM n1-standard-2 en la zona us-west2-b. Para comprar este compromiso de ejemplo con su reserva conectada, ejecuta el siguiente comando:

gcloud compute commitments create commitment-02 \
    --region=us-west2 \
    --project=myproject \
    --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

Ejemplo 3: Compra un compromiso para GPUs y discos SSD locales mediante la conexión de varias reservas nuevas

Supongamos que deseas adquirir un compromiso commitment-03 para 1 GPU NVIDIA V100 y 2 discos SSD locales en la región us-central1. También querrás crear y adjuntar dos reservas en la zona us-central1-a. En la primera reserva, res-01, quieres reservar 1 VM n1-standard-2 con 1 GPU. Deseas hacer que res-01 sea una reserva orientada, lo que significa que debes dirigirte a esa reserva de forma específica por nombre para usar sus VMs reservadas. En la segunda reserva, res-02, deseas reservar 1 VM n1-standard-8 con 2 tipos de discos SSD locales conectados.

Para comprar este compromiso de ejemplo con las reservas adjuntas, primero crea el archivo YAML con las propiedades de ambas reservas.

- 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-8
  local_ssd:
  - interface: scsi
    size: 375
  - interface: nvme
    size: 375

Después de crear el archivo YAML, para terminar de comprar el compromiso con sus reservas adjuntas, ejecuta el siguiente comando. Ten en cuenta que el compromiso de ejemplo también contiene recursos de CPU virtual y memoria.

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

REST

Para crear las reservas adjuntas mientras compras tu compromiso, realiza una solicitud POST al método regionCommitments.insert. En tu solicitud, incluye el campo reservations para definir una lista de todas las reservas nuevas que deseas crear y adjuntar. Puedes adjuntar cualquier cantidad de reservas existentes que desees a tu compromiso.

  • Para crear tu reserva nueva especificando manualmente todas las propiedades de la VM, incluye el campo instanceProperties y excluye el campo sourceInstanceTemplate.

    Por ejemplo, para especificar de forma manual la configuración de una reserva compartida con dos proyectos que especifican GPU, dos discos SSD locales y una plataforma de CPU mínima, realiza la siguiente solicitud:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "DURATION",
    "type": COMMITMENT_TYPE,
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      }
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": "RESERVED_ACCELERATOR_COUNT",
                "acceleratorType": "RESERVED_ACCELERATOR_TYPE"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_1"
              },
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_2"
              }
            ],
            "machineType": "RESERVED_MACHINE_TYPE",
            "minCpuPlatform": "MINIMUM_CPU_PLATFORM"
          }
        },
        "specificReservationRequired": REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap":
          {
            "CONSUMER_PROJECT_ID_1":
            {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2":
            {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        }
      }
    ]
    }
    
    
  • Para crear tu reserva nueva especificando una plantilla de instancias, incluye el campo sourceInstanceTemplate y excluye el campo instanceProperties.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "DURATION",
    "type": COMMITMENT_TYPE,
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      }
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        },
        "specificReservationRequired": REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "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 por las propiedades correspondientes del compromiso y las reservas conectadas:

Compromiso

  • COMMITMENT_NAME: el nombre del compromiso
  • REGION: la región en la que se encuentra el compromiso
  • PROJECT_ID: el ID del proyecto en el que deseas adquirir el compromiso con las reservas conectadas.
  • DURATION: Es la duración del compromiso, que puede ser TWELVE_MONTH o THIRTY_SIX_MONTH.
  • COMMITMENT_TYPE: el tipo de compromiso. Los siguientes tipos de compromiso proporcionan opciones para GPUs, discos SSD locales o ambos:

    • ACCELERATOR_OPTIMIZED para los recursos de tipos de máquinas A2
    • ACCELERATOR_OPTIMIZED_A3 para los recursos de tipos de máquinas High A3
    • ACCELERATOR_OPTIMIZED_A3_MEGA para los recursos de tipos de máquinas Mega A3
    • COMPUTE_OPTIMIZED para los recursos de tipos de máquinas C2
    • COMPUTE_OPTIMIZED_C2D para los recursos de tipos de máquinas C2D
    • COMPUTE_OPTIMIZED_C3 para los recursos de tipos de máquinas C3
    • COMPUTE_OPTIMIZED_C3D para los recursos de tipos de máquinas C3D
    • GENERAL_PURPOSE para los recursos de tipo de máquina N1
    • GENERAL_PURPOSE_N2 para los recursos de tipos de máquinas N2
    • GENERAL_PURPOSE_N2D para los recursos de máquinas N2D
    • GRAPHICS_OPTIMIZED para los recursos de tipos de máquinas G2
    • MEMORY_OPTIMIZED_M3 para los recursos de tipo de máquina M3
    • STORAGE_OPTIMIZED_Z3 para los recursos de tipos de máquinas Z3

  • COMMITTED_VCPUS: es la cantidad de CPUs virtuales que deseas en el compromiso. Debe ser un número entero positivo.

  • COMMITTED_MEMORY: la cantidad de memoria, en MB, que deseas en el compromiso. Un ejemplo es 10240MB. Puedes comprar memoria en incrementos de 256 MB.

  • COMMITTED_LOCAL_SSD: la cantidad de espacio SSD local, expresada en GB, que deseas incluir en el compromiso. Cada disco SSD local es de 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: es la cantidad de GPUs que deseas en tu compromiso.

  • COMMITTED_ACCELERATOR_TYPE: el tipo de GPU que deseas en tu compromiso.

Reservas adjuntas

  • RESERVATION_NAME: el nombre de la reserva conectada.
  • RESERVATION_ZONE: la zona de la reserva conectada.
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: especifica si la reserva conectada es una reserva dirigida de forma específica, ya sea true o false. Para obtener más información sobre las reservas segmentadas de forma específica, consulta Cómo funcionan las reservas.
  • NUMBER_OF_RESERVED_VMS: el número de VMs que deseas reservar en la reserva conectada.
  • RESERVED_MACHINE_TYPE: el tipo de máquina que deseas para las VMs en tu reserva conectada.

    • Para los tipos de máquinas predefinidos, usa el formato MACHINE_FAMILY-standard-CPUS; por ejemplo, n2-standard-4.
    • Para los tipos de máquinas personalizados, usa el formato MACHINE_FAMILY-custom-CPUS-MEMORY; por ejemplo, n2-custom-4-5120. Si deseas obtener una lista completa de las restricciones, consulta las especificaciones para los tipos personalizados de máquinas.

      Reemplaza lo siguiente:

      • MACHINE_FAMILY: la familia de tipos de máquinas; por ejemplo, especifica n2 para las VMs N2.
      • CPUS: Es la cantidad de vCPUs.
      • MEMORY: la memoria total para una VM reservada. La memoria debe ser un múltiplo de 256 MB y debe proporcionarse en MB; por ejemplo, para crear una VM N2 con 4 CPUs virtuales y 5 GB de memoria, que son 5,120 MB, usa n2-custom-4-5120.
  • RESERVED_ACCELERATOR_COUNT: el número de GPUs que deseas agregar, por VM, en la reserva conectada.

  • RESERVED_ACCELERATOR_TYPE: el tipo de acelerador que deseas agregar en la reserva de reemplazo.

  • INTERFACE_1 y INTERFACE_2: son el tipo de interfaz que deseas que usen los discos SSD locales para cada VM reservada. Las opciones válidas son: scsi y nvme. Cada disco SSD local es de 375 GB. Repite el parámetro localSsds para cada disco SSD local que desees agregar. Puedes especificar hasta 24 discos SSD locales.

  • MINIMUM_CPU_PLATFORM: la plataforma de CPU mínima que deseas especificar para la reserva conectada.

  • INSTANCE_TEMPLATE_NAME: Es el nombre de la plantilla de instancias que quieres usar para crear la reserva adjunta.

  • SHARE_SETTING: es el tipo de uso compartido de la reserva conectada. Especifica este campo con el valor como SPECIFIC_PROJECTS si deseas compartir tu reserva conectada en varios proyectos de consumidor. Excluye este campo si deseas crear una reserva de un solo proyecto.

  • CONSUMER_PROJECT_ID_1 y CONSUMER_PROJECT_ID_2: son los IDs de los proyectos que pueden compartir esta reserva, por ejemplo project-1 y project-2. Puedes incluir hasta 100 proyectos de consumidor. Estos proyectos deben estar en la misma organización que el proyecto de propietario. No incluyas el ID del proyecto en el que creas esta reserva, ya que ese proyecto puede consumirla de forma predeterminada. Excluye estos campos si deseas crear una reserva de un solo proyecto.

Compute Engine crea el compromiso con las reservas conectadas solo si hay suficientes recursos del tipo de máquina especificado en la zona de destino y una cuota suficiente en el momento en que se realiza tu solicitud. Si la compra se realizó correctamente, Compute Engine muestra un estado 200 para tu solicitud a la API de REST.

Ejemplos para comprar compromisos mediante la creación de reservas nuevas para conectarlas

En los siguientes ejemplos de situaciones y comandos, se muestra cómo puedes comprar un compromiso para GPUs, discos SSD locales o ambos creando reservas nuevas para conectarlas a ese compromiso.

Ejemplo 1: Adquiere un compromiso para GPUs mediante la vinculación de una sola reserva nueva

Supongamos que deseas comprar un compromiso de commitment-01 en la región us-central1 que incluye 4 GPUs NVIDIA V100. Deseas crear una reserva nueva reservation-01 como la reserva conectada para esas GPUs. Supongamos que también quieres especificar Compute Engine para usar esas GPUs reservadas en 2 VMs n1-standard-8 en la zona us-central1-a. Para comprar este compromiso de ejemplo con su reserva conectada, realiza la siguiente solicitud POST:

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE"
  "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"
    }
  ]
}

Ejemplo 2: Compra un compromiso para GPU sin comprometerte a usar CPUs virtuales o memoria

Para comprometerte a usar y reservar GPUs y discos SSD locales sin comprometerte a usar CPUs virtuales ni memoria, especifica 0 como el valor de la cantidad de CPUs virtuales y memoria. Por ejemplo, supongamos que deseas comprar un compromiso commitment-02 para una sola GPU NVIDIA P4 en la región us-west2. También quieres crear una reserva nueva como la reserva conectada y especificar Compute Engine para usar la GPU reservada en una VM n1-standard-2 en la zona us-west2-b. Para comprar este compromiso de ejemplo con su reserva conectada, realiza la siguiente solicitud POST:

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west2/commitments

{
  "name": "commitment-02",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p4",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 4,
              "acceleratorType": "nvidia-tesla-p4"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-west2-b"
    }
  ]
}

Ejemplo 3: Compra un compromiso para GPUs y discos SSD locales mediante la conexión de varias reservas nuevas

Supongamos que deseas adquirir un compromiso commitment-03 para 1 GPU NVIDIA V100 y 2 discos SSD locales en la región us-central1. También querrás crear y adjuntar dos reservas en la zona us-central1-a. En la primera reserva, res-01, quieres reservar 1 VM n1-standard-2 con 1 GPU. Deseas hacer que res-01 sea una reserva orientada, lo que significa que debes dirigirte a esa reserva de forma específica por nombre para usar sus VMs reservadas. En la segunda reserva, res-02, deseas reservar 1 VM n1-standard-8 con 2 tipos de discos SSD locales conectados. Para comprar este compromiso de ejemplo con las reservas adjuntas, realiza la siguiente solicitud POST. Ten en cuenta que el compromiso de ejemplo también contiene recursos de CPU virtual y memoria.

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-03",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "1",
      "type": "ACCELERATOR"
    },
    {
      "amount": "768000",
      "type": "LOCAL_SSD"
    }
  ],
  "reservations":
  [
    {
      "name": "res-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "us-central1-a"
    },
    {
      "name": "res-02",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "SCSI"
            },
            {
              "diskSizeGb": "375",
              "interface": "NVME"
            }
          ]
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

Reemplaza las reservas conectadas a los compromisos

Reemplaza la reserva adjunta existente de tu compromiso por una nueva si deseas modificar los tipos y la cantidad de VMs que usan tus recursos comprometidos.

La reserva de reemplazo siempre será una reserva recién creada. Para reemplazar una reserva adjunta, debes especificar las propiedades de la reserva que deseas usar como reemplazo. Luego, Compute Engine crea automáticamente una reserva nueva con estas propiedades y la usa para reemplazar la reserva adjunta. No puedes usar una reserva existente para reemplazar la que adjuntaste.

Cambios permitidos

Cuando reemplazas la reserva conectada existente de un compromiso por una reserva nueva, puedes solicitar cualquiera de los siguientes cambios:

  • Puedes reservar las VMs desde un tipo de máquina diferente. Sin embargo, aún debes reservar VMs de la misma familia de máquinas para seguir recibiendo CUDs para tus recursos reservados.
  • Puedes cambiar la cantidad de VMs que deseas reservar.
  • Puedes cambiar la cantidad de GPU y discos SSD locales conectados a cada VM, siempre que la cantidad total de GPU reservadas y discos SSD locales siga siendo iguales.
  • Puedes especificar que tus reservas reemplazadas sean reservas locales o compartidas.

Requisitos

Cuando reemplazas la reserva conectada de tu compromiso por una nueva, tu solicitud debe cumplir con los siguientes requisitos:

  • Solo puedes reemplazar una reserva conectada a la vez por una nueva. Para reemplazar una reserva conectada, quita una reserva conectada existente de forma simultánea mediante la configuración de su recuento de VM en 0 y define una reserva conectada nueva que desees reemplazar.
  • La reserva nueva debe estar en el mismo proyecto que el compromiso.
  • La reserva nueva debe estar en la misma zona que la reserva que se quitó.
  • La cantidad y los tipos de GPUs especificados en la reserva nueva deben coincidir con la reserva que se quitó.
  • Las cantidades y los tipos de discos SSD locales especificados en la reserva nueva deben coincidir con la reserva que se quitó.
  • Solo puedes cambiar hasta 100 VMs por solicitud. Para realizar un cambio que incluya más de 100 VMs, divide el cambio en varias solicitudes más pequeñas o comunícate con la asistencia de Google Cloud.

Tu solicitud para reemplazar una reserva también depende de la disponibilidad de capacidad en ese momento. Si la capacidad de una solicitud no está disponible, la solicitud falla y muestra un error de disponibilidad de recursos; puedes intentar resolverlo mediante la modificación o aplazamiento de la solicitud. Si deseas obtener más información, consulta la documentación para solucionar problemas de disponibilidad de recursos.

Si tu solicitud para reemplazar una reserva conectada falla, la reserva conectada y los recursos reservados existentes no se verán afectados. Para conservar tu capacidad, espera a que se realicen los cambios correspondientes en tus VMs hasta que tu solicitud de reemplazar una reserva se realice de forma correcta.

Pasos para reemplazar una reserva conectada

Puedes reemplazar las reservas de un compromiso mediante Google Cloud CLI o REST.

gcloud

Para reemplazar las reservas conectadas a los compromisos, haz lo siguiente:

  1. Crea un archivo YAML en el directorio actual con la configuración de las siguientes reservas conectadas:

    El contenido del archivo YAML es similar al siguiente:

    - reservation: CURRENT_RESERVATION_NAME
      reservation_zone: CURRENT_RESERVATION_ZONE
      vm_count: 0
      machine_type: CURRENT_RESERVATION_MACHINE_TYPE
      accelerator:
      - count: CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS
        type: CURRENT_RESERVATION_ACCELERATOR_TYPE
      local_ssd:
      - interface: CURRENT_RESERVATION_INTERFACE_1
        size: 375
      - interface: CURRENT_RESERVATION_INTERFACE_2
        size: 375
      project: CURRENT_RESERVATION_PROJECT_ID
      share_setting: CURRENT_RESERVATION_SHARE_SETTING
      share_with:
      - CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1
      - CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2
    - reservation: REPLACEMENT_RESERVATION_NAME
      reservation_zone: REPLACEMENT_RESERVATION_ZONE
      vm_count: REPLACEMENT_RESERVATION_NUMBER_OF_VMs
      machine_type: REPLACEMENT_RESERVATION_MACHINE_TYPE
      accelerator:
      - count: REPLACEMENT_RESERVATION_ACCELERATOR_COUNT
        type: REPLACEMENT_RESERVATION_ACCELERATOR_TYPE
      local_ssd:
      - interface: REPLACEMENT_RESERVATION_INTERFACE_1
        size: 375
      - interface: REPLACEMENT_RESERVATION_INTERFACE_2
        size: 375
      project: REPLACEMENT_RESERVATION_PROJECT_ID
      share_setting: REPLACEMENT_RESERVATION_SHARE_SETTING
      share_with:
      - REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
      - REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2
    
    

    Reemplaza lo siguiente por las propiedades correspondientes de las reservas actuales y de reemplazo:

    Reserva actual

    Para la reserva actual, todas las propiedades siguientes deben ser exactamente iguales a las que viste cuando viste la reserva. Omite los campos para cualquier propiedad que la reserva actual aún no tenga.

    • CURRENT_RESERVATION_NAME: es el nombre de la reserva conectada actual.
    • CURRENT_RESERVATION_ZONE: es la zona de la reserva conectada actual.
    • CURRENT_RESERVATION_MACHINE_TYPE: es el tipo de máquina de la reserva conectada actual.
    • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS: es la cantidad de GPU reservadas en la reserva conectada actual.
    • CURRENT_RESERVATION_ACCELERATOR_TYPE: es el tipo de acelerador reservado en la reserva conectada actual.
    • CURRENT_RESERVATION_INTERFACE_1 y CURRENT_RESERVATION_INTERFACE_2: el tipo de interfaz que usan los discos SSD locales para cada VM reservada en la reserva conectada actual. Las opciones válidas son: scsi y nvme. Cada disco SSD local es de 375 GB. Repite el parámetro local_ssd para todos los discos SSD locales reservados.
    • CURRENT_RESERVATION_PROJECT_ID: es el ID del proyecto actual que tiene el compromiso y la reserva conectada. Especifica este campo si tu reserva actual conectada se comparte entre varios proyectos de consumidores.
    • CURRENT_RESERVATION_SHARE_SETTING: es el tipo de uso compartido de la reserva actual. Especifica este campo con el valor como projects si tu reserva conectada actual se comparte en varios proyectos de consumidor.
    • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 y CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2: son los IDs de los proyectos con los que compartes la reserva conectada actual, por ejemplo, project-1 y project-2.

    Reserva de reemplazo

    Para la reserva de reemplazo, configura las siguientes propiedades según sea necesario. Asegúrate de cumplir con todos los requisitos cuando especifiques estas propiedades. Omite cualquier campo adicional que no quieras usar.

    • REPLACEMENT_RESERVATION_NAME: es el nombre de la reserva de reemplazo nueva.
    • REPLACEMENT_RESERVATION_ZONE: es la zona de la reserva de reemplazo nueva.
    • REPLACEMENT_RESERVATION_NUMBER_OF_VMS: es la cantidad de VMs que deseas reservar en la reserva de reemplazo nueva.
    • REPLACEMENT_RESERVATION_MACHINE_TYPE: es el tipo de máquina que deseas para las VMs en tu nueva reserva de reemplazo.

      • Para los tipos de máquinas predefinidos, usa el formato MACHINE_FAMILY-standard-CPUS; por ejemplo, n2-standard-4.
      • Para los tipos de máquinas personalizados, usa el formato MACHINE_FAMILY-custom-CPUS-MEMORY; por ejemplo, n2-custom-4-5120. Si deseas obtener una lista completa de las restricciones, consulta las especificaciones para los tipos personalizados de máquinas.

      Reemplaza lo siguiente:

      • MACHINE_FAMILY: la familia de tipos de máquinas; por ejemplo, especifica n2 para las VMs N2.
      • CPUS: Es la cantidad de vCPUs.
      • MEMORY: la memoria total para una VM reservada. La memoria debe ser un múltiplo de 256 MB y debe proporcionarse en MB; por ejemplo, para crear una VM N2 con 4 CPUs virtuales y 5 GB de memoria, que son 5,120 MB, usa n2-custom-4-5120.
    • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS: es la cantidad de GPU que deseas agregar, por VM, en la reserva de reemplazo.

    • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: es el tipo de acelerador que deseas agregar en la reserva de reemplazo.

    • REPLACEMENT_RESERVATION_INTERFACE_1 y REPLACEMENT_RESERVATION_INTERFACE_2: son el tipo de interfaz que deseas que usen los discos SSD locales para cada VM reservada. Las opciones válidas son: scsi y nvme. Cada disco SSD local es de 375 GB. Repite el parámetro local_ssd para cada disco SSD local que desees agregar. Puedes especificar hasta 24 discos SSD locales.

    • REPLACEMENT_RESERVATION_PROJECT_ID: es el ID del proyecto actual que tiene el compromiso y la reserva conectada. Especifica este campo si deseas compartir tu reserva de reemplazo en varios proyectos de consumidor.

    • REPLACEMENT_RESERVATION_SHARE_SETTING: es el tipo de uso compartido de la reserva de reemplazo. Especifica este campo con el valor como projects si deseas compartir tu reserva de reemplazo en varios proyectos de consumidor.

    • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 y REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: son los IDs de los proyectos que pueden compartir esta reserva, por ejemplo project-1,project-2. Puedes incluir hasta 100 proyectos de consumidor. Estos proyectos deben estar en la misma organización que el proyecto de propietario. No incluyas REPLACEMENT_RESERVATION_PROJECT_ID, que ya tiene permisos para consumir esta reserva de forma predeterminada.

  2. Ejecuta el comando gcloud beta compute commitments update-reservations y especifica la ruta al archivo YAML con la marca --reservations-from-file.

    gcloud beta compute commitments update-reservations COMMITMENT_NAME \
        --project= PROJECT_ID \
        --region= REGION \
        --reservations-from-file= YAML_FILE
    

    Reemplaza lo siguiente:

    • COMMITMENT_NAME: es el nombre del compromiso con la reserva conectada.
    • PROJECT_ID: es el ID del proyecto del compromiso con la reserva conectada.
    • REGION: a región en la que se encuentra el compromiso
    • YAML_FILE: es la ruta al archivo YAML que contiene la configuración de las reservas actuales y de reemplazo.

Ejemplo de reemplazo de una reserva que se conecta a un compromiso

Para demostrar esto, en esta sección se muestra un compromiso de ejemplo con una reserva conectada y cómo reemplazar la reserva conectada de ejemplo.

Ejemplo de compromiso con una reserva conectada

Por ejemplo, supongamos que deseas actualizar las reservas conectadas para el compromiso my-commitment-with-reservations, que se compraron mediante el siguiente comando:

  gcloud beta compute commitments create my-commitment-with-reservations \
      --region=asia-east1 \
      --resources=vcpu=16,memory=60GB,local-ssd=3000 \
      --resources-accelerator=type=nvidia-tesla-p100,count=4 \
      --plan=12-month \
      --type=general-purpose \
      --reservations-from-file=one-reservation.yaml

Para este ejemplo, supongamos que, cuando se ejecutó este comando, one-reservation.yaml era un archivo en el directorio actual con el siguiente contenido, que define una reserva conectada llamada res-1.

  - reservation: res-1
    reservation_zone: asia-east1-a
    vm_count: 4
    machine_type: n1-standard-4
    accelerator:
    - count: 1
      type: nvidia-tesla-p100
    local_ssd:
    - interface: scsi
      size: 375
    - interface: scsi
      size: 375

Este compromiso my-commitment-with-reservations y la reserva conectada res-1 generaron los siguientes recursos confirmados y reservados:

Tipo de recurso Recursos en el compromiso
(my-commitment-with-reservations)
Recursos en la reserva conectada actual
(res-1)
CPU virtuales y memoria 16 CPUs virtuales y 60 GB 16 CPUs virtuales y 60 GB
(4 VMs n1-standard-4 reservadas)*
GPU 4 GPU P100 4 GPU P100
(1 GPU P100 por VM para 4 VMs)*
Discos SSD locales 3000 GB u 8 discos SSD locales 3000 GB u 8 discos SSD locales
(750 GB o 2 discos SSD locales por VM, para 4 VMs)*

* Específicamente, la reserva conectada de ejemplo, res-1, reserva 4 VMs n1-standard-4 cada una con 1 GPU P100 y 2 discos SSD locales de tipo de interfaz scsi. El tipo de máquina n1-standard-4 usa 4 CPUs virtuales y 15 GB para cada VM.

Reemplaza la reserva conectada de ejemplo

Supongamos que deseas reemplazar la reserva conectada res-1 por una reserva conectada nueva res-2 y cambiar los recursos reservados por lo siguiente:

Tipo de recurso Recursos en el compromiso
(my-commitment-with-reservations)
Recursos en la reserva conectada actual
(res-1)
Recursos en la reserva de reemplazo conectada
(res-2)
CPU virtuales y memoria 16 CPUs virtuales y 60 GB 16 CPUs virtuales y 60 GB
(4 VMs n1-standard-4 reservadas)*
16 CPUs virtuales y 60 GB
(2 VMs n1-standard-8 reservadas y compartidas)
GPU 4 GPU P100 4 GPU P100
(1 GPU P100 por VM para 4 VMs)*
4 GPU P100
(2 GPU P100 por VM para 2 VMs)
Discos SSD locales 3000 GB u 8 discos SSD locales 3000 GB u 8 discos SSD locales
(750 GB o 2 discos SSD locales por VM, para 4 VMs)*
3000 GB u 8 discos SSD locales
(1500 GB o 4 discos SSD locales por VM, para 2 VMs)*

* Específicamente, la reserva conectada de ejemplo, res-1, reserva 4 VMs n1-standard-4 cada una con 1 GPU P100 y 2 discos SSD locales de tipo de interfaz scsi. El tipo de máquina n1-standard-4 usa 4 CPUs virtuales y 15 GB para cada VM.

Específicamente, la reserva conectada de reemplazo define res-2, que reserva 2 VMs n1-standard-8, cada una con 1 GPU P100 y 4 discos SSD locales de tipo de interfaz scsi. Además, res-2 se comparte con 2 proyectos más, project-1 y project-2, y pertenece al proyecto actual, my-project. El tipo de máquina n1-standard-8 usa 8 CPUs virtuales y 30 GB para cada VM.

A fin de reemplazar la reserva conectada res-1 por res-2 para el compromiso my-commitment-with-reservations, haz lo siguiente:

  1. Crea un archivo llamado two-reservations.yaml en el directorio actual que tenga el siguiente contenido:

    - reservation: res-1
      reservation_zone: asia-east1-a
      vm_count: 0
      machine_type: n1-standard-4
      accelerator:
      - count: 1
        type: nvidia-tesla-p100
      local_ssd:
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
    - reservation: res-2
      reservation_zone: asia-east1-a
      vm_count: 2
      machine_type: n1-standard-8
      accelerator:
      - count: 2
        type: nvidia-tesla-p100
      project: my-project
      share_setting: projects
      share_with:
      - project-1
      - project-2
      local_ssd:
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
    
  2. Ejecuta el siguiente comando:

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

REST

Para reemplazar las reservas que se adjuntan a los compromisos, realiza una solicitud POST con el método regionCommitments.updateReservations.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/COMMITMENT_ZONE/commitments/COMMITMENT_NAME/updateReservations

{
  "reservations":
  [
    {
      "name": "REPLACEMENT_RESERVATION_NAME",
      "specificReservation":
      {
        "count": "REPLACEMENT_RESERVATION_NUMBER_OF_VMS",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": "REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS",
              "acceleratorType": "REPLACEMENT_RESERVATION_ACCELERATOR_TYPE"
            }
          ],
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "REPLACEMENT_RESERVATION_INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "REPLACEMENT_RESERVATION_INTERFACE_2"
            }
          ],
          "machineType": "REPLACEMENT_RESERVATION_MACHINE_TYPE"

        }
      },
      "zone": "REPLACEMENT_RESERVATION_ZONE",
      "shareSettings":
      {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap":
        {
          "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1":
          {
            "projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1"
          },
          "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2":
          {
            "projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2"
          }
         }
      }
    },
    {
      "name": "CURRENT_RESERVATION_NAME",
      "specificReservation":
      {
        "count": "0",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": "CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS",
              "acceleratorType": "CURRENT_RESERVATION_ACCELERATOR_TYPE"
            }
          ],
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "CURRENT_RESERVATION_INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "CURRENT_RESERVATION_INTERFACE_2"
            }
          ],
          "machineType": "CURRENT_RESERVATION_MACHINE_TYPE"

        }
      },
      "zone": "CURRENT_RESERVATION_ZONE",
      "shareSettings":
      {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap":
        {
          "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1":
          {
            "projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1"
          },
          "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2":
          {
            "projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2"
          }
         }
      }
    }
  ]
}

Reemplaza lo siguiente por las propiedades correspondientes del compromiso, la reserva actual y la reserva de reemplazo:

Compromiso

  • COMMITMENT_NAME: es el nombre del compromiso con la reserva conectada.
  • PROJECT_ID: es el ID del proyecto del compromiso con la reserva conectada. Este también es el ID del proyecto para las reservas actuales y adjuntas.
  • COMMITMENT_ZONE: es la zona del compromiso con la reserva conectada.

Reserva actual

Para la reserva actual, todas las propiedades siguientes deben ser exactamente iguales a las que viste cuando viste la reserva. Omite los campos para cualquier propiedad que la reserva actual aún no especifique.

  • CURRENT_RESERVATION_NAME: es el nombre de la reserva conectada actual.
  • CURRENT_RESERVATION_ZONE: es la zona de la reserva conectada actual.
  • CURRENT_RESERVATION_MACHINE_TYPE: es el tipo de máquina de la reserva conectada actual.
  • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS: es la cantidad de GPU reservadas en la reserva conectada actual.
  • CURRENT_RESERVATION_ACCELERATOR_TYPE: es el tipo de acelerador reservado en la reserva conectada actual.
  • CURRENT_RESERVATION_INTERFACE_1 y CURRENT_RESERVATION_INTERFACE_2: el tipo de interfaz que usan los discos SSD locales para cada VM reservada en la reserva conectada actual. Las opciones válidas son: scsi y nvme. Cada disco SSD local es de 375 GB. Repite el parámetro localSsds para todos los discos SSD locales reservados.
  • CURRENT_RESERVATION_SHARE_SETTING: es el tipo de uso compartido de la reserva actual. Especifica este parámetro con el valor como projects si tu reserva conectada actual se comparte en varios proyectos de consumidor.
  • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 y CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2: son los IDs de los proyectos con los que compartes la reserva conectada actual, por ejemplo project-1 y project-2.

Reserva de reemplazo

Para la reserva de reemplazo, configura las siguientes propiedades según sea necesario. Asegúrate de cumplir con todos los requisitos cuando especifiques estas propiedades. Omite cualquier campo adicional que no quieras usar.

  • REPLACEMENT_RESERVATION_NAME: es el nombre de la reserva de reemplazo nueva.
  • REPLACEMENT_RESERVATION_ZONE: es la zona de la reserva de reemplazo nueva.
  • REPLACEMENT_RESERVATION_NUMBER_OF_VMS: es la cantidad de VMs que deseas reservar en la reserva de reemplazo nueva.
  • REPLACEMENT_RESERVATION_MACHINE_TYPE: es el tipo de máquina que deseas para las VMs en tu nueva reserva de reemplazo.

    • Para los tipos de máquinas predefinidos, usa el formato MACHINE_FAMILY-standard-CPUS; por ejemplo, n2-standard-4.
    • Para los tipos de máquinas personalizados, usa el formato MACHINE_FAMILY-custom-CPUS-MEMORY; por ejemplo, n2-custom-4-5120. Si deseas obtener una lista completa de las restricciones, consulta las especificaciones para los tipos personalizados de máquinas.

    Reemplaza lo siguiente:

    • MACHINE_FAMILY: es la familia de tipos de máquinas; por ejemplo, especifica n2 para las VM N2.
    • CPUS: Es la cantidad de vCPUs.
    • MEMORY: la memoria total para una VM reservada. La memoria debe ser un múltiplo de 256 MB y debe proporcionarse en MB; por ejemplo, para crear una VM N2 con 4 CPUs virtuales y 5 GB de memoria, que son 5,120 MB, usa n2-custom-4-5120.
  • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS: es la cantidad de GPU que deseas agregar, por VM, en la reserva de reemplazo.

  • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: es el tipo de acelerador que deseas agregar en la reserva de reemplazo.

  • REPLACEMENT_RESERVATION_INTERFACE_1 y REPLACEMENT_RESERVATION_INTERFACE_2: son el tipo de interfaz que deseas que usen los discos SSD locales para cada VM reservada. Las opciones válidas son: scsi y nvme. Cada disco SSD local es de 375 GB. Repite el parámetro localSsds para cada disco SSD local que desees agregar. Puedes especificar hasta 24 discos SSD locales.

  • REPLACEMENT_RESERVATION_SHARE_SETTING: es el tipo de uso compartido de la reserva de reemplazo. Especifica este parámetro con el valor como projects si deseas compartir tu reserva de reemplazo en varios proyectos de consumidor.

  • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 y REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: son los IDs de los proyectos que pueden compartir esta reserva, por ejemplo project-1,project-2. Puedes incluir hasta 100 proyectos de consumidor. Estos proyectos deben estar en la misma organización que el proyecto de propietario. No incluyas PROJECT_ID, que ya tiene permisos para consumir esta reserva de forma predeterminada.

Ejemplo de reemplazo de una reserva que se conecta a un compromiso

Para demostrar esto, en esta sección se muestra un compromiso de ejemplo con una reserva conectada y cómo reemplazar la reserva conectada de ejemplo.

Ejemplo de compromiso con una reserva conectada

Por ejemplo, supongamos que deseas reemplazar la reserva conectada res-1 para el compromiso my-commitment-with-reservations y que se compró mediante la siguiente solicitud POST:

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

  {
    "name": "my-commitment-with-reservations",
    "plan": "TWELVE_MONTH",
    "reservations":
    [
      {
        "name": "res-1",
        "specificReservation":
        {
          "count": "4",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": "1",
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-4"
          }
        },
        "zone": "asia-east1-a"
      }
    ],
    "resources":
    [
      {
        "amount": "16",
        "type": "VCPU"
      },
      {
        "amount": "61440",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "nvidia-tesla-p100",
        "amount": "4",
        "type": "ACCELERATOR"
      }
      {
        "amount": "3072000",
        "type": "LOCAL_SSD"
      }
    ],
    "type": "GENERAL_PURPOSE"
  }

Este compromiso my-commitment-with-reservations y la reserva conectada res-1 generaron los siguientes recursos confirmados y reservados:

Tipo de recurso Recursos en el compromiso
(my-commitment-with-reservations)
Recursos en la reserva conectada actual
(res-1)
CPU virtuales y memoria 16 CPUs virtuales y 60 GB 16 CPUs virtuales y 60 GB
(4 VMs n1-standard-4 reservadas)*
GPU 4 GPU P100 4 GPU P100
(1 GPU P100 por VM para 4 VMs)*
Discos SSD locales 3000 GB u 8 discos SSD locales 3000 GB u 8 discos SSD locales
(750 GB o 2 discos SSD locales por VM, para 4 VMs)*

* Específicamente, la reserva conectada de ejemplo, res-1, reserva 4 VMs n1-standard-4 cada una con 1 GPU P100 y 2 discos SSD locales de tipo de interfaz scsi. El tipo de máquina n1-standard-4 usa 4 CPUs virtuales y 15 GB para cada VM.

Reemplaza la reserva conectada de ejemplo

Supongamos que deseas reemplazar la reserva conectada res-1 por una reserva conectada nueva res-2 y cambiar los recursos reservados por lo siguiente:

Tipo de recurso Recursos en el compromiso
(my-commitment-with-reservations)
Recursos en la reserva conectada actual
(res-1)
Recursos en la reserva de reemplazo conectada
(res-2)
CPU virtuales y memoria 16 CPUs virtuales y 60 GB 16 CPUs virtuales y 60 GB
(4 VMs n1-standard-4 reservadas)*
16 CPUs virtuales y 60 GB
(2 VMs n1-standard-8 reservadas y compartidas)
GPU 4 GPU P100 4 GPU P100
(1 GPU P100 por VM para 4 VMs)*
4 GPU P100
(2 GPU P100 por VM para 2 VMs)
Discos SSD locales 3000 GB u 8 discos SSD locales 3000 GB u 8 discos SSD locales
(750 GB o 2 discos SSD locales por VM, para 4 VMs)*
3000 GB u 8 discos SSD locales
(1500 GB o 4 discos SSD locales por VM, para 2 VMs)*

* Específicamente, la reserva conectada de ejemplo, res-1, reserva 4 VMs n1-standard-4 cada una con 1 GPU P100 y 2 discos SSD locales de tipo de interfaz scsi. El tipo de máquina n1-standard-4 usa 4 CPUs virtuales y 15 GB para cada VM.

Específicamente, la reserva conectada de reemplazo define res-2, que reserva 2 VMs n1-standard-8, cada una con 1 GPU P100 y 4 discos SSD locales de tipo de interfaz scsi. Además, res-2 se comparte con 2 proyectos más, project-1 y project-2, y pertenece al proyecto actual, my-project. El tipo de máquina n1-standard-8 usa 8 CPUs virtuales y 30 GB para cada VM.

Para reemplazar la reserva conectada res-1 por res-2 para el compromiso my-commitment-with-reservations, realiza la siguiente solicitud POST mediante el método regionCommitments.updateReservations:

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

  {
    "reservations":
    [
      {
        "name": "res-2",
        "specificReservation":
        {
          "count": "2",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": 2,
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-8"
          }
        },
        "zone": "asia-east1-a"
      },
      {
        "name": "res-1",
        "specificReservation":
        {
          "count": "0",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": 1,
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-4"
          }
        },
        "zone": "asia-east1-a"
      }
    ]
  }

¿Qué sigue?