Combinar reservas com descontos por compromisso de uso


Os descontos por compromisso de uso (CUDs) oferecem preços com grandes descontos para seus recursos do Compute Engine em troca de contratos de uso contínuo de um ou três anos, também conhecidos como compromissos. Você se compromete com uma quantidade mínima de uso de recursos ou de gastos e, em troca, recebe CUDs sobre os custos de uso de recursos. No entanto, os compromissos não reservam capacidade zonal para os recursos comprometidos. Para conseguir recursos zonais a preços com desconto e também garantir que a capacidade seja reservada para eles, você precisa adquirir compromissos e criar reservas para esses recursos zonais.

Neste documento, explicamos como receber CUDs para seus recursos reservados e como anexar reservas a compromissos baseados em recursos.

Antes de começar

  • Analise os conceitos básicos de reservas com os requisitos e as restrições. Saiba mais em Reservas para recursos zonais do Compute Engine.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

CUDs para seus recursos reservados

Você recebe CUDs de compromissos ativos para qualquer uso de recursos qualificado nos seus projetos. Se você também tiver alguma reserva para manter a capacidade para recursos nesse projeto, os CUDs de compromissos ativos também poderão ser aplicados a esses recursos reservados. Para que qualquer recurso reservado se qualifique para receber CUDs, os seguintes requisitos se aplicam:

  • Você não está recebendo nenhuma outra forma de desconto pelo uso dos recursos.
  • As VMs precisam estar consumindo as reservas enquanto os compromissos estão ativos.
  • No mínimo, as propriedades a seguir precisam corresponder entre seus compromissos ativos e as reservas que as VMs consomem:

    • Projeto e região em que se aplicam
    • Série da família de máquinas

Dependendo do tipo de recurso, é possível receber CUDs para seus recursos reservados de uma das seguintes maneiras:

  • vCPUs e memória: para receber CUDs para um ou ambos os tipos de recurso, é possível adquirir compromissos com base em recursos ou em gastos que incluam os tipos de recursos necessários. Quando as VMs no projeto consomem qualquer reserva com propriedades que correspondam a esses compromissos ativos, você recebe automaticamente os CUDs aplicáveis a esses tipos de recursos reservados. Se você reservou mais recursos do que se comprometeu, não receberá CUDs para esses recursos extras.

  • GPUs e discos SSD locais: para receber CUDs para um ou ambos esses tipos de recursos, faça o seguinte:

    • Adquira compromissos baseados em recursos que incluem os tipos de recursos necessários.
    • Crie reservas para todos os recursos confirmados com propriedades que correspondam ao seu compromisso e anexe essas reservas ao compromisso.

    Quando as VMs no projeto consomem essas reservas anexadas, você começa a receber os CUDs aplicáveis a esses tipos de recursos reservados.

Anexar reservas a compromissos baseados em recursos

É possível anexar reservas a qualquer compromisso baseado em recursos e garantir que a capacidade seja mantida em zonas específicas para os recursos comprometidos que você planeja usar. É possível anexar várias reservas a um único compromisso. No entanto, uma reserva só pode ser anexada a um único compromisso. Quando você compra um compromisso, é possível anexar reservas a ele de uma das seguintes maneiras:

  • Como usar reservas atuais com propriedades que correspondem ao compromisso
  • Como criar novas reservas correspondentes ao comprar seu compromisso

Depois de comprar um compromisso com reservas anexadas, as reservas permanecerão ativas enquanto o compromisso estiver ativo. Quando o compromisso expirar, o Compute Engine excluirá automaticamente todas as reservas vinculadas. A exclusão dessas reservas não afeta as VMs em execução que estavam consumindo essas reservas. As VMs em execução continuam sendo executadas e você ainda é cobrado por essas VMs.

Recursos comprometidos que não exigem reservas anexadas

As vCPUs e a memória comprometidas não exigem que você anexe reservas correspondentes aos seus compromissos. No entanto, quando você adquire um compromisso que inclui vCPUs, memória ou ambos, ainda é possível anexar reservas que especificam esses recursos. Para saber como adquirir compromissos somente para vCPUs, memória ou ambos, sem anexar reservas, consulte Como comprar compromissos sem reservas anexadas.

Recursos comprometidos que exigem reservas anexadas

As GPUs confirmadas e os discos SSD locais exigem que você anexe reservas correspondentes aos seus compromissos. Quando você compra um compromisso que inclui GPUs, discos SSD locais ou ambos, também precisa reservar esses recursos e anexá-las ao seu compromisso. Para isso, use uma única reserva ou uma combinação de reservas. Ao adquirir esse compromisso, também é possível incluir vCPUs, memória ou ambos. No entanto, você não precisa reservar essas vCPUs ou memórias. Para saber como adquirir compromissos que incluem GPUs e discos SSD locais, consulte Compromissos de compra com reservas anexadas neste documento.

Para ver a lista completa de séries de máquinas compatíveis com CUDs para GPUs e discos SSD locais, consulte a seção Tipos de compromisso na documentação de CUDs baseados em recursos.

Quantidades de recursos permitidas nas reservas anexadas

Para vCPUs e memória, é possível anexar reservas especificando mais ou menos quantidades de recursos do que você está se comprometendo. Se você se comprometer com mais vCPUs ou memória do que reserva, o Compute Engine reservará capacidade somente para esses recursos reservados. No entanto, ainda é possível usar os outros recursos confirmados dependendo da disponibilidade deles na sua região. Se você reservar mais vCPUs ou memória do que se compromete a ter, não receberá CUDs para esses recursos extras reservados.

Por exemplo, quando você compra um compromisso para 4 vCPUs e 30 GB de memória, pode optar por realizar uma das seguintes ações:

  • Não anexar reservas.
  • Anexe reservas especificando qualquer combinação desses tipos de recursos. Por exemplo, o seguinte:

    • 4 vCPUs e 30 GB de memória
    • 2 vCPUs e 50 GB de memória
    • 10 vCPUs e 10 GB de memória

No entanto, se o compromisso contiver GPUs, discos SSD locais ou ambos, será necessário reservar e anexar todos esses recursos. Suas reservas anexadas precisam especificar os números e tipos exatos das GPUs e dos discos SSD locais com que você está se comprometendo. Consequentemente, também não é possível ter qualquer número ou tipo adicional de GPUs ou discos SSD locais nas reservas anexadas. Por exemplo, suponha que você compre um compromisso para 30 GB de memória e quatro GPUs NVIDIA P100. A reserva anexada (ou combinação de reservas anexadas) pode especificar qualquer quantidade de vCPUs ou memória, mas precisa ter exatamente quatro GPUs do tipo NVIDIA P100. Neste exemplo, não é possível anexar reservas especificando qualquer uma das combinações de recursos a seguir:

  • 6 NVIDIA P100 GPUs
  • 2 NVIDIA P100 GPUs
  • 4 GPUs NVIDIA P100 e 2 GPUs NVIDIA V100
  • 4 GPUs NVIDIA P100 e 4 discos SSD locais

Comprar compromissos com reservas anexadas

Quando você compra um novo compromisso, é possível anexar reservas a ele de uma das seguintes maneiras:

Depois de adquirir um compromisso, ele ficará ativo no dia seguinte à 0h dos EUA e do Horário do Pacífico canadense (UTC-8 ou UTC-7 durante o horário de verão). Entre o momento da compra do compromisso e o momento de ativação, o status dele permanece como NOT_YET_ACTIVE (ou como PENDING no console do Google Cloud). Após a ativação, o status do compromisso mudará para ACTIVE. Por exemplo, suponha que você compre o compromisso em 20 de janeiro às 22h nos EUA e no horário do Pacífico canadense (UTC-8 ou UTC-7). O Compute Engine cria seu compromisso imediatamente com o status dele como NOT_YET_ACTIVE. No entanto, seu compromisso passa a ser ACTIVE apenas em 21 de janeiro à 0h dos EUA e do Horário do Pacífico canadense (UTC-8 ou UTC-7).

Requisitos

Antes de adquirir um compromisso com reservas anexadas, revise estes requisitos e verifique se o compromisso e as reservas atendem aos seguintes critérios:

  • É necessário adquirir o compromisso e criar as reservas anexadas no mesmo projeto e região.
  • É necessário adquirir o compromisso e criar as reservas anexadas para recursos da mesma série de família de máquinas.
  • Desative a opção de exclusão automática nas reservas anexadas.
  • Se o compromisso tiver GPUs, o tipo de GPU na reserva e o compromisso precisarão ser correspondentes.
  • Para GPUs e discos SSD locais, o número de recursos reservados de cada tipo de recurso precisa corresponder exatamente ao número de recursos comprometidos desse tipo de recurso. Por exemplo, se você quiser adquirir um compromisso para quatro GPUs V100, as reservas anexadas ao compromisso precisarão ter um total de quatro GPUs V100. No entanto, a quantidade de vCPU e memória que você reserva pode ser maior ou menor do que a que você se compromete.
  • Para GPUs, adquira compromissos para os tipos específicos de GPU que você pretende usar. Por exemplo, é possível comprar compromissos para NVIDIA P100s ou NVIDIA V100s, mas não é possível usar um compromisso que tenha sido comprado para GPUs NVIDIA P100 para abranger GPUs NVIDIA V100.
  • Se a reserva anexada for uma reserva compartilhada e você quiser receber os CUDs aplicáveis quando consumir essa reserva fora do projeto do compromisso, faça o seguinte:

    • Compartilhe suas reservas apenas entre projetos que pertençam à mesma conta do Cloud Billing que o compromisso.
    • Ative o compartilhamento de CUD para essa conta do Cloud Billing.

Anexar reservas já criadas

Para comprar um compromisso, anexe as reservas atuais a ele usando a CLI do Google Cloud ou o REST.

gcloud

Para adquirir um compromisso anexando reservas atuais, execute o comando gcloud compute commitments create. No seu comando, inclua a sinalização --existing-reservation para especificar uma reserva atual que você queira anexar ao compromisso. Inclua uma nova instância dessa sinalização para cada reserva atual que você queira anexar. É possível anexar qualquer número de reservas atuais ao compromisso.

Por exemplo, para adquirir um compromisso anexando duas reservas a ele, execute o seguinte 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'

Substitua:

  • COMMITMENT_NAME: o nome do compromisso.
  • REGION: a região em que a chave está localizada.
  • PROJECT_ID: o ID do projeto em que você quer comprar o compromisso com as reservas anexadas.
  • DURATION: a duração do compromisso, 12-month ou 36-month.
  • COMMITMENT_TYPE: o tipo de compromisso. Os tipos de compromisso a seguir oferecem opções para GPUs, discos SSD locais ou ambos:

    • accelerator-optimized para recursos de tipo de máquina
    • compute-optimized para recursos do tipo de máquina C2
    • compute-optimized-c2d para recursos do tipo de máquina C2D
    • compute-optimized-c3 para recursos do tipo de máquina C3
    • compute-optimized-c3d para recursos do tipo de máquina C3D
    • general-purpose para recursos do tipo de máquina N1
    • general-purpose-e2 para recursos do tipo de máquina E2
    • general-purpose-n2 para recursos do tipo de máquina N2
    • general-purpose-n2d para recursos de máquina N2D
    • general-purpose-t2d para recursos do tipo de máquina Tau T2D
    • graphics-optimized para recursos do tipo de máquina G2
    • memory-optimized para recursos de tipo de máquina M1 ou M2
    • memory-optimized-m3 para compromissos de tipo de máquina M3 com otimização de memória
  • COMMITTED_VCPUS: o número de vCPUs que você quer no compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB ou GB, de memória que você quer no seu compromisso. Por exemplo, 10240MB ou 10GB. Se você não especificar uma unidade, o Compute Engine usará GB como a unidade. É possível comprar memória em incrementos de 0,25 GB.

  • COMMITTED_LOCAL_SSD: a quantidade, em GB, de espaço SSD local que você quer no seu compromisso. Cada SSD local tem 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: o número de GPUs que você quer no compromisso.

  • COMMITTED_ACCELERATOR_TYPE: o tipo de GPU que você quer no compromisso.

  • RESERVATION_NAME_1 e RESERVATION_NAME_2: os nomes das reservas atuais que você quer anexar ao compromisso.

  • RESERVATION_ZONE_1 e RESERVATION_ZONE_2: as zonas das reservas atuais que você quer anexar ao compromisso.

Exemplo: comprar um compromisso anexando reservas existentes

Suponha que você tenha duas reservas res-01 e res-02 nas zonas us-central1-a e us-central1-b do projeto myproject. Suponha que essas reservas tenham uma capacidade combinada para quatro GPUs NVIDIA P100 e quatro discos SSD locais. Para adquirir um novo compromisso na região us-central1 deste projeto para essas GPUs e discos SSD locais e usar essas reservas atuais como reservas anexadas, execute o comando a seguir. O compromisso de exemplo também contém vCPUs e memória.

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 adquirir um compromisso anexando reservas atuais, faça uma solicitação POST ao método regionCommitments.insert. Na solicitação, inclua o campo existingReservations para especificar uma lista separada por vírgulas de todas as reservas atuais que você quer anexar ao compromisso. É possível anexar qualquer número de reservas existentes ao seu compromisso.

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

Substitua:

  • COMMITMENT_NAME: o nome do compromisso.
  • REGION: a região em que a chave está localizada.
  • PROJECT_ID: o ID do projeto em que você quer comprar o compromisso com as reservas anexadas.
  • DURATION: a duração do compromisso, TWELVE_MONTH ou THIRTY_SIX_MONTH.
  • COMMITMENT_TYPE: o tipo de compromisso. Os tipos de compromisso a seguir oferecem opções para GPUs, discos SSD locais ou ambos:

    • GENERAL_PURPOSE_E2 para recursos do tipo de máquina E2
    • GENERAL_PURPOSE_N2 para recursos do tipo de máquina N2
    • GENERAL_PURPOSE_N2D para recursos de máquina N2D
    • COMPUTE_OPTIMIZED_C3 para recursos do tipo de máquina C3
    • GENERAL_PURPOSE_C3D para recursos do tipo de máquina C3D
    • GENERAL_PURPOSE_T2D para recursos do tipo de máquina Tau T2D
    • GENERAL_PURPOSE para recursos do tipo de máquina N1
    • COMPUTE_OPTIMIZED para recursos do tipo de máquina C2
    • COMPUTE_OPTIMIZED_C2D para recursos do tipo de máquina C2D
    • MEMORY_OPTIMIZED para recursos de tipo de máquina M1 ou M2
    • MEMORY_OPTIMIZED_M3 para compromissos de tipo de máquina M3 com otimização de memória
    • ACCELERATOR_OPTIMIZED para recursos de tipo de máquina
    • GRAPHICS_OPTIMIZED para recursos do tipo de máquina G2
  • COMMITTED_VCPUS: o número de vCPUs que você quer no compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB, de memória que você quer no compromisso. Por exemplo, 10240MB. É possível comprar memória em incrementos de 256 MB.

  • COMMITTED_LOCAL_SSD: a quantidade, em GB, de armazenamento SSD local que você quer no seu compromisso. Cada SSD local tem 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: o número de GPUs que você quer no compromisso.

  • COMMITTED_ACCELERATOR_TYPE: o tipo de GPU que você quer no compromisso.

  • RESERVATION_URLs: uma lista separada por vírgulas de URLs das reservas atuais que você quer anexar ao compromisso. Por exemplo, para anexar duas reservas, res-1 e res-2, especifique o seguinte:

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

Exemplo: comprar um compromisso anexando reservas existentes

Suponha que você tenha duas reservas res-01 e res-02 nas zonas us-central1-a e us-central1-b do projeto myproject. Suponha que essas reservas tenham uma capacidade combinada para quatro GPUs NVIDIA P100 e quatro discos SSD locais. Para adquirir um novo compromisso na região us-central1 deste projeto para essas GPUs e discos SSD locais e usar essas reservas atuais como reservas anexadas, faça a seguinte solicitação POST. Observe que o compromisso de exemplo também contém vCPUs e memória.

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

Criar novas reservas para anexar

É possível criar suas reservas anexadas ao comprar seu compromisso usando o console do Google Cloud, a CLI do Google Cloud ou o REST.

Console

Antes de adquirir um compromisso usando o console do Google Cloud, selecione o projeto que você quer usar para adquirir o compromisso. Se o compartilhamento de descontos estiver ativado para uma conta do Cloud Billing, será possível adquirir o compromisso usando qualquer projeto dessa conta. Depois de selecionar o projeto, faça o seguinte:

  1. No console do Google Cloud, acesse a página Desconto por compromisso de uso.

    Acesse "Descontos por uso contínuo"

  2. Para adquirir um novo compromisso, clique em Comprar compromisso.

  3. Dê um nome ao compromisso e escolha a região em que ele será aplicado.

  4. Escolha o Tipo de compromisso. Os tipos de compromisso a seguir oferecem opções para GPUs, discos SSD locais ou ambos:

    • Uso geral C3 para recursos do tipo de máquina C3
    • C3D de uso geral para recursos do tipo de máquina C3D
    • Uso geral N2 para recursos do tipo de máquina N2
    • Uso geral N2D para recursos do tipo de máquina N2D
    • Uso geral N1 para recursos do tipo de máquina N1
    • H3 com otimização para computação para recursos de tipo de máquina H3
    • C2 com otimização para computação para recursos do tipo de máquina C2
    • C2D com otimização para computação para recursos do tipo de máquina C2D
    • M1/M2 com otimização de memória para recursos dos tipos de máquina M1 e M2
    • M3 com otimização de memória para recursos do tipo de máquina M3
    • A3 com otimização do acelerador para recursos do tipo de máquina A3
    • A2 com otimização do acelerador para recursos do tipo de máquina A2
    • G2 com otimização gráfica para recursos do tipo de máquina G2
  5. Escolha uma Duração de um ou três anos para o compromisso.

  6. Insira a quantidade de Núcleos e Memória que você quer adquirir. Se você só quiser reservar e se comprometer com GPUs ou discos SSDs locais sem se comprometer com vCPU e memória, especifique 0 para as quantidade de compromissos de vCPU e memória.

  7. Clique em Adicionar GPUs e selecione o Tipo de GPU e o Número de GPUs com os quais você quer se comprometer.

  8. Clique em Incluir SSD local e especifique o número de discos com o qual você quer se comprometer.

  9. Para criar uma reserva e anexá-la ao compromisso, clique em Adicionar uma reserva.

    1. No campo Nome, insira um nome para a reserva.
    2. Escolha a Região e a Zona em que você quer reservar recursos.
    3. Escolha o Tipo de compartilhamento de sua preferência:
      • Para criar uma reserva para um único projeto, selecione Local.
      • Para criar uma reserva compartilhada entre vários projetos, selecione Compartilhado. Para compartilhar essa reserva com outros projetos, clique em Adicionar projetos e selecione os projetos da organização do projeto atual.
    4. No campo Usar com instância de VM, selecione uma das seguintes opções:

      • Para usar os recursos desta reserva apenas ao criar VMs correspondentes que visam especificamente essa reserva por nome, selecione Selecionar reserva específica.
      • Para permitir que instâncias de VM correspondentes usem automaticamente essa reserva, selecione Usar reserva automaticamente.
    5. No campo Número de instâncias da VM, insira o número de instâncias de VM que você quer reservar.

    6. Especifique os recursos a serem reservados para cada instância:

      • Se você quiser reservar VMs que correspondam a um modelo de instância existente, selecione Usar modelo de instância e selecione um modelo de instância na lista.
      • Caso contrário, selecione Especificar tipo de máquina e especifique o seguinte:
        1. Na função Família de máquinas selecione a família de máquinas: Uso geral e Otimização para computação , Otimização de memória ou GPUs de dois minutos.
        2. Nos campos Série e Tipo de máquina, selecione uma série e um tipo de máquina.
        3. Opcional: especifique uma plataforma de CPU e/ou GPUs mínimas:
          1. Clique em Plataforma de CPU e GPU para expandir a seção.
          2. Opcional: para especificar uma plataforma mínima de CPU, selecione uma opção na lista Plataforma de CPU.
          3. Opcional: para adicionar GPUs, clique em Adicionar GPU. Em seguida, nos campos Tipo de GPU e Número de GPUs, selecione o tipo e o número de GPUs para cada VM.
        4. Opcional: adicione discos SSD locais:
          1. No campo Número de discos, selecione o número de discos SSD locais para cada VM.
          2. No campo Tipo de interface, selecione a interface para os discos SSD locais.
    7. Para concluir a especificação das propriedades desta reserva, clique em Concluído.

  10. Clique no botão Comprar para adquirir o compromisso.

  11. Leia os Termos de compra e clique em Comprar quando estiver tudo pronto para adquirir o compromisso.

gcloud

Para criar suas reservas anexadas ao comprar seu compromisso, execute o comando gcloud compute commitments create.

Se você quer anexar uma única reserva ou várias, execute o comando de uma das seguintes maneiras:

  • Para criar e anexar uma única reserva ao seu compromisso, defina as propriedades da reserva anexada executando o seguinte 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 criar e anexar várias reservas ao compromisso, defina as propriedades da reserva usando um arquivo YAML e especifique esse arquivo YAML no comando usado para adquirir seu compromisso. Outra opção é usar essa abordagem de arquivo YAML para criar e anexar uma única reserva ao compromisso. Para criar suas reservas anexadas usando essa abordagem, faça o seguinte:

    1. Crie o arquivo YAML no diretório atual e especifique a configuração para cada reserva anexada. Por exemplo, para especificar a configuração de uma reserva compartilhada compartilhada com dois projetos que especificam GPUs, dois discos SSD locais e uma plataforma mínima de CPU, inclua o texto a seguir no arquivo 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 a configuração de várias reservas, repita essas propriedades para cada uma delas. É possível anexar ao compromisso quantas reservas você quiser.

    2. Use o comando gcloud compute commitments create e inclua a sinalização --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
      

Substitua o seguinte pelas propriedades correspondentes do compromisso e das reservas anexadas:

Compromisso

  • COMMITMENT_NAME: o nome do compromisso.
  • REGION: a região em que a chave está localizada.
  • PROJECT_ID: o ID do projeto em que você quer comprar o compromisso com as reservas anexadas.
  • DURATION: a duração do compromisso, 12-month ou 36-month.
  • COMMITMENT_TYPE: o tipo de compromisso. Os tipos de compromisso a seguir oferecem opções para GPUs, discos SSD locais ou ambos:

    • general-purpose-e2 para recursos do tipo de máquina E2
    • general-purpose-n2 para recursos do tipo de máquina N2
    • general-purpose-n2d para recursos de máquina N2D
    • compute-optimized-c3 para recursos do tipo de máquina C3
    • general-purpose-c3d para recursos do tipo de máquina C3D
    • general-purpose-t2d para recursos do tipo de máquina Tau T2D
    • general-purpose para recursos do tipo de máquina N1
    • compute-optimized para recursos do tipo de máquina C2
    • compute-optimized-c2d para recursos do tipo de máquina C2D
    • memory-optimized para recursos de tipo de máquina M1 ou M2
    • memory-optimized-m3 para compromissos de tipo de máquina M3 com otimização de memória
    • accelerator-optimized para recursos de tipo de máquina
    • graphics-optimized para recursos do tipo de máquina G2
  • COMMITTED_VCPUS: o número de vCPUs que você quer no compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB ou GB, de memória que você quer no seu compromisso. Por exemplo, 10GB ou 10240MB. Se você não especificar uma unidade, o Compute Engine usará GB como a unidade. É possível comprar memória em incrementos de 0,25 GB.

  • COMMITTED_LOCAL_SSD: a quantidade, em GB, de armazenamento SSD local que você quer no seu compromisso. Cada SSD local tem 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: o número de GPUs que você quer no compromisso.

  • COMMITTED_ACCELERATOR_TYPE: o tipo de GPU que você quer no compromisso.

  • YAML_FILE: o caminho para o arquivo YAML que contém a configuração das reservas anexadas.

Reservas anexadas

  • RESERVATION_NAME: o nome da reserva anexada.
  • RESERVATION_ZONE: a zona da reserva anexada.
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: especifica se a reserva anexada é uma reserva especificamente segmentada (true ou false). Para mais informações sobre reservas segmentadas especificamente, consulte Como funcionam as reservas.
  • NUMBER_OF_RESERVED_VMS: o número de VMs que você quer reservar na reserva anexada.
  • RESERVED_MACHINE_TYPE: o tipo de máquina que você quer para as VMs na reserva anexada.

    • Para tipos de máquina predefinidos, use o formato MACHINE_FAMILY-standard-CPUS. Por exemplo, n2-standard-4.
    • Para tipos de máquina personalizados, use o formato MACHINE_FAMILY-custom-CPUS-MEMORY. Por exemplo, n2-custom-4-5120. Para ver uma lista completa de restrições, leia as especificações dos tipos de máquina personalizados.

      Substitua:

      • MACHINE_FAMILY: a família dos tipos de máquina. Por exemplo, especifique n2 para VMs N2.
      • CPUS: o número de vCPUs.
      • MEMORY: a memória total para uma VM reservada. A memória precisa ser um múltiplo de 256 MB e ser fornecida em MB. Por exemplo, para criar uma VM N2 com 4 vCPUs e 5 GB de memória, que é 5.120 MB, use n2-custom-4-5120.
  • RESERVED_ACCELERATOR_COUNT: o número de GPUs que você quer adicionar, por VM, na reserva anexada.

  • RESERVED_ACCELERATOR_TYPE: o tipo de acelerador que você quer adicionar à reserva anexada.

  • INTERFACE_1 e INTERFACE_2: o tipo de interface que você quer que os discos SSD locais de cada VM reservada usem. As opções válidas são: scsi e nvme. Cada SSD local tem 375 GB. Repita o parâmetro local_ssd para cada disco SSD local que você quer adicionar. É possível especificar até 24 discos SSD locais.

  • OWNER_PROJECT_ID: o ID do projeto em que você quer adquirir o compromisso com a reserva anexada. Especifique esse campo se quiser compartilhar sua reserva de substituição em vários projetos de consumidor.

  • MINIMUM_CPU_PLATFORM: a plataforma de CPU mínima que você quer especificar para a reserva anexada.

  • SHARE_SETTING: o tipo de compartilhamento da reserva atual. Especifique esse campo com o valor como projects se você quiser compartilhar sua reserva de substituição em vários projetos de consumidores. Exclua esse campo se quiser criar uma reserva de projeto único.

  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2: os IDs dos projetos que podem compartilhar essa reserva. Por exemplo project-1 e project-2. É possível incluir até 100 projetos pessoais. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o ID do projeto em que você cria essa reserva, já que esse projeto tem permissão para consumir essa reserva por padrão. Exclua esses campos se quiser criar uma reserva de projeto único.

O Compute Engine criará o compromisso com as reservas anexadas criadas somente se houver recursos suficientes do tipo de máquina especificado na zona de destino e cota suficiente no momento da solicitação. Se a compra foi bem-sucedida, você verá uma mensagem semelhante a esta:

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

Exemplos de compra de compromissos criando novas reservas para anexar

Os cenários e comandos de exemplo a seguir mostram como comprar um compromisso para GPUs, discos SSD locais ou ambos criando novas reservas para anexar a esse compromisso.

Exemplo 1: comprar um compromisso para GPUs anexando uma única reserva nova

Suponha que você queira adquirir um compromisso commitment-01 na região us-central1 que inclua quatro GPUs NVIDIA V100. Você quer criar uma nova reserva reservation-01 como a reserva anexada para essas GPUs. Suponha que você também queira especificar que o Compute Engine use essas GPUs reservadas em duas VMs n1-standard-32 na zona us-central1-a. Para comprar este compromisso de exemplo com a reserva anexada, execute o seguinte 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

Exemplo 2: adquirir um compromisso para GPUs sem confirmar vCPUs ou memória

Para se comprometer e reservar GPUs e discos SSD locais sem se comprometer com vCPUs ou memória, especifique 0 como o valor para as quantidades de vCPUs e memória. Por exemplo, suponha que você queira adquirir um compromisso commitment-02 para uma única GPU NVIDIA P4 na região us-west2. Você também quer criar uma nova reserva como a reserva anexada e especificar que o Compute Engine use a GPU reservada em uma VM n1-standard-2 na zona us-west2-b. Para comprar este exemplo de compromisso com a reserva anexada, execute o seguinte 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

Exemplo 3: adquirir um compromisso para GPUs e discos SSD locais anexando várias novas reservas

Suponha que você queira adquirir um compromisso commitment-03 para uma GPU NVIDIA V 100 e dois discos SSD locais na região us-central1. Você também quer criar e anexar duas reservas na zona us-central1-a. Na primeira reserva, res-01, você quer reservar 1 VM n1-standard-2 com 1 GPU. Você quer tornar res-01 uma reserva direcionada, o que significa que é necessário segmentar especificamente essa reserva pelo nome para usar as VMs reservadas. Na segunda reserva, res-02, você quer reservar uma VM n1-standard-8 com dois tipos de discos SSD locais anexados.

Para adquirir este compromisso de exemplo com as reservas anexadas, primeiro crie o arquivo YAML com as propriedades de ambas as 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

Depois de criar o arquivo YAML, para concluir a compra do compromisso com as reservas anexadas, execute o comando a seguir. Observe que o compromisso de exemplo também contém recursos de vCPU e memória.

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 criar as reservas anexadas ao comprar seu compromisso, faça uma solicitação POST ao método regionCommitments.insert. Na solicitação, inclua o campo reservations para definir uma lista de todas as novas reservas que você quer criar e anexar. É possível anexar quantas reservas você quiser ao compromisso.

  • Para criar sua nova reserva especificando manualmente todas as propriedades da VM, inclua o campo instanceProperties e exclua o campo sourceInstanceTemplate.

    Por exemplo, para especificar manualmente a configuração de uma reserva compartilhada com dois projetos que especificam GPUs, dois discos SSD locais e uma plataforma mínima de CPU, faça a seguinte solicitação:

    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 criar a nova reserva especificando um modelo de instância, inclua o campo sourceInstanceTemplate e exclua o 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"
            }
          }
        }
      }
    ]
    }
    
    

Substitua o seguinte pelas propriedades correspondentes do compromisso e das reservas anexadas:

Compromisso

  • COMMITMENT_NAME: o nome do compromisso.
  • REGION: a região em que a chave está localizada.
  • PROJECT_ID: o ID do projeto em que você quer comprar o compromisso com as reservas anexadas.
  • DURATION: a duração do compromisso, TWELVE_MONTH ou THIRTY_SIX_MONTH.
  • COMMITMENT_TYPE: o tipo de compromisso. Os tipos de compromisso a seguir oferecem opções para GPUs, discos SSD locais ou ambos:

    • ACCELERATOR_OPTIMIZED para recursos de tipo de máquina
    • COMPUTE_OPTIMIZED para recursos do tipo de máquina C2
    • COMPUTE_OPTIMIZED_C2D para recursos do tipo de máquina C2D
    • COMPUTE_OPTIMIZED_C3 para recursos do tipo de máquina C3
    • COMPUTE_OPTIMIZED_C3D para recursos do tipo de máquina C3D
    • GENERAL_PURPOSE para recursos do tipo de máquina N1
    • GENERAL_PURPOSE_E2 para recursos do tipo de máquina E2
    • GENERAL_PURPOSE_N2 para recursos do tipo de máquina N2
    • GENERAL_PURPOSE_N2D para recursos de máquina N2D
    • GENERAL_PURPOSE_T2D para recursos do tipo de máquina Tau T2D
    • GRAPHICS_OPTIMIZED para recursos do tipo de máquina G2
    • MEMORY_OPTIMIZED para recursos de tipo de máquina M1 ou M2
    • MEMORY_OPTIMIZED_M3 para compromissos de tipo de máquina M3 com otimização de memória
  • COMMITTED_VCPUS: o número de vCPUs que você quer no compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB, de memória que você quer no compromisso. Por exemplo, 10240MB. É possível comprar memória em incrementos de 256 MB.

  • COMMITTED_LOCAL_SSD: a quantidade, em GB, de armazenamento SSD local que você quer no seu compromisso. Cada SSD local tem 375 GB.

  • COMMITTED_ACCELERATOR_COUNT: o número de GPUs que você quer no compromisso.

  • COMMITTED_ACCELERATOR_TYPE: o tipo de GPU que você quer no compromisso.

Reservas anexadas

  • RESERVATION_NAME: o nome da reserva anexada.
  • RESERVATION_ZONE: a zona da reserva anexada.
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: especifica se a reserva anexada é uma reserva especificamente segmentada (true ou false). Para mais informações sobre reservas segmentadas especificamente, consulte Como funcionam as reservas.
  • NUMBER_OF_RESERVED_VMS: o número de VMs que você quer reservar na reserva anexada.
  • RESERVED_MACHINE_TYPE: o tipo de máquina que você quer para as VMs na reserva anexada.

    • Para tipos de máquina predefinidos, use o formato MACHINE_FAMILY-standard-CPUS. Por exemplo, n2-standard-4.
    • Para tipos de máquina personalizados, use o formato MACHINE_FAMILY-custom-CPUS-MEMORY. Por exemplo, n2-custom-4-5120. Para ver uma lista completa de restrições, leia as especificações dos tipos de máquina personalizados.

      Substitua:

      • MACHINE_FAMILY: a família dos tipos de máquina. Por exemplo, especifique n2 para VMs N2.
      • CPUS: o número de vCPUs.
      • MEMORY: a memória total para uma VM reservada. A memória precisa ser um múltiplo de 256 MB e ser fornecida em MB. Por exemplo, para criar uma VM N2 com 4 vCPUs e 5 GB de memória, que é 5.120 MB, use n2-custom-4-5120.
  • RESERVED_ACCELERATOR_COUNT: o número de GPUs que você quer adicionar, por VM, na reserva anexada.

  • RESERVED_ACCELERATOR_TYPE: o tipo de acelerador que você quer adicionar à reserva anexada.

  • INTERFACE_1 e INTERFACE_2: o tipo de interface que você quer que os discos SSD locais de cada VM reservada usem. As opções válidas são: scsi e nvme. Cada SSD local tem 375 GB. Repita o parâmetro localSsds para cada disco SSD local que você quer adicionar. É possível especificar até 24 discos SSD locais.

  • MINIMUM_CPU_PLATFORM: a plataforma de CPU mínima que você quer especificar para a reserva anexada.

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância que você quer usar para criar a reserva anexada.

  • SHARE_SETTING: o tipo de compartilhamento da reserva atual. Especifique esse campo com o valor como SPECIFIC_PROJECTS se você quiser compartilhar sua reserva de substituição em vários projetos de consumidores. Exclua este campo se quiser criar uma reserva de projeto único.

  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2: os IDs dos projetos que podem compartilhar essa reserva. Por exemplo project-1 e project-2. É possível incluir até 100 projetos pessoais. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o ID do projeto em que você cria essa reserva, já que esse projeto tem permissão para consumir essa reserva por padrão. Exclua esses campos se quiser criar uma reserva de projeto único.

O Compute Engine criará o compromisso com as reservas anexadas criadas somente se houver recursos suficientes do tipo de máquina especificado na zona de destino e cota suficiente no momento da solicitação. Se a compra foi bem-sucedida, o Computee Engine retornará um status 200 para a solicitação da API REST.

Exemplos de compra de compromissos criando novas reservas para anexar

Os cenários e comandos de exemplo a seguir mostram como comprar um compromisso para GPUs, discos SSD locais ou ambos criando novas reservas para anexar a esse compromisso.

Exemplo 1: comprar um compromisso para GPUs anexando uma única reserva nova

Suponha que você queira adquirir um compromisso commitment-01 na região us-central1 que inclua quatro GPUs NVIDIA V100. Você quer criar uma nova reserva reservation-01 como a reserva anexada para essas GPUs. Suponha que você também queira especificar o Compute Engine para usar essas GPUs reservadas em duas VMs n1-standard-8 na zona us-central1-a. Para comprar este exemplo de compromisso com a reserva anexada, faça a seguinte solicitação 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"
    }
  ]
}

Exemplo 2: adquirir um compromisso para GPUs sem confirmar vCPUs ou memória

Para se comprometer e reservar GPUs e discos SSD locais sem se comprometer com vCPUs ou memória, especifique 0 como o valor para as quantidades de vCPUs e memória. Por exemplo, suponha que você queira adquirir um compromisso commitment-02 para uma única GPU NVIDIA P4 na região us-west2. Você também quer criar uma nova reserva como a reserva anexada e especificar que o Compute Engine use a GPU reservada em uma VM n1-standard-2 na zona us-west2-b. Para comprar este exemplo de compromisso com a reserva anexada, faça a seguinte solicitação 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"
    }
  ]
}

Exemplo 3: adquirir um compromisso para GPUs e discos SSD locais anexando várias novas reservas

Suponha que você queira adquirir um compromisso commitment-03 para uma GPU NVIDIA V 100 e dois discos SSD locais na região us-central1. Você também quer criar e anexar duas reservas na zona us-central1-a. Na primeira reserva, res-01, você quer reservar 1 VM n1-standard-2 com 1 GPU. Você quer tornar res-01 uma reserva direcionada, o que significa que é necessário segmentar especificamente essa reserva pelo nome para usar as VMs reservadas. Na segunda reserva, res-02, você quer reservar uma VM n1-standard-8 com dois tipos de discos SSD locais anexados. Para adquirir esse compromisso de exemplo com as reservas anexadas, faça a seguinte solicitação POST. Observe que o compromisso de exemplo também contém recursos de vCPU e memória.

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

Substituir reservas anexadas a compromissos

Substitua as reservas anexadas atuais do compromisso por novas se quiser modificar os tipos e números de VMs que usam os recursos comprometidos.

Alterações permitidas

Quando você substitui uma reserva anexada existente de um compromisso por uma nova, solicite qualquer uma das alterações a seguir:

  • É possível reservar VMs de um tipo de máquina diferente. No entanto, ainda é necessário reservar VMs da mesma família de máquinas para continuar recebendo CUDs com relação aos recursos reservados.
  • É possível alterar o número de VMs que você quer reservar.
  • É possível alterar a quantidade de GPUs e discos SSD locais anexados por VM, desde que a quantidade total de GPUs reservadas e discos SSD locais permaneça a mesma.
  • É possível especificar suas reservas substituídas como reservas locais ou compartilhadas.

Requisitos

Quando você substitui a reserva anexada ao compromisso por uma nova, sua solicitação precisa atender a todos os requisitos a seguir:

  • Só é possível substituir uma reserva anexada por vez por apenas uma nova. Para substituir uma reserva anexada, remova simultaneamente uma reserva anexada atual definindo a contagem de VMs como 0 e defina uma nova reserva anexada que você quer substituí-la.
  • A nova reserva precisa estar no mesmo projeto que o compromisso.
  • A nova reserva precisa estar na mesma zona que a reserva removida.
  • A quantidade e os tipos de GPUs na nova reserva precisam corresponder à reserva removida.
  • Os números e tipos de discos SSD locais especificados na nova reserva precisam corresponder à reserva removida.
  • É possível alterar até 100 VMs por solicitação. Para fazer uma alteração que envolva mais de 100 VMs, divida-a em várias solicitações menores ou entre em contato com o suporte do Google Cloud.

Sua solicitação para substituir uma reserva também depende da disponibilidade de capacidade nesse momento. Se a capacidade para uma solicitação não estiver disponível, ela falhará e retornará um erro de disponibilidade de recurso, que você pode tentar resolver modificando ou adiando a solicitação. Para mais informações, consulte a documentação para resolver problemas de disponibilidade de recursos.

Se a solicitação para substituir uma reserva anexada falhar, essa reserva e os recursos reservados atuais não serão afetados. Para preservar sua capacidade, aguarde até que a solicitação de substituição de uma reserva seja bem-sucedida para fazer alterações nas VMs.

Etapas para substituir uma reserva anexada

É possível substituir as reservas de um compromisso usando a CLI do Google Cloud ou a REST.

gcloud

Para substituir reservas anexadas a compromissos, faça o seguinte:

  1. Crie um arquivo YAML no diretório atual com as configurações das seguintes reservas anexadas:

    O conteúdo do arquivo YAML é semelhante ao seguinte:

    - 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
      localssd:
      - 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
      localssd:
      - 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
    
    

    Substitua o seguinte pelas propriedades correspondentes das reservas atuais e de substituição:

    Reserva atual

    Para a reserva atual, todas as propriedades a seguir precisam ser exatamente as mesmas de quando você visualizou a reserva. Omita os campos de qualquer propriedade que ainda não tenha a reserva atual.

    • CURRENT_RESERVATION_NAME: o nome da reserva anexada atual.
    • CURRENT_RESERVATION_ZONE: a zona da reserva anexada atual.
    • CURRENT_RESERVATION_MACHINE_TYPE: o tipo de máquina da reserva anexada atual.
    • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS: o número de GPUs reservadas na reserva anexada atual.
    • CURRENT_RESERVATION_ACCELERATOR_TYPE: o tipo de acelerador reservado na reserva anexada atual.
    • CURRENT_RESERVATION_INTERFACE_1 e CURRENT_RESERVATION_INTERFACE_2: o tipo de interface que os SSDs locais de cada VM reservada usam na reserva anexada atual. As opções válidas são: scsi e nvme. Cada SSD local tem 375 GB. Repita o parâmetro local_ssd para todos os discos SSD locais reservados.
    • CURRENT_RESERVATION_PROJECT_ID: o ID do projeto atual que tem o compromisso e a reserva anexada. Especifique este campo se a reserva anexada atual for compartilhada entre vários projetos de consumidor.
    • CURRENT_RESERVATION_SHARE_SETTING: o tipo de compartilhamento da reserva atual. Especifique esse campo com o valor projects se a reserva anexada atual for compartilhada entre vários projetos de consumidor.
    • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 e CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2: os IDs dos projetos com os quais você compartilha a reserva anexada atual. Por exemplo, project-1 e project-2.

    Reserva de substituição

    Para a reserva de substituição, defina as propriedades a seguir conforme necessário. Verifique se você atende a todos os requisitos ao especificar essas propriedades. Omita todos os campos extras que você não queira usar.

    • REPLACEMENT_RESERVATION_NAME: o nome da nova reserva de substituição.
    • REPLACEMENT_RESERVATION_ZONE: a zona da nova reserva de substituição.
    • REPLACEMENT_RESERVATION_NUMBER_OF_VMS: o número de VMs que você quer reservar na nova reserva de substituição.
    • REPLACEMENT_RESERVATION_MACHINE_TYPE: o tipo de máquina que você quer para as VMs na nova reserva de substituição.

      • Para tipos de máquina predefinidos, use o formato MACHINE_FAMILY-standard-CPUS. Por exemplo, n2-standard-4.
      • Para tipos de máquina personalizados, use o formato MACHINE_FAMILY-custom-CPUS-MEMORY. Por exemplo, n2-custom-4-5120. Para ver uma lista completa de restrições, leia as especificações dos tipos de máquina personalizados.

      Substitua:

      • MACHINE_FAMILY: a família dos tipos de máquina. Por exemplo, especifique n2 para VMs N2.
      • CPUS: o número de vCPUs.
      • MEMORY: a memória total para uma VM reservada. A memória precisa ser um múltiplo de 256 MB e ser fornecida em MB. Por exemplo, para criar uma VM N2 com 4 vCPUs e 5 GB de memória, que é 5.120 MB, use n2-custom-4-5120.
    • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS: o número de GPUs que você quer adicionar, por instância de VM, na reserva de substituição.

    • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: o tipo de acelerador que você quer adicionar à reserva de substituição;

    • REPLACEMENT_RESERVATION_INTERFACE_1 e REPLACEMENT_RESERVATION_INTERFACE_2: o tipo de interface que você quer que os discos SSD locais de cada VM reservada usem. As opções válidas são: scsi e nvme. Cada SSD local tem 375 GB. Repita o parâmetro local_ssd para cada disco SSD local que você quer adicionar. É possível especificar até 24 discos SSD locais.

    • REPLACEMENT_RESERVATION_PROJECT_ID: o ID do projeto atual que tem o compromisso e a reserva anexada. Especifique esse campo se quiser compartilhar sua reserva de substituição em vários projetos de consumidor.

    • REPLACEMENT_RESERVATION_SHARE_SETTING: o tipo de compartilhamento da reserva de substituição. Especifique esse campo com o valor como projects se você quiser compartilhar sua reserva de substituição em vários projetos de consumidores.

    • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 e REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: os IDs dos projetos que podem compartilhar essa reserva. Por exemplo project-1,project-2 de dois minutos. É possível incluir até 100 projetos pessoais. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o REPLACEMENT_RESERVATION_PROJECT_ID, que já tem permissão para consumir essa reserva por padrão.

  2. Execute o comando gcloud beta compute commitments update-reservations e especifique o caminho para o arquivo YAML usando a sinalização --reservations-from-file.

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

    Substitua:

    • COMMITMENT_NAME: o nome do compromisso com a reserva anexada.
    • PROJECT_ID: o ID do projeto do compromisso com a reserva anexada.
    • REGION: a região em que a chave está localizada.
    • YAML_FILE: o caminho para o arquivo YAML que contém a configuração das reservas atuais e de substituição.

Exemplo de substituição de uma reserva anexada a um compromisso

Para demonstrar isso, esta seção mostra um exemplo de compromisso com uma reserva anexada e como substituir a reserva anexada de exemplo.

Exemplo de compromisso com uma reserva anexada

Por exemplo, suponha que você queira atualizar as reservas anexadas para o compromisso my-commitment-with-reservations, que foram compradas usando o seguinte comando:

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

Neste exemplo, suponha que, quando este comando foi executado, one-reservation.yaml era um arquivo no diretório atual com o conteúdo a seguir, que define uma reserva anexada chamada 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 compromisso my-commitment-with-reservations e a reserva anexada res-1 resultaram nos seguintes recursos reservados e comprometidos:

Tipo de recurso Recursos comprometidos
(my-commitment-with-reservations)
Recursos na reserva anexada atualmente
(res-1)
vCPUs e memória 16 vCPUs e 60 GB 16 vCPUs e 60 GB
(4 VMs n1-standard-4 reservadas)*
GPUs 4 GPUs P100 4 GPUs P100
(1 GPU P100 por VM, para 4 VMs)*
Discos SSD locais 3.000 GB ou 8 discos SSD locais 3.000 GB ou 8 discos SSD locais
(750 GB ou 2 discos SSD locais por VM, para 4 VMs)*

* Especificamente, o exemplo de reserva anexada, res-1, reserva 4 n1-standard-4 VMs, cada uma com uma GPU P100 e dois SSDs locais de scsi tipo de interface. O tipo de máquina n1-standard-4 usa 4 vCPUs e 15 GB para cada VM.

Substitua o exemplo de reserva anexada

Suponha que você queira substituir a reserva anexada res-1 por uma nova reserva anexada res-2 e alterar os recursos reservados para o seguinte:

Tipo de recurso Recursos comprometidos
(my-commitment-with-reservations)
Recursos na reserva anexada atualmente
(res-1)
Recursos na reserva anexada de substituição
(res-2)
vCPUs e memória 16 vCPUs e 60 GB 16 vCPUs e 60 GB
(4 VMs n1-standard-4 reservadas)*
16 vCPUs e 60 GB
(2 VMs reservadas e compartilhadas n1-standard-8)
GPUs 4 GPUs P100 4 GPUs P100
(1 GPU P100 por VM, para 4 VMs)*
4 GPUs P100
(2 GPUs P100 por VM, para 2 VMs)
Discos SSD locais 3.000 GB ou 8 discos SSD locais 3.000 GB ou 8 discos SSD locais
(750 GB ou 2 discos SSD locais por VM, para 4 VMs)*
3.000 GB ou 8 discos SSD locais
(1.500 GB ou 4 discos SSD locais por VM, para 2 VMs)*

* Especificamente, o exemplo de reserva anexada, res-1, reserva 4 n1-standard-4 VMs, cada uma com uma GPU P100 e dois SSDs locais de scsi tipo de interface. O tipo de máquina n1-standard-4 usa 4 vCPUs e 15 GB para cada VM.

Especificamente, a reserva anexada de substituição define res-2, que reserva 2 VMs n1-standard-8, cada uma com uma GPU P100 e quatro SSDs locais de scsi tipo de interface. Além disso, res-2 é compartilhado com dois outros projetos, project-1 e project-2, e pertence ao projeto atual, my-project. O tipo de máquina n1-standard-8 usa 8 vCPUs e 30 GB para cada VM.

Para substituir a reserva anexada res-1 por res-2 para o compromisso my-commitment-with-reservations, faça o seguinte:

  1. Crie um arquivo chamado two-reservations.yaml no diretório atual em que ele contém o seguinte conteúdo:

    - 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. Execute este comando:

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

REST

Para substituir reservas anexadas a compromissos, faça uma solicitação POST usando o 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"
          }
         }
      }
    }
  ]
}

Substitua o seguinte pelas propriedades correspondentes do compromisso, da reserva atual e da reserva de substituição:

Compromisso

  • COMMITMENT_NAME: o nome do compromisso com a reserva anexada.
  • PROJECT_ID: o ID do projeto do compromisso com a reserva anexada. Este também é o ID do projeto das reservas atuais e anexadas.
  • COMMITMENT_ZONE: a zona do compromisso com a reserva anexada.

Reserva atual

Para a reserva atual, todas as propriedades a seguir precisam ser exatamente as mesmas de quando você visualizou a reserva. Omita os campos de qualquer propriedade que ainda não tenha a reserva atual.

  • CURRENT_RESERVATION_NAME: o nome da reserva anexada atual.
  • CURRENT_RESERVATION_ZONE: a zona da reserva anexada atual.
  • CURRENT_RESERVATION_MACHINE_TYPE: o tipo de máquina da reserva anexada atual.
  • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS: o número de GPUs reservadas na reserva anexada atual.
  • CURRENT_RESERVATION_ACCELERATOR_TYPE: o tipo de acelerador reservado na reserva anexada atual.
  • CURRENT_RESERVATION_INTERFACE_1 e CURRENT_RESERVATION_INTERFACE_2: o tipo de interface que os SSDs locais de cada VM reservada usam na reserva anexada atual. As opções válidas são: scsi e nvme. Cada SSD local tem 375 GB. Repita o parâmetro localSsds para todos os discos SSD locais reservados.
  • CURRENT_RESERVATION_SHARE_SETTING: o tipo de compartilhamento da reserva atual. Especifique esse parâmetro com o valor projects se a reserva anexada atual for compartilhada entre vários projetos de consumidor.
  • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 e CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2: os IDs dos projetos com os quais você compartilha a reserva anexada atual. Por exemplo, project-1 e project-2.

Reserva de substituição

Para a reserva de substituição, defina as propriedades a seguir conforme necessário. Verifique se você atende a todos os requisitos ao especificar essas propriedades. Omita todos os campos extras que você não queira usar.

  • REPLACEMENT_RESERVATION_NAME: o nome da nova reserva de substituição.
  • REPLACEMENT_RESERVATION_ZONE: a zona da nova reserva de substituição.
  • REPLACEMENT_RESERVATION_NUMBER_OF_VMS: o número de VMs que você quer reservar na nova reserva de substituição.
  • REPLACEMENT_RESERVATION_MACHINE_TYPE: o tipo de máquina que você quer para as VMs na nova reserva de substituição.

    • Para tipos de máquina predefinidos, use o formato MACHINE_FAMILY-standard-CPUS. Por exemplo, n2-standard-4.
    • Para tipos de máquina personalizados, use o formato MACHINE_FAMILY-custom-CPUS-MEMORY. Por exemplo, n2-custom-4-5120. Para ver uma lista completa de restrições, leia as especificações dos tipos de máquina personalizados.

    Substitua:

    • MACHINE_FAMILY: a família dos tipos de máquina. Por exemplo, especifique n2 para VMs N2.
    • CPUS: o número de vCPUs.
    • MEMORY: a memória total para uma instância reservada. A memória precisa ser um múltiplo de 256 MB e ser fornecida em MB. Por exemplo, para criar uma VM N2 com 4 vCPUs e 5 GB de memória, que é 5.120 MB, use n2-custom-4-5120.
  • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS: o número de GPUs que você quer adicionar, por instância de VM, na reserva de substituição.

  • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: o tipo de acelerador que você quer adicionar à reserva de substituição.

  • REPLACEMENT_RESERVATION_INTERFACE_1 e REPLACEMENT_RESERVATION_INTERFACE_2: o tipo de interface que você quer que os discos SSD locais de cada VM reservada usem. As opções válidas são: scsi e nvme. Cada SSD local tem 375 GB. Repita o parâmetro localSsds para cada disco SSD local que você quer adicionar. É possível especificar até 24 discos SSD locais.

  • REPLACEMENT_RESERVATION_SHARE_SETTING: o tipo de compartilhamento da reserva de substituição. Especifique esse parâmetro com o valor como projects se você quiser compartilhar sua reserva de substituição em vários projetos de consumidores.

  • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 e REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: os IDs dos projetos que podem compartilhar essa reserva. Por exemplo project-1,project-2 de dois minutos. É possível incluir até 100 projetos pessoais. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o PROJECT_ID, que já tem permissão para consumir essa reserva por padrão.

Exemplo de substituição de uma reserva anexada a um compromisso

Para demonstrar isso, esta seção mostra um exemplo de compromisso com uma reserva anexada e como substituir a reserva anexada de exemplo.

Exemplo de compromisso com uma reserva anexada

Por exemplo, suponha que você queira substituir a reserva anexada res-1 pelo compromisso my-commitment-with-reservations, que foi comprada fazendo a seguinte solicitação 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 compromisso my-commitment-with-reservations e a reserva anexada res-1 resultaram nos seguintes recursos reservados e comprometidos:

Tipo de recurso Recursos comprometidos
(my-commitment-with-reservations)
Recursos na reserva anexada atualmente
(res-1)
vCPUs e memória 16 vCPUs e 60 GB 16 vCPUs e 60 GB
(4 VMs n1-standard-4 reservadas)*
GPUs 4 GPUs P100 4 GPUs P100
(1 GPU P100 por VM, para 4 VMs)*
Discos SSD locais 3.000 GB ou 8 discos SSD locais 3.000 GB ou 8 discos SSD locais
(750 GB ou 2 discos SSD locais por VM, para 4 VMs)*

* Especificamente, o exemplo de reserva anexada, res-1, reserva 4 n1-standard-4 VMs, cada uma com uma GPU P100 e dois SSDs locais de scsi tipo de interface. O tipo de máquina n1-standard-4 usa 4 vCPUs e 15 GB para cada VM.

Substitua o exemplo de reserva anexada

Suponha que você queira substituir a reserva anexada res-1 por uma nova reserva anexada res-2 e alterar os recursos reservados para o seguinte:

Tipo de recurso Recursos comprometidos
(my-commitment-with-reservations)
Recursos na reserva anexada atualmente
(res-1)
Recursos na reserva anexada de substituição
(res-2)
vCPUs e memória 16 vCPUs e 60 GB 16 vCPUs e 60 GB
(4 VMs n1-standard-4 reservadas)*
16 vCPUs e 60 GB
(2 VMs reservadas e compartilhadas n1-standard-8)
GPUs 4 GPUs P100 4 GPUs P100
(1 GPU P100 por VM, para 4 VMs)*
4 GPUs P100
(2 GPUs P100 por VM, para 2 VMs)
Discos SSD locais 3.000 GB ou 8 discos SSD locais 3.000 GB ou 8 discos SSD locais
(750 GB ou 2 discos SSD locais por VM, para 4 VMs)*
3.000 GB ou 8 discos SSD locais
(1.500 GB ou 4 discos SSD locais por VM, para 2 VMs)*

* Especificamente, o exemplo de reserva anexada, res-1, reserva 4 n1-standard-4 VMs, cada uma com uma GPU P100 e dois SSDs locais de scsi tipo de interface. O tipo de máquina n1-standard-4 usa 4 vCPUs e 15 GB para cada VM.

Especificamente, a reserva anexada de substituição define res-2, que reserva 2 VMs n1-standard-8, cada uma com uma GPU P100 e quatro SSDs locais de scsi tipo de interface. Além disso, res-2 é compartilhado com dois outros projetos, project-1 e project-2, e pertence ao projeto atual, my-project. O tipo de máquina n1-standard-8 usa 8 vCPUs e 30 GB para cada VM.

Para substituir a reserva anexada res-1 por res-2 para o compromisso my-commitment-with-reservations, faça a seguinte solicitação POST usando regionCommitments.updateReservations método:

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

A seguir