Combine reservas com descontos por uso contínuo


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

Este documento explica como você pode receber CUDs para seus recursos reservados e como anexar reservas a compromissos baseados em recursos .

Antes de começar

  • Revise os princípios básicos das reservas junto com seus requisitos e restrições. Para mais informações, consulte Reservas de recursos zonais do Compute Engine .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

CUDs para seus recursos reservados

Você recebe CUDs de compromissos ativos para qualquer uso de recursos elegíveis em seus projetos. Se você também tiver reservas para reter capacidade de recursos nesse projeto, os CUDs de compromissos ativos também poderão ser aplicados a esses recursos reservados. Para que quaisquer recursos reservados se tornem elegíveis para receber CUDs, aplicam-se os seguintes requisitos:

  • Você não está recebendo nenhuma outra forma de desconto pelo uso de recursos.
  • As suas VMs devem consumir as reservas enquanto os compromissos estão ativos.
  • No mínimo, as seguintes propriedades devem corresponder entre os seus compromissos ativos e as reservas que as suas VMs consomem:

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

Dependendo do tipo de recurso, você pode 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 recursos, você pode adquirir compromissos baseados em recursos ou em gastos que incluam os tipos de recursos necessários. Quando as VMs no seu projeto consomem quaisquer reservas cujas propriedades correspondam a esses compromissos ativos, a utilização destes tipos de recursos torna-se automaticamente elegível para CUDs aplicáveis.

    Somente para compromissos baseados em recursos, você pode ativar o compartilhamento CUD . Isso permite compartilhar CUDs de um projeto para cobrir o uso em outros projetos vinculados à conta do Cloud Billing desse compromisso.

    Se você reservou mais recursos do que se comprometeu a comprar, não receberá CUDs por esses recursos adicionais.

  • GPUs e discos SSD locais : para receber CUDs para um ou ambos os tipos de recursos, você deve fazer o seguinte:

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

    Quando as VMs do seu projeto consomem essas reservas anexadas, você começa a receber os CUDs aplicáveis ​​para esses tipos de recursos reservados. Se você ativar o compartilhamento de CUD e anexar uma reserva compartilhada, o uso de outros projetos de consumo também poderá se tornar elegível para os CUDs compartilhados. No entanto, para que o uso de outros projetos seja qualificado, você deve limitar o compartilhamento da sua reserva na conta Cloud Billing do compromisso.

Anexar reservas a compromissos baseados em recursos

Você pode 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. Você pode anexar diversas reservas a um único compromisso; no entanto, uma reserva só pode ser associada a um único compromisso. Ao adquirir um compromisso, você pode anexar reservas a esse compromisso de uma das seguintes maneiras:

  • Usando reservas existentes cujas propriedades correspondam ao compromisso
  • Criando novas reservas correspondentes ao adquirir seu compromisso

Depois de adquirir um compromisso com reservas anexadas, as reservas permanecerão ativas enquanto o compromisso estiver ativo. Quando seu compromisso expirar, o Compute Engine excluirá automaticamente todas as reservas anexadas. A eliminação destas reservas não tem efeito em quaisquer VMs em execução que estivessem a consumir essas reservas. As VMs em execução continuam em execução e você ainda será 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, ao adquirir um compromisso que inclua vCPUs, memória ou ambos, você ainda poderá optar por anexar reservas que especifiquem esses recursos. Para saber como adquirir compromissos somente para vCPUs, memória ou ambos, sem anexar reservas, consulte Comprar compromissos sem reservas anexadas .

Recursos comprometidos que exigem reservas anexadas

GPUs comprometidas e discos SSD locais ( com exceção dos discos SSD locais Titanium para instâncias C4A ) exigem que você anexe reservas correspondentes aos seus compromissos. Ao adquirir um compromisso que inclua GPUs, discos SSD locais ou ambos, você também deverá reservar esses recursos e anexar essas reservas ao seu compromisso. Você pode fazer isso usando uma única reserva ou uma combinação de reservas. Ao adquirir esse compromisso, você também pode incluir vCPUs, memória ou ambos. No entanto, você não precisa reservar essas vCPUs ou memória.

Para saber como adquirir compromissos para GPUs, consulte um dos seguintes:

Para saber como adquirir compromissos para discos SSD locais, consulte Comprar compromissos com reservas anexadas neste documento.

Para visualizar a lista completa de séries de máquinas que suportam CUDs para GPUs e discos SSD locais, consulte a seção Tipos de compromisso de hardware na documentação de CUDs baseados em recursos.

Quantidades de recursos permitidas nas reservas anexas

Para vCPUs e memória , você pode ter reservas anexadas especificando mais ou menos quantidades de recursos do que você está comprometendo. Se você comprometer mais vCPUs ou memória do que reserva, o Compute Engine reservará capacidade apenas para esses recursos reservados. No entanto, você ainda pode usar os recursos adicionais comprometidos, dependendo da disponibilidade na sua região. Se você reservar mais vCPUs ou memória do que comprometeu, não receberá CUDs pelos recursos adicionais reservados.

Por exemplo, ao adquirir um compromisso de 4 vCPUs e 30 GB de memória, você pode optar por fazer o seguinte:

  • Não anexe nenhuma reserva.
  • 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 seu compromisso contiver GPUs, discos SSD locais ou ambos , você deverá reservar e anexar todos esses recursos. Suas reservas anexadas devem especificar os números e tipos exatos de GPUs e discos SSD locais com os quais você está se comprometendo. Conseqüentemente, você também não pode ter nenhum número ou tipo adicional de GPUs ou discos SSD locais em suas reservas anexadas.

Por exemplo, suponha que você adquira um compromisso de 30 GB de memória e 4 GPUs NVIDIA P100. A reserva anexada (ou combinação de reservas anexadas) pode especificar qualquer quantidade de vCPUs ou memória, mas deve ter exatamente 4 GPUs do tipo NVIDIA P100. Neste exemplo, não é possível anexar reservas especificando qualquer uma das seguintes combinações de recursos:

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

Compromissos de compra com reservas anexadas

Ao adquirir um novo compromisso, você pode anexar reservas ao seu compromisso de uma das seguintes maneiras:

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

Requisitos

Antes de adquirir um compromisso com reservas anexadas, revise esses requisitos e certifique-se de que seu compromisso e reservas atendam aos seguintes critérios:

  • Você deve adquirir o compromisso e criar as reservas anexas no mesmo projeto e região.
  • Você deve adquirir o compromisso e criar as reservas anexadas para recursos da mesma série da família de máquinas.
  • Você deve desabilitar a opção de exclusão automática nas reservas anexadas.
  • Se o seu compromisso tiver GPUs, o tipo de GPU especificado na reserva e o compromisso deverão corresponder.
  • Para GPUs e discos SSD locais, o número de recursos reservados de cada tipo de recurso deve corresponder exatamente ao número de recursos comprometidos para esse tipo de recurso. No entanto, esse requisito não se aplica quando você adquire um compromisso para discos SSD locais Titanium C4A.

    Por exemplo, se você quiser adquirir um compromisso para 4 GPUs V100 e 2 discos SSD locais, as reservas anexadas do seu compromisso deverão especificar um total de 4 GPUs V100 e 2 SSDs locais. A quantidade de vCPU e memória que você reserva pode ser maior ou menor do que você comprometeu. No entanto, se você adquirir um compromisso para 4 vCPUs C4A e 2 discos SSD Titanium locais, não será necessário anexar nenhuma reserva ao compromisso.

  • Para GPUs, adquira compromissos para os tipos específicos de GPU que você pretende usar. Por exemplo, você pode adquirir compromissos para NVIDIA P100s ou NVIDIA V100s, mas não pode usar um compromisso adquirido para GPUs NVIDIA P100 para cobrir GPUs NVIDIA V100.

  • Se a sua reserva anexada for uma reserva compartilhada e você quiser receber os CUDs aplicáveis ​​ao consumir essa reserva fora do projeto do seu compromisso, você deverá fazer o seguinte:

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

Anexe reservas existentes

Você pode anexar reservas existentes ao adquirir seu compromisso usando o console do Google Cloud, a Google Cloud CLI ou 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 CUD estiver ativado para uma conta do Cloud Billing, você poderá adquirir o compromisso usando qualquer projeto dessa conta do Cloud Billing. Depois de selecionar o projeto, faça o seguinte:

  1. No console do Google Cloud, acesse a página de descontos por uso contínuo .

    Vá para descontos por uso contínuo

  2. Para adquirir um compromisso, clique em Compromisso de compra . A página Comprar um desconto por uso contínuo é aberta e exibe a guia Hardware .

  3. No campo Nome , insira um nome para o seu compromisso.

  4. No campo Região , selecione a região onde você quer comprometer os recursos do Compute Engine.

  5. No campo Tipo de compromisso , selecione a série da família de máquinas para seus recursos comprometidos. Os seguintes tipos de compromisso oferecem opções para GPUs, discos SSD locais ou ambos:

    • A2 otimizado para acelerador para recursos do tipo máquina A2
    • A3 otimizado para acelerador para recursos de tipo de máquina A3 Edge e A3 High
    • A3 Mega otimizado para acelerador para recursos do tipo máquina A3 Mega
    • C2 otimizado para computação para recursos do tipo máquina C2
    • C2D otimizado para computação para recursos de tipo de máquina C2D
    • C3 de uso geral para recursos do tipo máquina C3
    • C3D de uso geral para recursos de tipo de máquina C3D
    • Recursos do tipo máquina N1 de uso geral para N1
    • Recursos do tipo máquina N2 de uso geral para N2
    • N2D de uso geral para recursos de máquina N2D
    • G2 otimizado para gráficos para recursos do tipo de máquina G2
    • Recursos de tipo de máquina M3 forM3 com otimização de memória
    • Z3 otimizado para armazenamento para recursos do tipo máquina Z3

  6. Para Duração , faça o seguinte:

    1. Para especificar o plano do seu compromisso, selecione 1 ano ou 3 anos . Esta configuração determina a duração predefinida do seu compromisso.
    2. Opcional. Para especificar uma duração de prazo personalizada para seu compromisso, clique no botão de alternância Estender data de término e, no campo Data , especifique uma data de término personalizada. Para obter mais informações, consulte Estender o prazo dos compromissos .

  7. No campo Cores , insira o número de vCPUs com as quais você deseja se comprometer.

  8. No campo Memória , insira a quantidade, em GB, de memória que você deseja comprometer.

  9. Para confirmar com GPUs, na seção GPUs , clique em Adicionar GPU e faça o seguinte:

    1. No campo Tipo de GPU , selecione o tipo de GPU.
    2. No campo Número de GPUs , insira o número de GPUs.
    3. Opcional: se o seu modelo de GPU suportar estações de trabalho virtuais NVIDIA RTX (vWS) para cargas de trabalho gráficas e você planeja executar cargas de trabalho com uso intensivo de gráficos, marque a caixa de seleção Habilitar estação de trabalho virtual (NVIDIA GRID) .
  10. Para confirmar com discos SSD locais, na seção SSDs locais , clique em Adicionar SSD e, no campo Número de SSDs , especifique o número de discos.

  11. Para anexar uma ou mais reservas existentes ao compromisso, no campo Reservas , selecione Anexar reservas existentes .

    O console do Google Cloud exibe uma lista de todas as reservas do seu projeto cuja região, tipo de máquina e tipo de GPU correspondem ao compromisso. Em seguida, faça o seguinte:

    1. Opcional. Para visualizar reservas com propriedades específicas, no menu Filtro , adicione ou remova filtros das propriedades desejadas.
    2. Selecione todas as reservas que deseja anexar ao compromisso.
  12. Para finalizar a compra do seu compromisso com as reservas anexas, faça o seguinte:

    1. Clique em Comprar .
    2. Na caixa de diálogo Comprar um desconto por uso contínuo , se você concordar com os termos específicos do serviço , clique em Comprar novamente.

gcloud

Para adquirir um compromisso anexando reservas existentes, execute o comando gcloud compute commitments create . No seu comando, inclua o sinalizador --existing-reservation para especificar uma reserva existente que você deseja anexar ao seu compromisso. Inclua uma nova instância deste sinalizador para cada reserva existente que você deseja anexar. Você pode anexar qualquer número de reservas existentes ao seu 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 \
    --custom-end-time=CUSTOM_END_DATE \
    --existing-reservation=name='RESERVATION_NAME_1',zone='RESERVATION_ZONE_1' \
    --existing-reservation=name='RESERVATION_NAME_2',zone='RESERVATION_ZONE_2'

Substitua o seguinte:

  • COMMITMENT_NAME : o nome do compromisso.
  • REGION : a região onde o compromisso está localizado.
  • PROJECT_ID : o ID do projeto onde você deseja adquirir o compromisso com as reservas anexadas.
  • DURATION : a duração do compromisso, seja 12-month ou 36-month .
  • CUSTOM_END_DATE : opcional. Uma data de término personalizada para seu período, que deve ser formatada como YYYY-MM-DD . Por exemplo, para especificar uma data de término personalizada de 20 de abril de 2024, formate-a como 2024-04-20 .
  • COMMITMENT_TYPE : o tipo de compromisso. Os seguintes tipos de compromisso oferecem opções para GPUs, discos SSD locais ou ambos:

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

  • COMMITTED_VCPUS : o número de vCPUs que você deseja em seu compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY : a quantidade, em MB ou GB, de memória que você deseja no seu commit. Por exemplo, 10240MB ou 10GB . Se você não especificar uma unidade, o Compute Engine usará GB como unidade. Você pode adquirir memória em incrementos de 0,25 GB.

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

  • COMMITTED_ACCELERATOR_COUNT : o número de GPUs que você deseja em seu compromisso.

  • COMMITTED_ACCELERATOR_TYPE : o tipo de GPU que você deseja em seu compromisso.

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

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

Exemplo: adquirir 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 4 GPUs NVIDIA P100 e 4 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 existentes como reservas anexadas, execute o comando a seguir. Observe que 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,local-ssd=1500 \
    --resources-accelerator=type=nvidia-tesla-p100,count=4 \
    --plan 12-month \
    --existing-reservation=name=res-01,zone=us-central1-a \
    --existing-reservation=name=res-02,zone=us-central1-b
    

DESCANSAR

Para adquirir um compromisso anexando reservas existentes, faça uma solicitação POST ao método regionCommitments.insert . Na sua solicitação, inclua o campo existingReservations para especificar uma lista separada por vírgulas de todas as reservas existentes que você deseja anexar ao seu compromisso. Você pode 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"
    }
  ],
  "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
  "existingReservations": "RESERVATION_URLs"
}

Substitua o seguinte:

  • COMMITMENT_NAME : o nome do compromisso.
  • REGION : a região onde o compromisso está localizado.
  • PROJECT_ID : o ID do projeto onde você deseja adquirir o compromisso com as reservas anexadas.
  • DURATION : a duração do compromisso, seja TWELVE_MONTH ou THIRTY_SIX_MONTH .
  • COMMITMENT_TYPE : o tipo de compromisso. Os seguintes tipos de compromisso oferecem opções para GPUs, discos SSD locais ou ambos:

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

  • COMMITTED_VCPUS : o número de vCPUs que você deseja em seu compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY : a quantidade, em MB, de memória que você deseja no seu commit. Por exemplo, 10240MB . Você pode adquirir memória em incrementos de 256 MB.

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

  • COMMITTED_ACCELERATOR_COUNT : o número de GPUs que você deseja em seu compromisso.

  • COMMITTED_ACCELERATOR_TYPE : o tipo de GPU que você deseja em seu compromisso.

  • CUSTOM_END_DATE : opcional. Uma data de término personalizada para seu período, que deve ser formatada como YYYY-MM-DD . Por exemplo, para especificar uma data de término personalizada de 20 de abril de 2024, formate-a como 2024-04-20 .

  • END_TIME : 12h, horário do Pacífico dos EUA e do Canadá (UTC-8 ou UTC-7), como uma compensação do Tempo Universal Coordenado (UTC) . Especifique esse valor somente se você especificou uma data de término personalizada para seu compromisso. Especifique um dos seguintes valores:

    • Durante o horário de verão: 07:00:00
    • Nos demais horários: 08:00:00
  • RESERVATION_URLs : uma lista separada por vírgulas de URLs das reservas existentes que você deseja 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: adquirir 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 4 GPUs NVIDIA P100 e 4 discos SSD locais. Para adquirir um novo compromisso na região us-central1 deste projeto para essas GPUs e discos SSD locais e para usar essas reservas existentes 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-p100",
      "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"
  ]
}

Crie novas reservas para anexar

Você pode criar suas reservas anexadas ao adquirir seu compromisso usando o console do Google Cloud, a Google Cloud CLI ou 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 CUD estiver ativado para uma conta do Cloud Billing, você poderá adquirir o compromisso usando qualquer projeto dessa conta do Cloud Billing. Depois de selecionar o projeto, faça o seguinte:

  1. No console do Google Cloud, acesse a página de descontos por uso contínuo .

    Vá para descontos por uso contínuo

  2. Para adquirir um compromisso, clique em Compromisso de compra . A página Comprar um desconto por uso contínuo é aberta e exibe a guia Hardware .

  3. No campo Nome , insira um nome para o seu compromisso.

  4. No campo Região , selecione a região onde você quer comprometer os recursos do Compute Engine.

  5. No campo Tipo de compromisso , selecione a série da família de máquinas para seus recursos comprometidos. Os seguintes tipos de compromisso oferecem opções para GPUs, discos SSD locais ou ambos:

    • A2 otimizado para acelerador para recursos do tipo máquina A2
    • A3 otimizado para acelerador para recursos de tipo de máquina A3 Edge e A3 High
    • A3 Mega otimizado para acelerador para recursos do tipo máquina A3 Mega
    • C2 otimizado para computação para recursos do tipo máquina C2
    • C2D otimizado para computação para recursos de tipo de máquina C2D
    • C3 de uso geral para recursos do tipo máquina C3
    • C3D de uso geral para recursos de tipo de máquina C3D
    • Recursos de tipo de máquina N1 de uso geral para N1
    • Recursos do tipo máquina N2 de uso geral para N2
    • N2D de uso geral para recursos de máquina N2D
    • G2 otimizado para gráficos para recursos do tipo de máquina G2
    • Recursos de tipo de máquina M3 forM3 com otimização de memória
    • Z3 otimizado para armazenamento para recursos do tipo máquina Z3

  6. Para Duração , escolha 1 ano ou 3 anos como duração do prazo do seu compromisso.

  7. No campo Cores , insira o número de vCPUs com as quais você deseja se comprometer.

  8. No campo Memória , insira a quantidade, em GB, de memória que você deseja comprometer.

  9. Para confirmar com GPUs, na seção GPUs , clique em Adicionar GPU e faça o seguinte:

    1. No campo Tipo de GPU , selecione o tipo de GPU.
    2. No campo Número de GPUs , insira o número de GPUs.
    3. Opcional: se o seu modelo de GPU suportar estações de trabalho virtuais NVIDIA RTX (vWS) para cargas de trabalho gráficas e você planeja executar cargas de trabalho com uso intensivo de gráficos, marque a caixa de seleção Habilitar estação de trabalho virtual (NVIDIA GRID) .
  10. Para confirmar com discos SSD locais, na seção SSDs locais , clique em Adicionar SSD e, no campo Número de SSDs , especifique o número de discos.

  11. Para criar uma nova reserva e anexá-la ao compromisso, no campo Reservas , selecione Criar reservas e faça o seguinte. Repita esta etapa para cada nova reserva que você deseja criar e anexar.

    1. Clique em Adicionar uma reserva . A seção Nova reserva é exibida.
    2. No campo Nome , insira um nome para sua reserva anexada.
    3. No campo Região , selecione a mesma região do seu compromisso.
    4. No campo Zona , selecione a zona onde deseja reservar seus recursos.
    5. Na seção Tipo de compartilhamento , especifique como deseja compartilhar esta reserva de uma das seguintes maneiras:

      • Para criar uma reserva de projeto único, selecione Local .
      • Para criar uma reserva compartilhada com vários projetos, selecione Compartilhado . Em seguida, para especificar os projetos com os quais compartilhar esta reserva, clique em Adicionar projetos e selecione os projetos que deseja da organização do projeto atual.
    6. No campo Usar com instância de VM , selecione como você deseja que as VMs consumam sua reserva de uma das seguintes maneiras:

      • Para permitir que VMs com propriedades correspondentes consumam automaticamente esta reserva, clique em Usar reserva automaticamente (padrão).
      • Para consumir os recursos desta reserva apenas ao criar VMs com propriedades correspondentes que visem especificamente esta reserva por nome, clique em selecionar Selecionar reserva específica .
    7. Na seção Detalhes do recurso , faça o seguinte:

      1. No campo Número de instâncias de VM , insira o número de instâncias de VM que você deseja reservar.
      2. Na seção Configuração da máquina , especifique as propriedades de suas VMs reservadas de uma das seguintes maneiras:

        1. Para especificar as propriedades de suas VMs usando um modelo de instância existente, selecione Usar modelo de instância .

          No campo Modelo de instância , selecione um modelo de instância que especifique a mesma série de família de máquinas do seu compromisso. Se você selecionar um modelo de instância regional, a região desse modelo de instância também deverá corresponder à região especificada em seu compromisso.

        2. Para especificar manualmente as propriedades das suas VMs, selecione Selecionar tipo de máquina e faça o seguinte:

          1. Selecione a família de máquinas que se aplica à série de máquinas especificada para o compromisso:

            • Uso geral para séries de máquinas de uso geral
            • Computação otimizada para séries de máquinas otimizadas para computação
            • Memória otimizada para séries de máquinas com otimização de memória
            • GPUs para séries de máquinas otimizadas para aceleradores
          2. Na tabela que possui a coluna Série , selecione a mesma série de máquinas que você especificou para o compromisso.

          3. No campo Tipo de máquina , especifique um tipo de máquina predefinido ou personalizado de uma das seguintes maneiras:

            1. Para escolher um tipo de máquina predefinido, selecione Predefinir e selecione o tipo de máquina desejado.
            2. Para escolher um tipo de máquina personalizado, selecione Personalizado e especifique os núcleos e a memória desejados.
          4. Para especificar uma plataforma mínima de CPU, GPUs ou ambas, expanda o menu Plataforma de CPU e GPU e faça o seguinte:

            1. Opcional: Para especificar uma plataforma mínima de CPU, na lista Plataforma de CPU , selecione uma opção.
            2. Opcional: para reservar 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.

          5. Para reservar discos SSD locais, faça o seguinte:

            1. No campo Número de discos , selecione o número de discos SSD locais desejados para cada VM.
            2. No campo Tipo de interface , selecione a interface para os discos SSD locais.
    8. Para finalizar a especificação das propriedades desta reserva, clique em Concluído .

  12. Para finalizar a compra do seu compromisso com as reservas anexas, faça o seguinte:

    1. Clique em Comprar .
    2. Na caixa de diálogo Comprar um desconto por uso contínuo , se você concordar com os termos específicos do serviço , clique em Comprar novamente.

gcloud

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

Dependendo se você deseja anexar uma única reserva ou várias reservas, 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 \
        --custom-end-time=CUSTOM_END_DATE \
        --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 diversas reservas ao seu compromisso, defina as propriedades da reserva usando um arquivo YAML e, em seguida, especifique esse arquivo YAML no comando usado para adquirir seu compromisso. Opcionalmente, você também pode usar esta abordagem de arquivo YAML para criar e anexar uma única reserva ao seu 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 que você deseja para cada reserva anexada. Por exemplo, para especificar a configuração de uma reserva compartilhada compartilhada com dois projetos que especificam GPUs, dois discos locais de SSD e uma plataforma mínima de CPU, inclua o seguinte texto em seu 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 para várias reservas, repita essas propriedades para cada reserva que você deseja criar. Você pode anexar qualquer número de reservas existentes que deseja ao seu compromisso.

    2. Execute os gcloud compute commitments create comando e inclua o sinalizador --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 onde o compromisso está localizado.
  • PROJECT_ID : o ID do projeto em que você deseja comprar o compromisso com as reservas anexadas.
  • DURATION : o termo duração do compromisso, 12-month ou 36-month .
  • CUSTOM_END_DATE : Opcional. Uma data de término personalizada para o seu termo, que deve ser formatada como YYYY-MM-DD . Por exemplo, para especificar uma data de término personalizada de 20 de abril de 2024, formate-o como 2024-04-20 .
  • COMMITMENT_TYPE : o tipo de compromisso. Os seguintes tipos de compromisso fornecem opções para GPUs, discos SSD locais ou ambos:

    • accelerator-optimized para recursos de máquina A2
    • accelerator-optimized-a3 para A3 Edge e Recursos de Tipo de Máquina A3 A3
    • accelerator-optimized-a3-mega para recursos de mega máquina A3
    • compute-optimized para recursos de tipo 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 de tipo de máquina N1 para N1 Recursos
    • Recursos de tipo de máquina general-purpose-n2 para N2
    • general-purpose-n2d para recursos da máquina N2D
    • graphics-optimized para recursos do tipo de máquina G2
    • memory-optimized-m3 para recursos de máquina M3
    • storage-optimized-z3 para recursos de máquina Z3

  • COMMITTED_VCPUS : o número de VCPUs que você deseja em seu compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY : a quantidade, em MB ou GB, de memória que você deseja em seu compromisso. Por exemplo, 10GB ou 10240MB . Se você não especificar uma unidade, o Compute Engine usa GB como unidade. Você pode comprar memória em incrementos de 0,25 GB.

  • COMMITTED_LOCAL_SSD : a quantidade, em GB, do armazenamento local do SSD que você deseja em seu compromisso. Cada disco SSD local é de 375 GB.

  • COMMITTED_ACCELERATOR_COUNT : o número de GPUs que você deseja em seu compromisso.

  • COMMITTED_ACCELERATOR_TYPE : o tipo GPU que você deseja em seu 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 for uma reserva especificamente direcionada; true ou false . Para obter mais informações sobre reservas especificamente direcionadas, consulte como as reservas funcionam .
  • NUMBER_OF_RESERVED_VMS : o número de VMs que você deseja reservar na reserva anexada.
  • RESERVED_MACHINE_TYPE : o tipo de máquina que você deseja para as VMs na sua 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 uma lista completa de restrições, leia as especificações para os tipos de máquina personalizados.

      Substitua o seguinte:

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

  • RESERVED_ACCELERATOR_TYPE : o tipo de acelerador que você deseja adicionar na reserva anexada.

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

  • OWNER_PROJECT_ID : O ID do projeto, onde você deseja comprar o compromisso com a reserva anexada. Especifique este campo se você deseja compartilhar sua reserva anexada em vários projetos de consumidores.

  • MINIMUM_CPU_PLATFORM : A plataforma mínima da CPU que você deseja especificar para a reserva anexada.

  • SHARE_SETTING : o tipo de compartilhamento para a reserva anexada. Especifique esse campo com o valor como projects se você deseja compartilhar sua reserva anexada em vários projetos de consumidores. Exclua este campo se desejar criar uma reserva de projeto único.

  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2 : os IDs do projeto dos projetos que podem compartilhar esta reserva, por exemplo, project-1 e project-2 . Você pode incluir até 100 projetos de consumidores. Esses projetos devem estar na mesma organização que o projeto do proprietário. Não inclua o ID do projeto em que você cria esta reserva, pois esse projeto pode consumir esta reserva por padrão. Exclua esses campos se desejar criar uma reserva de projeto único.

O mecanismo de computação cria o compromisso e as reservas anexadas apenas se houver recursos suficientes do tipo de máquina especificado na zona de destino e cota suficientes no momento da sua solicitação. Se sua compra foi bem -sucedida, você verá uma mensagem de sucesso semelhante ao seguinte:

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

Exemplos para compra de compromissos, criando novas reservas para anexar

Os seguintes cenários e comandos de exemplo mostram como você pode comprar um compromisso com GPUs, discos SSD locais ou ambos criando novas reservas para atribuir a esse compromisso.

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

Suponha que você queira comprar um commitment-01 na região us-central1 , que inclui 4 GPUs NVIDIA V100. Você deseja criar uma nova reservation-01 como a reserva anexada para essas GPUs. Suponha que você também queira especificar o Compute Engine para usar as GPUs reservadas em 2 VMs n1-standard-32 na zona us-central1-a . Para comprar este exemplo de compromisso com sua 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: Compre um compromisso para as GPUs sem se comprometer com VCPUs ou memória

Para se comprometer e reservar as GPUs e os discos SSD locais sem se comprometer com o VCPUS ou a memória, especifique 0 como o valor para quantidades de VCPU e memória. Por exemplo, suponha que você queira comprar um commitment-02 para uma única GPU NVIDIA P4 na região us-west2 . Você também deseja criar uma nova reserva como reserva anexada e especificar o mecanismo de computação para usar a GPU reservada em uma VM n1-standard-2 na zona us-west2-b . Para comprar este exemplo de compromisso com sua 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: Compre um compromisso para GPUs e discos SSD locais, anexando várias novas reservas

Suponha que você queira comprar um commitment-03 para 1 NVIDIA V100 GPU e 2 discos locais SSD na região us-central1 . Você também deseja criar e anexar duas reservas na zona us-central1-a . Na primeira reserva, res-01 , você deseja reservar 1 VM n1-standard-2 com 1 GPU. Você deseja fazer do res-01 uma reserva direcionada, o que significa que você deve direcionar especificamente essa reserva pelo nome para usar suas VMs reservadas. Na segunda reserva, res-02 , você deseja reservar 1 VM n1-standard-8 com 2 tipos de discos SSD locais anexados.

Para comprar este exemplo de compromisso 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 suas reservas anexadas, execute o seguinte comando. 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

DESCANSAR

Para criar suas reservas anexadas ao comprar seu compromisso, faça uma solicitação POST ao método da regionCommitments.insert . Em sua solicitação, inclua o campo reservations para definir uma lista de todas as novas reservas que você deseja criar e anexar. Você pode anexar qualquer número de reservas existentes que deseja ao seu 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 compartilhada com dois projetos que especificam as GPUs, dois discos SSD locais e uma plataforma mínima da 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"
      }
    ],
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
    "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 sua 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"
      }
    ],
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
    "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 onde o compromisso está localizado.
  • PROJECT_ID : o ID do projeto em que você deseja comprar o compromisso com as reservas anexadas.
  • DURATION : o termo duração do compromisso, TWELVE_MONTH ou THIRTY_SIX_MONTH .
  • COMMITMENT_TYPE : o tipo de compromisso. Os seguintes tipos de compromisso fornecem opções para GPUs, discos SSD locais ou ambos:

    • ACCELERATOR_OPTIMIZED for A2 Tipo de Máquina Recursos
    • ACCELERATOR_OPTIMIZED_A3 para A3 Edge e A3 High Type Recursos
    • ACCELERATOR_OPTIMIZED_A3_MEGA para recursos do tipo A3 Mega Machine
    • COMPUTE_OPTIMIZED for C2 Tipo de Máquina Recursos
    • COMPUTE_OPTIMIZED_C2D para recursos do tipo de máquina C2D
    • COMPUTE_OPTIMIZED_C3 para recursos de máquina C3
    • COMPUTE_OPTIMIZED_C3D para recursos de máquina C3D
    • GENERAL_PURPOSE para Recursos de Tipo de Máquina N1
    • GENERAL_PURPOSE_N2 para recursos de máquina N2
    • GENERAL_PURPOSE_N2D para recursos da máquina N2D
    • GRAPHICS_OPTIMIZED for G2 Máquina do tipo Recursos
    • MEMORY_OPTIMIZED_M3 para M3 Tipo de Máquina Recursos
    • STORAGE_OPTIMIZED_Z3 para recursos do tipo de máquina Z3

  • COMMITTED_VCPUS : o número de VCPUs que você deseja em seu compromisso. O número deve ser um número inteiro positivo.

  • COMMITTED_MEMORY : a quantidade, em MB, de memória que você deseja em seu compromisso. Por exemplo, 10240MB . Você pode comprar memória em incrementos de 256 MB.

  • COMMITTED_LOCAL_SSD : a quantidade, em GB, do armazenamento local do SSD que você deseja em seu compromisso. Cada disco SSD local é de 375 GB.

  • COMMITTED_ACCELERATOR_COUNT : o número de GPUs que você deseja em seu compromisso.

  • COMMITTED_ACCELERATOR_TYPE : o tipo GPU que você deseja em seu compromisso.

  • CUSTOM_END_DATE : Opcional. Uma data de término personalizada para o seu termo, que deve ser formatada como YYYY-MM-DD . Por exemplo, para especificar uma data de término personalizada de 20 de abril de 2024, formate-o como 2024-04-20 .

  • END_TIME : 12 da manhã e canadense Pacific Hourn (UTC-8 ou UTC-7), como um deslocamento do tempo universal coordenado (UTC) . Especifique esse valor apenas se você especificou uma data de término personalizada para o seu compromisso. Especifique um dos seguintes valores:

    • Durante o horário de verão: 07:00:00
    • Durante outros momentos: 08:00:00

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 for uma reserva especificamente direcionada; true ou false . Para obter mais informações sobre reservas especificamente direcionadas, consulte como as reservas funcionam .
  • NUMBER_OF_RESERVED_VMS : o número de VMs que você deseja reservar na reserva anexada.
  • RESERVED_MACHINE_TYPE : o tipo de máquina que você deseja para as VMs na sua 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 uma lista completa de restrições, leia as especificações para os tipos de máquina personalizados.

      Substitua o seguinte:

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

  • RESERVED_ACCELERATOR_TYPE : o tipo de acelerador que você deseja adicionar na reserva anexada.

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

  • MINIMUM_CPU_PLATFORM : A plataforma mínima da CPU que você deseja especificar para a reserva anexada.

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

  • SHARE_SETTING : o tipo de compartilhamento para a reserva anexada. Especifique esse campo com o valor como SPECIFIC_PROJECTS se você deseja compartilhar sua reserva anexada em vários projetos de consumidores. Exclua este campo se desejar criar uma reserva de projeto único.

  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2 : os IDs do projeto dos projetos que podem compartilhar essa reserva; Por exemplo, project-1 e project-2 . Você pode incluir até 100 projetos de consumidores. Esses projetos devem estar na mesma organização que o projeto do proprietário. Não inclua o ID do projeto em que você cria esta reserva, pois esse projeto pode consumir esta reserva por padrão. Exclua esses campos se desejar criar uma reserva de projeto único.

O mecanismo de computação cria o compromisso e as reservas anexadas apenas se houver recursos suficientes do tipo de máquina especificado na zona de destino e cota suficientes no momento da sua solicitação. Se sua compra foi bem -sucedida, o Compute Engine retornará um status 200 para sua solicitação de API REST.

Exemplos para compra de compromissos, criando novas reservas para anexar

Os seguintes cenários e comandos de exemplo mostram como você pode comprar um compromisso com GPUs, discos SSD locais ou ambos criando novas reservas para atribuir a esse compromisso.

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

Suponha que você queira comprar um commitment-01 na região us-central1 , que inclui 4 GPUs NVIDIA V100. Você deseja criar uma nova 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 2 VMs n1-standard-8 na zona us-central1-a . Para comprar este exemplo de compromisso com sua 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: Compre um compromisso para as GPUs sem se comprometer com VCPUs ou memória

Para se comprometer e reservar as GPUs e os discos SSD locais sem se comprometer com o VCPUS ou a memória, especifique 0 como o valor para quantidades de VCPU e memória. Por exemplo, suponha que você queira comprar um commitment-02 para uma única GPU NVIDIA P4 na região us-west2 . Você também deseja criar uma nova reserva como reserva anexada e especificar o mecanismo de computação para usar a GPU reservada em uma VM n1-standard-2 na zona us-west2-b . Para comprar este exemplo de compromisso com sua 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: Compre um compromisso para GPUs e discos SSD locais, anexando várias novas reservas

Suponha que você queira comprar um commitment-03 para 1 NVIDIA V100 GPU e 2 discos locais SSD na região us-central1 . Você também deseja criar e anexar duas reservas na zona us-central1-a . Na primeira reserva, res-01 , você deseja reservar 1 VM n1-standard-2 com 1 GPU. Você deseja fazer do res-01 uma reserva direcionada, o que significa que você deve direcionar especificamente essa reserva pelo nome para usar suas VMs reservadas. Na segunda reserva, res-02 , você deseja reservar 1 VM n1-standard-8 com 2 tipos de discos SSD locais anexados. Para comprar este exemplo de compromisso 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"
    }
  ]
}

Substitua as reservas anexadas a compromissos

Substitua a reserva anexada existente do seu compromisso por uma nova reserva, se desejar modificar os tipos e números de VMs que usam seus recursos comprometidos.

A reserva de substituição sempre será uma reserva recém -criada. Para substituir uma reserva anexada, você deve especificar as propriedades da reserva que deseja usar como substituto. O mecanismo de computação cria automaticamente uma nova reserva com essas propriedades e a usa para substituir sua reserva anexada. Você não pode usar uma reserva existente para substituir sua reserva em anexo.

Mudanças permitidas

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

  • Você pode reservar VMs de um tipo de máquina diferente. No entanto, você ainda deve reservar VMs da mesma série de máquinas para continuar recebendo CUDs para seus recursos reservados.
  • Você pode alterar o número de VMs que deseja reservar.
  • Você pode alterar a quantidade de GPUs e discos SSD locais anexados por VM, desde que a quantidade total de GPUs reservadas e discos locais SSD permaneça a mesma.
  • Você pode especificar suas reservas substituídas para serem um projeto único (também chamado local no Google Cloud Console) ou reservas compartilhadas.

Requisitos

Quando você substitui a reserva anexa do seu compromisso por uma nova, sua solicitação deve atender a todos os requisitos a seguir:

  • Você pode substituir apenas uma reserva anexada por vez por exatamente uma nova reserva anexada. Para substituir uma reserva anexada, remova simultaneamente uma reserva anexada existente, definindo sua contagem de VM como 0 e defina uma nova reserva anexada que você deseja substituí -la.
  • A nova reserva deve existir no mesmo projeto que o compromisso.
  • A nova reserva deve estar localizada na mesma zona da reserva removida.
  • A quantidade e os tipos de GPUs especificados na nova reserva devem corresponder à reserva removida.
  • Os números e tipos de discos SSD locais especificados na nova reserva devem corresponder à reserva removida.
  • Você só pode alterar até 100 VMs por solicitação. Para fazer uma mudança que envolva mais de 100 VMs, divida a mudança em várias solicitações menores ou entre em contato Google Cloud Apoiar.

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

Se sua solicitação para substituir uma reserva anexada falhar, a reserva anexada e os recursos reservados existentes permanecerão não afetados. Para preservar sua capacidade, aguarde para fazer quaisquer alterações correspondentes nas suas VMs até que sua solicitação para substituir uma reserva seja bem -sucedida.

Etapas para substituir uma reserva anexada

Você pode substituir as reservas de um compromisso usando o Google Cloud CLI ou o REST.

gcloud

Para substituir as 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:

    • A reserva atual que você deseja substituir.

      Para recuperar os detalhes desta reserva, consulte os detalhes de uma reserva .

    • A nova reserva de substituição.

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

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

    Reserva atual

    Para a reserva atual, todas as propriedades a seguir devem ser exatamente as mesmas de quando você viu a reserva. Omita os campos para quaisquer propriedades que a reserva atual ainda não tenha.

    • CURRENT_RESERVATION_NAME : o nome da reserva atual anexada.
    • CURRENT_RESERVATION_ZONE : a zona da reserva atual anexada.
    • 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 atual anexada.
    • CURRENT_RESERVATION_ACCELERATOR_TYPE : O tipo de acelerador reservado na reserva atual anexada.
    • CURRENT_RESERVATION_INTERFACE_1 e CURRENT_RESERVATION_INTERFACE_2 : o tipo de interface que o disco SSD local para cada uso de VM reservado na reserva anexada atual. As opções válidas são: scsi e nvme . Cada disco SSD local é de 375 GB. Repita o parâmetro local_ssd para todos os discos SSD locais reservados.
    • CURRENT_RESERVATION_PROJECT_ID : o ID do projeto do projeto atual que tem o compromisso e a reserva anexada. Especifique este campo se a sua reserva anexada atual for compartilhada em vários projetos de consumidores.
    • CURRENT_RESERVATION_SHARE_SETTING : o tipo de compartilhamento para a reserva atual. Especifique esse campo com o valor como projects se sua reserva atual anexada for compartilhada em vários projetos de consumidores.
    • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 e CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2 : os IDs do projeto dos projetos com os quais você compartilha a reserva atual, por exemplo, project-1 e project-2 .

    Reserva de substituição

    Para a reserva de substituição, defina as seguintes propriedades conforme necessário. Certifique -se de atender a todos os requisitos ao especificar essas propriedades. Omita quaisquer campos adicionais que você não deseja 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ê deseja reservar na nova reserva de reposição.
    • REPLACEMENT_RESERVATION_MACHINE_TYPE : O tipo de máquina que você deseja para as VMs em sua 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 uma lista completa de restrições, leia as especificações para os tipos de máquina personalizados.

      Substitua o seguinte:

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

    • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE : o tipo de acelerador que você deseja adicionar na reserva de reposição.

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

    • REPLACEMENT_RESERVATION_PROJECT_ID : o ID do projeto do projeto atual que tem o compromisso e a reserva anexada. Especifique este campo se você deseja compartilhar sua reserva de reposição em vários projetos de consumidores.

    • REPLACEMENT_RESERVATION_SHARE_SETTING : O tipo de compartilhamento para a reserva de reposição. Especifique esse campo com o valor como projects , se você deseja compartilhar sua reserva de reposição em vários projetos de consumidores.

    • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 e REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2 : os IDs do projeto dos projetos que podem compartilhar esta reserva, por exemplo, project-1,project-2 . Você pode incluir até 100 projetos de consumidores. Esses projetos devem estar na mesma organização que o projeto do proprietário. Não inclua o REPLACEMENT_RESERVATION_PROJECT_ID , que já tem permissão para consumir esta reserva por padrão.

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

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

    Substitua o seguinte:

    • 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 onde o compromisso está localizado.
    • YAML_FILE : O caminho para o arquivo YAML que contém a configuração das reservas de corrente e substituição.

Exemplo para substituir uma reserva que é anexada a um compromisso

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

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 foi comprado usando o seguinte 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 exemplo, suponha que, quando este comando foi executado, one-reservation.yaml foi 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

Esse my-commitment-with-reservations e a reserva Anexada res-1 os seguintes recursos comprometidos e reservados:

Tipo de recurso Recursos em compromisso
( my-commitment-with-reservations )
Recursos na reserva atual anexada
( res-1 )
VCPUs e memória 16 vcpus e 60 GB 16 vcpus e 60 GB
(4 VMs reservadas n1-standard-4 ) *
GPUs 4 GPUS P100 4 GPUS P100
(1 P100 GPU por VM, para 4 VMs) *
Discos SSD locais 3000 GB ou 8 discos SSD locais 3000 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 VMs n1-standard-4 , cada um com 1 GPU P100 e 2 discos locais SSD do tipo de interface scsi . 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 um novo Reserva Anexado res-2 e alterar os recursos reservados para o seguinte:

Tipo de recurso Recursos em compromisso
( my-commitment-with-reservations )
Recursos na reserva atual anexada
( 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 reservadas n1-standard-4 ) *
16 vcpus e 60 GB
(2 VMs n1-standard-8 reservados e compartilhados)
GPUs 4 GPUS P100 4 GPUS P100
(1 P100 GPU por VM, para 4 VMs) *
4 GPUS P100
(2 P100 GPUS por VM, para 2 VMs)
Discos SSD locais 3000 GB ou 8 discos SSD locais 3000 GB ou 8 discos SSD locais
(750 GB ou 2 discos SSD locais por VM, para 4 VMs) *
3000 GB ou 8 discos SSD locais
(1500 GB ou 4 discos SSD locais por VM, para 2 VMs) *

* Especificamente, o exemplo de reserva anexada, res-1 , reserva 4 VMs n1-standard-4 , cada um com 1 GPU P100 e 2 discos locais SSD do tipo de interface scsi . 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 se reserva 2 VMs n1-standard-8 , cada um com 1 GPU P100 e 4 discos locais SSD do tipo scsi . Além disso, res-2 é compartilhado com outros 2 projetos, project-1 e project-2 e de propriedade do 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 pelo 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 que o arquivo 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 o seguinte comando:

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

DESCANSAR

Para substituir as 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 reposiçã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 para as 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 devem ser exatamente as mesmas de quando você viu a reserva. Omita os campos para quaisquer propriedades que a reserva atual ainda não especifique.

  • CURRENT_RESERVATION_NAME : o nome da reserva atual anexada.
  • CURRENT_RESERVATION_ZONE : a zona da reserva atual anexada.
  • 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 atual anexada.
  • CURRENT_RESERVATION_ACCELERATOR_TYPE : O tipo de acelerador reservado na reserva atual anexada.
  • CURRENT_RESERVATION_INTERFACE_1 e CURRENT_RESERVATION_INTERFACE_2 : o tipo de interface que os discos SSD locais para cada uso de VM reservado na reserva atual anexada. As opções válidas são: scsi e nvme . Cada disco SSD local é de 375 GB. Repita o parâmetro localSsds para todos os discos SSD locais reservados.
  • CURRENT_RESERVATION_SHARE_SETTING : o tipo de compartilhamento para a reserva atual. Especifique esse parâmetro com o valor como projects se sua reserva atual anexada for compartilhada em vários projetos de consumidores.
  • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 e CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2 : os IDs do projeto dos projetos com os quais você compartilha a reserva atual, por exemplo, project-1 e project-2 .

Reserva de substituição

Para a reserva de substituição, defina as seguintes propriedades conforme necessário. Certifique -se de atender a todos os requisitos ao especificar essas propriedades. Omita quaisquer campos adicionais que você não deseja 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ê deseja reservar na nova reserva de reposição.
  • REPLACEMENT_RESERVATION_MACHINE_TYPE : O tipo de máquina que você deseja para as VMs em sua 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 uma lista completa de restrições, leia as especificações para os tipos de máquina personalizados.

    Substitua o seguinte:

    • MACHINE_FAMILY : the family of machine types; for example, specify n2 for N2 VMs.
    • CPUS : the number of vCPUs .
    • MEMORY : the total memory for a reserved VM. Memory must be a multiple of 256 MB and must be supplied in MB; for example, to create an N2 VM with 4 vCPUs and 5 GB of memory, which is 5120 MB, use n2-custom-4-5120 .
  • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS : the number of GPUs you want to add, per VM, in the replacement reservation.

  • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE : the type of accelerator you want to add in the replacement reservation.

  • REPLACEMENT_RESERVATION_INTERFACE_1 and REPLACEMENT_RESERVATION_INTERFACE_2 : the type of interface you want the Local SSD disks for each reserved VM to use. Valid options are: scsi and nvme . Each Local SSD disk is 375 GB. Repeat the localSsds parameter for each Local SSD disks that you want to add. You can specify up to 24 Local SSD disks.

  • REPLACEMENT_RESERVATION_SHARE_SETTING : The type of sharing for the replacement reservation. Specify this parameter with the value as projects if you want to share your replacement reservation across multiple consumer projects.

  • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 and REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2 : the project IDs of the projects that can share this reservation, for example project-1,project-2 . You can include up to 100 consumer projects. These projects must be in the same organization as the owner project. Don't include the PROJECT_ID , which is already allowed to consume this reservation by default.

Example for replacing a reservation that is attached to a commitment

To demonstrate this, this section shows an example commitment with an attached reservation and how to replace the example attached reservation .

Example commitment with an attached reservation

For example, suppose that you want to replace the attached reservation res-1 for the my-commitment-with-reservations commitment, that was purchased by making the following POST request:

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

This my-commitment-with-reservations commitment and the attached reservation res-1 resulted in the following committed and reserved resources:

Resource type Resources in commitment
( my-commitment-with-reservations )
Resources in current attached reservation
( res-1 )
vCPUs and memory 16 vCPUs and 60 GB 16 vCPUs and 60 GB
(4 reserved n1-standard-4 VMs) *
GPUs 4 P100 GPUs 4 P100 GPUs
(1 P100 GPU per VM, for 4 VMs) *
Local SSD disks 3000 GB or 8 Local SSD disks 3000 GB or 8 Local SSD disks
(750 GB or 2 Local SSD disks per VM, for 4 VMs) *

* Specifically, the example attached reservation, res-1 , reserves 4 n1-standard-4 VMs, each with 1 P100 GPU and 2 Local SSD disks of scsi interface type. The n1-standard-4 machine type uses 4 vCPUs and 15 GB for each VM.

Replace the example attached reservation

Suppose you want to replace the attached reservation res-1 for the with a new attached reservation res-2 and change the reserved resources to the following:

Resource type Resources in commitment
( my-commitment-with-reservations )
Resources in current attached reservation
( res-1 )
Resources in replacement attached reservation
( res-2 )
vCPUs and memory 16 vCPUs and 60 GB 16 vCPUs and 60 GB
(4 reserved n1-standard-4 VMs) *
16 vCPUs and 60 GB
(2 reserved and shared n1-standard-8 VMs)
GPUs 4 P100 GPUs 4 P100 GPUs
(1 P100 GPU per VM, for 4 VMs) *
4 P100 GPUs
(2 P100 GPUs per VM, for 2 VMs)
Local SSD disks 3000 GB or 8 Local SSD disks 3000 GB or 8 Local SSD disks
(750 GB or 2 Local SSD disks per VM, for 4 VMs) *
3000 GB or 8 Local SSD disks
(1500 GB or 4 Local SSD disks per VM, for 2 VMs) *

* Specifically, the example attached reservation, res-1 , reserves 4 n1-standard-4 VMs, each with 1 P100 GPU and 2 Local SSD disks of scsi interface type. The n1-standard-4 machine type uses 4 vCPUs and 15 GB for each VM.

Specifically, the replacement attached reservation defines res-2 , which reserves 2 n1-standard-8 VMs, each with 1 P100 GPU and 4 Local SSD disks of scsi interface type. Additionally, res-2 is shared with 2 other projects, project-1 and project-2 and owned by the current project, my-project . The n1-standard-8 machine type uses 8 vCPUs and 30 GB for each VM.

To replace the attached reservation res-1 with res-2 for the my-commitment-with-reservations commitment, make the following POST request by using the regionCommitments.updateReservations method:

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

O que vem a seguir