Combine reservas com descontos de fidelidade

Os descontos de fidelidade (CUDs) oferecem preços significativamente reduzidos para os seus recursos do Compute Engine em troca de contratos de fidelização de 1 ou 3 anos (também conhecidos como compromissos). Compromete-se a uma quantidade mínima de utilização de recursos ou a uma quantidade mínima de gastos e, em troca, recebe CUDs nos custos de utilização de recursos. 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 está reservada para os mesmos, tem de comprar compromissos e criar reservas para esses recursos zonais.

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

Antes de começar

  • Reveja as noções básicas das reservas, juntamente com os respetivos requisitos e restrições. Para mais informações, consulte o artigo Acerca das reservas.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

CUDs para os seus recursos reservados

Recebe CUDs de compromissos ativos para qualquer utilização de recursos elegível nos seus projetos. Se também tiver reservas para reter capacidade para recursos nesse projeto, os CUDs de compromissos ativos também podem aplicar-se a esses recursos reservados. Para que os recursos reservados sejam elegíveis para receber CUDs, aplicam-se os seguintes requisitos:

  • Não está a receber nenhuma outra forma de desconto pela utilização dos seus recursos.
  • As suas VMs têm de estar a consumir as reservas enquanto os compromissos estiverem ativos.
  • No mínimo, as seguintes propriedades têm de corresponder entre os seus compromissos ativos e as reservas que as VMs consomem:

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

Consoante o tipo de recurso, pode receber CUDs para os seus recursos reservados de uma das seguintes formas:

  • vCPUs e memória: para receber DFs para um ou ambos os tipos de recursos, pode comprar compromissos baseados em recursos ou em gastos que incluam os tipos de recursos necessários. Quando as VMs no seu projeto consomem reservas cujas propriedades correspondem a esses compromissos ativos, a utilização destes tipos de recursos torna-se automaticamente elegível para CUDs aplicáveis.

    Apenas para compromissos baseados em recursos, pode ativar a partilha de CUDs. Ao fazê-lo, pode partilhar CUDs de um projeto para cobrir a utilização noutros projetos associados à conta do Cloud Billing desse compromisso.

    Se reservou mais recursos do que se comprometeu a comprar, não recebe CUDs para esses recursos adicionais.

  • GPUs e discos SSD locais: para receber DF para um ou ambos os seguintes tipos de recursos, tem de fazer o seguinte:

    • Compre 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 no seu projeto consomem estas reservas anexadas, começa a receber os DUCs aplicáveis para estes tipos de recursos reservados. Se ativar a partilha de CUDs e anexar uma reserva partilhada, a utilização de outros projetos de consumidor também pode tornar-se elegível para os CUDs partilhados. No entanto, para que a utilização de outros projetos seja elegível, tem de limitar a partilha da sua reserva à conta de faturação do Google Cloud do compromisso.

Anexe reservas a compromissos baseados em recursos

Pode anexar reservas a qualquer compromisso baseado em recursos e garantir que a capacidade é mantida em zonas específicas para os recursos comprometidos que planeia usar. Pode anexar várias reservas a um único compromisso. No entanto, uma reserva só pode ser anexada a um único compromisso. Quando compra um compromisso, pode anexar reservas a esse compromisso de uma das seguintes formas:

  • Usando reservas existentes cujas propriedades correspondem ao compromisso
  • Criar novas reservas correspondentes enquanto compra o seu compromisso

Depois de comprar um compromisso com reservas anexadas, as reservas permanecem ativas enquanto o compromisso estiver ativo. Quando o compromisso expira, o Compute Engine elimina automaticamente todas as reservas anexadas. A eliminação destas reservas não afeta as VMs em execução que estavam a consumir essas reservas. As VMs em execução continuam a ser executadas e continua a ser-lhe cobrado o custo dessas VMs.

Recursos comprometidos que não requerem reservas anexadas

As vCPUs e a memória comprometidas não exigem que anexe reservas correspondentes aos seus compromissos. No entanto, quando compra um compromisso que inclui vCPUs, memória ou ambos, pode continuar a optar por anexar reservas que especifiquem esses recursos. Para saber como comprar compromissos apenas para CPUs virtuais, memória ou ambos, sem anexar reservas, consulte o artigo Comprar compromissos sem reservas anexadas.

Recursos comprometidos que requerem reservas anexadas

As GPUs comprometidas e os discos SSD locais (com exceção dos discos SSD de titânio locais para instâncias C4A, C4D ou Z3) exigem que anexe reservas correspondentes aos seus compromissos. Quando compra um compromisso que inclui quaisquer GPUs, discos SSD locais ou ambos, também tem de reservar esses recursos e anexar essas reservas ao seu compromisso. Pode fazê-lo através de uma única reserva ou de uma combinação de reservas. Quando compra um compromisso deste tipo, também pode incluir vCPUs, memória ou ambos. No entanto, não precisa de reservar essas vCPUs nem memória.

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

Para saber como comprar compromissos para discos SSD locais, consulte o artigo Compre compromissos com reservas anexadas neste documento.

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

Quantidades de recursos permitidas em reservas anexadas

Para CPUs virtuais e memória, pode ter reservas anexadas que especifiquem quantidades de recursos superiores ou inferiores às que está a comprometer-se. Se se comprometer com mais vCPUs ou memória do que reserva, o Compute Engine reserva capacidade apenas para estes recursos reservados. No entanto, pode continuar a usar os recursos comprometidos adicionais, dependendo da respetiva disponibilidade na sua região. Se reservar mais CPUs virtuais ou memória do que se compromete, não recebe DUCs para esses recursos adicionais que reservar.

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

  • Não anexar nenhuma reserva.
  • Anexe reservas que especifiquem qualquer combinação destes 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 quaisquer GPUs, discos SSD locais ou ambos, tem de reservar e anexar todos esses recursos. As reservas anexadas têm de especificar os números e os tipos exatos das GPUs e dos discos SSD locais aos quais se está a comprometer. Consequentemente, também não pode ter nenhum número ou tipo adicional de GPUs ou discos SSD locais nas suas reservas anexadas.

Por exemplo, suponhamos que compra um compromisso de 30 GB de memória e 4 GPUs NVIDIA P100. A reserva anexada (ou a combinação de reservas anexadas) pode especificar qualquer quantidade de vCPUs ou memória, mas tem de ter exatamente 4 GPUs do tipo NVIDIA P100. Neste exemplo, não pode anexar reservas que especifiquem 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

Quando compra um novo compromisso, pode anexar reservas ao seu compromisso de uma das seguintes formas:

Depois de comprar um compromisso, este fica ativo no dia seguinte às 12:00 (hora do Pacífico dos EUA e do Canadá) [UTC-8 ou UTC-7 durante a hora de verão]. Entre o momento da compra do compromisso e o momento da ativação, o estado do compromisso permanece como NOT_YET_ACTIVE (ou como PENDING na consolaGoogle Cloud ). Após a ativação, o estado do seu compromisso muda para ACTIVE. Por exemplo, suponhamos que compra o seu compromisso a 20 de janeiro às 22:00, hora do Pacífico dos EUA e do Canadá (UTC-8 ou UTC-7). O Compute Engine cria o seu compromisso imediatamente com o estado NOT_YET_ACTIVE. No entanto, o seu compromisso entra em vigor ACTIVE apenas a 21 de janeiro às 00:00, hora do Pacífico dos EUA e do Canadá (UTC-8 ou UTC-7).

Requisitos

Antes de comprar um compromisso com reservas anexas, reveja estes requisitos e certifique-se de que o seu compromisso e reservas cumprem os seguintes critérios:

  • Tem de comprar o compromisso e criar as reservas anexas no mesmo projeto e região.
  • Tem de comprar o compromisso e criar as reservas anexas para recursos da mesma série de famílias de máquinas.
  • Tem de desativar a opção de eliminação automática nas reservas anexadas.
  • Se o seu compromisso tiver GPUs, o tipo de GPU especificado na reserva e no compromisso tem de corresponder.
  • Para GPUs e discos SSD locais, o número de recursos reservados de cada tipo de recurso tem de corresponder exatamente ao número de recursos comprometidos para esse tipo de recurso. No entanto, este requisito não se aplica quando compra um compromisso para discos SSD de titânio locais para utilização com tipos de máquinas C4A, C4D ou Z3.

    Por exemplo, se quiser comprar um compromisso para 4 GPUs V100 e 2 discos SSD locais, as reservas anexadas ao compromisso têm de especificar um total de 4 GPUs V100 e 2 SSDs locais. A quantidade de vCPU e memória que reserva pode ser superior ou inferior à que se compromete. No entanto, se comprar um compromisso de 4 vCPUs C4A e 2 discos SSD de titânio locais, não tem de anexar nenhuma reserva ao compromisso.

  • Para GPUs, compromissos de compra para os tipos de GPUs específicos que pretende usar. Por exemplo, pode comprar compromissos para GPUs NVIDIA P100 ou NVIDIA V100, mas não pode usar um compromisso que foi comprado para GPUs NVIDIA P100 para cobrir GPUs NVIDIA V100.

  • Se a reserva anexada for uma reserva partilhada e quiser receber os CUDs aplicáveis quando consumir essa reserva fora do projeto do compromisso, tem de fazer o seguinte:

    • Partilhe as suas reservas apenas entre projetos que pertençam à mesma conta de faturação do Google Cloud que o compromisso.
    • Ative a partilha de CUDs para essa conta de faturação do Google Cloud.

Anexe reservas existentes

Pode anexar reservas existentes enquanto compra o compromisso através da consola, da Google Cloud CLI ou da API REST. Google Cloud

Consola

Antes de comprar um compromisso através da Google Cloud consola, selecione o projeto que quer usar para comprar o compromisso. Se a partilha de CUDs estiver ativada para uma conta do Cloud Billing, pode comprar o compromisso através de qualquer projeto dessa conta do Cloud Billing. Depois de selecionar o projeto, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Descontos por utilização comprometida.

    Aceda a Descontos de fidelidade

  2. Para comprar um compromisso, clique em Comprar compromisso. A página Comprar um desconto por utilização garantida é aberta e apresenta o separador Hardware.

  3. No campo Nome, introduza um nome para o compromisso.

  4. No campo Região, selecione a região onde quer comprometer-se com recursos do Compute Engine.

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

    • Para os tipos de máquinas A2, selecione A2 otimizado para acelerador
    • Para os tipos de máquinas A3 Edge e A3 High, selecione A3 otimizado para aceleradores
    • Para os tipos de máquinas A3 Mega, selecione A3 Mega otimizado para aceleradores
    • Para os tipos de máquinas C2, selecione C2 otimizada para computação
    • Para tipos de máquinas C2D, selecione C2D otimizada para computação
    • Para os tipos de máquinas C3, selecione Utilização geral C3
    • Para os tipos de máquinas C3D, selecione C3D de uso geral
    • Para os tipos de máquinas C4, selecione C4 de utilização geral
    • Para os tipos de máquinas C4A, selecione C4A de utilização geral
    • Para tipos de máquinas C4D, selecione C4D de utilização geral
    • Para tipos de máquinas N1, selecione N1 de utilização geral
    • Para os tipos de máquinas N2, selecione N2 de utilização geral
    • Para os tipos de máquinas N2D, selecione N2D de utilização geral
    • Para tipos de máquinas G2, selecione G2 otimizado para gráficos
    • Para os tipos de máquinas M1, selecione M1/M2 otimizado para memória
    • Para os tipos de máquinas M3, selecione M3 otimizado para memória
    • Para os tipos de máquinas Z3, selecione Z3 otimizado para armazenamento

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

    1. Para especificar o plano do seu compromisso, selecione 1 ano ou 3 anos. Esta definição determina a duração predefinida do compromisso.
    2. Opcional. Para especificar uma duração personalizada para o seu compromisso, clique no botão Prolongar data de fim e, de seguida, no campo Data, especifique uma data de fim personalizada. Para mais informações, consulte o artigo Prolongue a duração dos compromissos.

  7. No campo Núcleos, introduza o número de CPUs virtuais que quer comprometer-se a comprar.

  8. No campo Memória, introduza a quantidade de memória, em GB, que quer comprometer-se a comprar.

    Só pode especificar a memória em incrementos de 0,25 GB. Para especificar um valor de memória personalizado para o seu compromisso, use a CLI gcloud ou a API REST em alternativa.

  9. Para confirmar as GPUs, na secção GPUs, clique em Adicionar GPU e, de seguida, faça o seguinte:

    1. No campo Tipo de GPU, selecione o tipo de GPU.
    2. No campo Número de GPUs, introduza o número de GPUs.
    3. Opcional: se o modelo de GPU suportar estações de trabalho virtuais (vWS) NVIDIA RTX para cargas de trabalho de gráficos e planeia executar cargas de trabalho com utilização intensiva de gráficos, selecione a caixa de verificação Ativar estação de trabalho virtual (NVIDIA GRID).
  10. Para confirmar os discos SSD locais, na secção SSDs locais, clique em Adicionar SSD e, de seguida, 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.

    A Google Cloud consola apresenta uma lista de todas as reservas no 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 ver reservas com propriedades específicas, no menu Filtro, adicione ou remova filtros para as propriedades que quer.
    2. Selecione todas as reservas que quer anexar ao compromisso.
  12. Para concluir a compra do compromisso com as reservas anexadas, faça o seguinte:

    1. Clique em Comprar.
    2. Na caixa de diálogo Comprar um desconto por utilização garantida, se concordar com os termos específicos do serviço, clique novamente em Comprar.

gcloud

Para comprar um compromisso anexando reservas existentes, execute o comando gcloud compute commitments create. No comando, inclua a flag --existing-reservation para especificar uma reserva existente que quer anexar ao seu compromisso. Inclua uma nova instância desta flag para cada reserva existente que quer anexar. Pode anexar qualquer número de reservas existentes ao seu compromisso.

Por exemplo, para comprar um compromisso anexando-lhe duas reservas, 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 quer comprar o compromisso com as reservas anexadas.
  • DURATION: a duração do compromisso, que pode ser 12-month ou 36-month.
  • CUSTOM_END_DATE: opcional. Uma data de fim personalizada para o seu período de vigência, que tem de ser formatada como YYYY-MM-DD. Por exemplo, para especificar uma data de fim personalizada de 20 de abril de 2024, formate-a como 2024-04-20.
  • COMMITMENT_TYPE: o tipo de compromisso. Os seguintes tipos de compromissos oferecem opções para GPUs, discos SSD locais ou ambos:

    • Para tipos de máquinas A2, use accelerator-optimized
    • Para os tipos de máquinas A3 Edge e A3 High, use accelerator-optimized-a3
    • Para os tipos de máquinas A3 Mega, use accelerator-optimized-a3-mega
    • Para tipos de máquinas C2, use compute-optimized
    • Para tipos de máquinas C2D, use compute-optimized-c2d
    • Para os tipos de máquinas C3, use compute-optimized-c3
    • Para tipos de máquinas C3D, use compute-optimized-c3d
    • Para tipos de máquinas N1, use general-purpose
    • Para os tipos de máquinas C4, use general-purpose-c4
    • Para os tipos de máquinas C4A, use general-purpose-c4a
    • Para tipos de máquinas C4D, use general-purpose-c4d
    • Para tipos de máquinas N2, use general-purpose-n2
    • Para tipos de máquinas N2D, use general-purpose-n2d
    • Para tipos de máquinas G2, use graphics-optimized
    • Para tipos de máquinas M1, use memory-optimized
    • Para tipos de máquinas M3, use memory-optimized-m3
    • Para tipos de máquinas Z3, use storage-optimized-z3

  • COMMITTED_VCPUS: o número de vCPUs que quer no seu compromisso. O número tem de ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB ou GB, de memória que quer no seu compromisso. Por exemplo, 10240MB ou 10GB. Se não especificar uma unidade, o Compute Engine usa GB como unidade.

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

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

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

  • RESERVATION_NAME_1 e RESERVATION_NAME_2: os nomes das reservas existentes que quer anexar ao compromisso.

  • RESERVATION_ZONE_1 e RESERVATION_ZONE_2: as zonas das reservas existentes que quer anexar ao compromisso.

Exemplo: compre um compromisso associando reservas existentes

Suponha que tem duas reservas res-01 e res-02 nas zonas us-central1-a e us-central1-b do projeto myproject. Suponhamos que estas reservas têm uma capacidade combinada de 4 GPUs NVIDIA P100 e 4 discos SSD locais. Para comprar um novo compromisso na região us-central1 deste projeto para estas GPUs e discos SSD locais e usar estas reservas existentes como reservas anexadas, execute o seguinte comando. Tenha em atenção 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
    

REST

Para comprar um compromisso anexando reservas existentes, faça um POST pedido 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 quer anexar ao seu compromisso. 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 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 seguintes tipos de compromissos oferecem opções para GPUs, discos SSD locais ou ambos:

    • Para tipos de máquinas A2, use ACCELERATOR_OPTIMIZED
    • Para os tipos de máquinas A3 Edge e A3 High, use ACCELERATOR_OPTIMIZED_A3
    • Para os tipos de máquinas A3 Mega, use ACCELERATOR_OPTIMIZED_A3_MEGA
    • Para tipos de máquinas C2, use COMPUTE_OPTIMIZED
    • Para tipos de máquinas C2D, use COMPUTE_OPTIMIZED_C2D
    • Para os tipos de máquinas C3, use COMPUTE_OPTIMIZED_C3
    • Para tipos de máquinas C3D, use COMPUTE_OPTIMIZED_C3D
    • Para tipos de máquinas N1, use GENERAL_PURPOSE
    • Para os tipos de máquinas C4, use GENERAL_PURPOSE_C4
    • Para os tipos de máquinas C4A, use GENERAL_PURPOSE_C4A
    • Para tipos de máquinas C4D, use GENERAL_PURPOSE_C4D
    • Para tipos de máquinas N2, use GENERAL_PURPOSE_N2
    • Para tipos de máquinas N2D, use GENERAL_PURPOSE_N2D
    • Para tipos de máquinas G2, use GRAPHICS_OPTIMIZED
    • Para tipos de máquinas M1, use MEMORY_OPTIMIZED
    • Para tipos de máquinas M3, use MEMORY_OPTIMIZED_M3
    • Para tipos de máquinas Z3, use STORAGE_OPTIMIZED_Z3

  • COMMITTED_VCPUS: o número de vCPUs que quer no seu compromisso. O número tem de ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB, de memória que quer no seu compromisso. Por exemplo, 10240MB.

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

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

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

  • CUSTOM_END_DATE: opcional. Uma data de fim personalizada para o seu período de vigência, que tem de estar formatada como YYYY-MM-DD. Por exemplo, para especificar uma data de fim personalizada de 20 de abril de 2024, formate-a como 2024-04-20.

  • END_TIME: 00:00 (hora do Pacífico dos EUA e do Canadá) (UTC-8 ou UTC-7), como um desvio do Tempo Universal Coordenado (UTC). Especifique este valor apenas se tiver especificado uma data de fim personalizada para o seu compromisso. Especifique um dos seguintes valores:

    • Durante a mudança da hora: 07:00:00
    • Durante outros horários: 08:00:00
  • RESERVATION_URLs: uma lista separada por vírgulas de URLs das reservas existentes que 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: compre um compromisso associando reservas existentes

Suponha que tem duas reservas res-01 e res-02 nas zonas us-central1-a e us-central1-b do projeto myproject. Suponhamos que estas reservas têm uma capacidade combinada de 4 GPUs NVIDIA P100 e 4 discos SSD locais. Para comprar um novo compromisso na região us-central1 deste projeto para estas GPUs e discos SSD locais e para usar estas reservas existentes como reservas anexadas, faça o seguinte pedido POST. Tenha em atenção 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

Pode criar as suas reservas anexadas enquanto compra o compromisso através da consola, da Google Cloud CLI ou da API REST. Google Cloud

Consola

Antes de comprar um compromisso através da Google Cloud consola, selecione o projeto que quer usar para comprar o compromisso. Se a partilha de CUDs estiver ativada para uma conta do Cloud Billing, pode comprar o compromisso através de qualquer projeto dessa conta do Cloud Billing. Depois de selecionar o projeto, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Descontos por utilização comprometida.

    Aceda a Descontos de fidelidade

  2. Para comprar um compromisso, clique em Comprar compromisso. A página Comprar um desconto por utilização garantida é aberta e apresenta o separador Hardware.

  3. No campo Nome, introduza um nome para o compromisso.

  4. No campo Região, selecione a região onde quer comprometer-se com recursos do Compute Engine.

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

    • Para os tipos de máquinas A2, selecione A2 otimizado para acelerador
    • Para os tipos de máquinas A3 Edge e A3 High, selecione A3 otimizado para aceleradores
    • Para os tipos de máquinas A3 Mega, selecione A3 Mega otimizado para aceleradores
    • Para os tipos de máquinas C2, selecione C2 otimizada para computação
    • Para tipos de máquinas C2D, selecione C2D otimizada para computação
    • Para os tipos de máquinas C3, selecione Utilização geral C3
    • Para os tipos de máquinas C3D, selecione C3D de uso geral
    • Para os tipos de máquinas C4, selecione C4 de utilização geral
    • Para os tipos de máquinas C4A, selecione C4A de utilização geral
    • Para tipos de máquinas C4D, selecione C4D de utilização geral
    • Para tipos de máquinas N1, selecione N1 de utilização geral
    • Para os tipos de máquinas N2, selecione N2 de utilização geral
    • Para os tipos de máquinas N2D, selecione N2D de utilização geral
    • Para tipos de máquinas G2, selecione G2 otimizado para gráficos
    • Para os tipos de máquinas M1, selecione M1/M2 otimizado para memória
    • Para os tipos de máquinas M3, selecione M3 otimizado para memória
    • Para os tipos de máquinas Z3, selecione Z3 otimizado para armazenamento

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

  7. No campo Núcleos, introduza o número de CPUs virtuais que quer comprometer-se a usar.

  8. No campo Memória, introduza a quantidade de memória, em GB, que quer confirmar.

  9. Para confirmar as GPUs, na secção GPUs, clique em Adicionar GPU e, de seguida, faça o seguinte:

    1. No campo Tipo de GPU, selecione o tipo de GPU.
    2. No campo Número de GPUs, introduza o número de GPUs.
    3. Opcional: se o modelo de GPU suportar estações de trabalho virtuais (vWS) NVIDIA RTX para cargas de trabalho de gráficos e planeia executar cargas de trabalho com utilização intensiva de gráficos, selecione a caixa de verificação Ativar estação de trabalho virtual (NVIDIA GRID).
  10. Para confirmar os discos SSD locais, na secção SSDs locais, clique em Adicionar SSD e, de seguida, 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, de seguida, faça o seguinte. Repita este passo para cada nova reserva que quer criar e anexar.

    1. Clique em Adicionar uma reserva. É apresentada a secção Nova reserva.
    2. No campo Nome, introduza um nome para a reserva anexada.
    3. No campo Região, selecione a mesma região do seu compromisso.
    4. No campo Zona, selecione a zona onde quer reservar os seus recursos.
    5. Na secção Tipo de partilha, especifique como quer partilhar esta reserva de uma das seguintes formas:

      • Para criar uma reserva de projeto único, selecione Local.
      • Para criar uma reserva partilhada com vários projetos, selecione Partilhada. Em seguida, para especificar os projetos com os quais quer partilhar esta reserva, clique em Adicionar projetos e, de seguida, selecione os projetos que quer da organização do projeto atual.
    6. No campo Usar com instância de VM, selecione como quer que as VMs usem a sua reserva de uma das seguintes formas:

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

      1. No campo Número de instâncias de VM, introduza o número de instâncias de VM que quer reservar.
      2. Na secção Configuração da máquina, especifique as propriedades das suas VMs reservadas de uma das seguintes formas:

        1. Para especificar as propriedades das VMs através de 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ílias de máquinas que o seu compromisso. Se selecionar um modelo de instância regional, a região desse modelo de instância também tem de corresponder à região especificada no seu compromisso.

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

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

            • Utilização geral para a série de máquinas de utilização geral
            • Otimizada para computação para a série de máquinas otimizadas para computação
            • Otimizada para memória para a série de máquinas otimizadas para memória
            • GPUs para a série de máquinas otimizadas pelo acelerador
          2. Na tabela que tem a coluna Série, selecione a mesma série de máquinas que especificou para o compromisso.

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

            1. Para escolher um tipo de máquina predefinido, selecione Predefinição e, de seguida, selecione o tipo de máquina pretendido.
            2. Para escolher um tipo de máquina personalizado, selecione Personalizado e, de seguida, especifique os Núcleos e a Memória que quer.
          4. Para especificar uma plataforma de CPU mínima, GPUs ou ambas, expanda o menu Plataforma de CPU e GPU e faça o seguinte:

            1. Opcional: para especificar uma plataforma de CPU mínima, 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 local, faça o seguinte:

            1. No campo Número de discos, selecione o número de discos SSD locais que quer para cada VM.
            2. No campo Tipo de interface, selecione a interface para os discos SSD local.
    8. Para terminar de especificar as propriedades desta reserva, clique em Concluído.

  12. Para concluir a compra do compromisso com as reservas anexadas, faça o seguinte:

    1. Clique em Comprar.
    2. Na caixa de diálogo Comprar um desconto por utilização garantida, se concordar com os termos específicos do serviço, clique novamente em Comprar.

gcloud

Para criar as reservas associadas ao comprar o compromisso, execute o comando gcloud compute commitments create.

Consoante queira anexar uma única reserva ou várias reservas, execute o comando de uma das seguintes formas:

  • 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 várias reservas ao seu compromisso, defina as propriedades da reserva através de um ficheiro YAML e, em seguida, especifique esse ficheiro YAML no comando que usa para comprar o seu compromisso. Opcionalmente, também pode usar esta abordagem de ficheiro YAML para criar e anexar uma única reserva ao seu compromisso. Para criar as suas reservas anexadas através desta abordagem, faça o seguinte:

    1. Crie o ficheiro YAML no diretório atual e especifique a configuração que quer para cada reserva anexada. Por exemplo, para especificar a configuração de uma reserva partilhada partilhada com dois projetos que especifica GPUs, dois discos SSD locais e uma plataforma de CPU mínima, inclua o seguinte texto no seu ficheiro 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 estas propriedades para cada reserva que quer criar. Pode anexar qualquer número de reservas existentes que quiser ao seu compromisso.

    2. Execute o comando gcloud compute commitments create e inclua a flag --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 onde quer comprar o compromisso com as reservas anexadas.
  • DURATION: a duração do compromisso, 12-month ou 36-month.
  • CUSTOM_END_DATE: opcional. Uma data de fim personalizada para o seu período de vigência, que tem de ser formatada como YYYY-MM-DD. Por exemplo, para especificar uma data de fim 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:

    • Para tipos de máquinas A2, use accelerator-optimized
    • Para os tipos de máquinas A3 Edge e A3 High, use accelerator-optimized-a3
    • Para os tipos de máquinas A3 Mega, use accelerator-optimized-a3-mega
    • Para tipos de máquinas C2, use compute-optimized
    • Para tipos de máquinas C2D, use compute-optimized-c2d
    • Para os tipos de máquinas C3, use compute-optimized-c3
    • Para tipos de máquinas C3D, use compute-optimized-c3d
    • Para tipos de máquinas N1, use general-purpose
    • Para os tipos de máquinas C4, use general-purpose-c4
    • Para os tipos de máquinas C4A, use general-purpose-c4a
    • Para tipos de máquinas C4D, use general-purpose-c4d
    • Para tipos de máquinas N2, use general-purpose-n2
    • Para tipos de máquinas N2D, use general-purpose-n2d
    • Para tipos de máquinas G2, use graphics-optimized
    • Para tipos de máquinas M1, use memory-optimized
    • Para tipos de máquinas M3, use memory-optimized-m3
    • Para tipos de máquinas Z3, use storage-optimized-z3

  • COMMITTED_VCPUS: o número de vCPUs que quer no seu compromisso. O número tem de ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB ou GB, de memória que quer no seu compromisso. Por exemplo, 10GB ou 10240MB. Se não especificar uma unidade, o Compute Engine usa GB como unidade.

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

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

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

  • YAML_FILE: o caminho para o ficheiro 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 especificamente segmentadas, consulte o artigo Como funcionam as reservas.
  • NUMBER_OF_RESERVED_VMS: o número de VMs que quer reservar na reserva em anexo.
  • RESERVED_MACHINE_TYPE: o tipo de máquina que quer para as VMs na sua reserva anexada.

    • Para tipos de máquinas predefinidos, use o formato MACHINE_FAMILY-standard-CPUS; por exemplo, n2-standard-4.
    • Para tipos de máquinas 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áquinas personalizados.

      Substitua o seguinte:

      • MACHINE_FAMILY: a família de tipos de máquinas; 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 tem de ser um múltiplo de 256 MB e tem de ser fornecida em MB. Por exemplo, para criar uma VM N2 com 4 vCPUs e 5 GB de memória, que são 5120 MB, use n2-custom-4-5120.
  • RESERVED_ACCELERATOR_COUNT: o número de GPUs que quer adicionar por VM na reserva anexada.

  • RESERVED_ACCELERATOR_TYPE: o tipo de acelerador que quer adicionar na reserva em anexo.

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

  • OWNER_PROJECT_ID: o ID do projeto onde quer comprar o compromisso com a reserva anexada. Especifique este campo se quiser partilhar a sua reserva anexada em vários projetos de consumidor.

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

  • SHARE_SETTING: o tipo de partilha da reserva anexada. Especifique este campo com o valor projects se quiser partilhar a sua reserva anexada em vários projetos de consumo. Exclua este campo se quiser criar uma reserva de projeto único.

  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2: os IDs dos projetos dos projetos que podem partilhar esta reserva, por exemplo, project-1 e project-2. Pode incluir até 100 projetos de consumo. Estes projetos têm de estar na mesma organização que o projeto proprietário. Não inclua o ID do projeto onde cria esta reserva, uma vez que esse projeto tem autorização para consumir esta reserva por predefinição. Exclua estes campos se quiser criar uma reserva de projeto único.

O Compute Engine cria o compromisso e as reservas anexas apenas se existirem recursos suficientes do tipo de máquina especificado na zona de destino e quota suficiente no momento do seu pedido. Se a compra tiver sido feita com êxito, é apresentada uma mensagem de êxito semelhante à seguinte:

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

Exemplos de compromissos de compra através da criação de novas reservas para anexar

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

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

Suponhamos que quer comprar um compromisso commitment-01 na região us-central1 que inclui 4 GPUs NVIDIA V100. Quer criar uma nova reserva reservation-01 como a reserva anexada para essas GPUs. Suponhamos que também quer especificar que o Compute Engine use essas GPUs reservadas em 2 VMs n1-standard-32 na zona us-central1-a. Para comprar este compromisso de exemplo com a respetiva 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 GPUs sem comprometer vCPUs nem memória

Para confirmar e reservar GPUs e discos SSD locais sem confirmar vCPUs nem memória, especifique 0 como o valor das quantidades de vCPU e memória. Por exemplo, suponhamos que quer comprar um compromisso commitment-02 para uma única GPU NVIDIA P4 na região us-west2. Também quer criar uma nova reserva, como a reserva anexada, e especificar que o Compute Engine use a GPU reservada numa n1-standard-2VM na zona us-west2-b. Para comprar este compromisso de exemplo 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: compre um compromisso para GPUs e discos SSD locais anexando várias novas reservas

Suponhamos que quer comprar um compromisso commitment-03 para 1 GPU NVIDIA V100 e 2 discos SSD locais na região us-central1. Também quer criar e anexar duas reservas na zona us-central1-a. Na primeira reserva, res-01, quer reservar 1 VM n1-standard-2 com 1 GPU. Quer fazer uma reserva segmentada, o que significa que tem de segmentar especificamente essa reserva pelo nome para usar as respetivas VMs reservadas.res-01 Na segunda reserva, res-02, quer reservar 1 VM n1-standard-8 com 2 tipos de discos SSD locais anexados.

Para comprar este exemplo de compromisso com as reservas anexadas, crie primeiro o ficheiro 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 ficheiro YAML, para concluir a compra do compromisso com as reservas anexadas, execute o seguinte comando. Tenha em atenção 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 enquanto compra o compromisso, faça um pedido POST ao método regionCommitments.insert. No seu pedido, inclua o campo reservations para definir uma lista de todas as novas reservas que quer criar e anexar. Pode anexar qualquer número de reservas existentes que pretender ao seu compromisso.

  • Para criar a 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 partilhada com dois projetos que especifica GPUs, dois discos SSD locais e uma plataforma de CPU mínima, faça o seguinte pedido:

    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 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"
      }
    ],
    "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 onde quer comprar o compromisso com as reservas anexadas.
  • DURATION: a duração do compromisso, que pode ser 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:

    • Para tipos de máquinas A2, use ACCELERATOR_OPTIMIZED
    • Para os tipos de máquinas A3 Edge e A3 High, use ACCELERATOR_OPTIMIZED_A3
    • Para os tipos de máquinas A3 Mega, use ACCELERATOR_OPTIMIZED_A3_MEGA
    • Para tipos de máquinas C2, use COMPUTE_OPTIMIZED
    • Para tipos de máquinas C2D, use COMPUTE_OPTIMIZED_C2D
    • Para os tipos de máquinas C3, use COMPUTE_OPTIMIZED_C3
    • Para tipos de máquinas C3D, use COMPUTE_OPTIMIZED_C3D
    • Para tipos de máquinas N1, use GENERAL_PURPOSE
    • Para os tipos de máquinas C4, use GENERAL_PURPOSE_C4
    • Para os tipos de máquinas C4A, use GENERAL_PURPOSE_C4A
    • Para tipos de máquinas C4D, use GENERAL_PURPOSE_C4D
    • Para tipos de máquinas N2, use GENERAL_PURPOSE_N2
    • Para tipos de máquinas N2D, use GENERAL_PURPOSE_N2D
    • Para tipos de máquinas G2, use GRAPHICS_OPTIMIZED
    • Para tipos de máquinas M1, use MEMORY_OPTIMIZED
    • Para tipos de máquinas M3, use MEMORY_OPTIMIZED_M3
    • Para tipos de máquinas Z3, use STORAGE_OPTIMIZED_Z3

  • COMMITTED_VCPUS: o número de vCPUs que quer no seu compromisso. O número tem de ser um número inteiro positivo.

  • COMMITTED_MEMORY: a quantidade, em MB, de memória que quer no seu compromisso. Por exemplo, 10240MB.

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

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

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

  • CUSTOM_END_DATE: opcional. Uma data de fim personalizada para o seu período de vigência, que tem de ser formatada como YYYY-MM-DD. Por exemplo, para especificar uma data de fim personalizada de 20 de abril de 2024, formate-a como 2024-04-20.

  • END_TIME: 00:00 (hora do Pacífico dos EUA e do Canadá) (UTC-8 ou UTC-7), como um desvio do Tempo Universal Coordenado (UTC). Especifique este valor apenas se tiver especificado uma data de fim personalizada para o seu compromisso. Especifique um dos seguintes valores:

    • Durante a mudança da hora: 07:00:00
    • Durante outros horários: 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 é uma reserva especificamente segmentada; true ou false. Para mais informações sobre reservas especificamente segmentadas, consulte o artigo Como funcionam as reservas.
  • NUMBER_OF_RESERVED_VMS: o número de VMs que quer reservar na reserva em anexo.
  • RESERVED_MACHINE_TYPE: o tipo de máquina que quer para as VMs na sua reserva anexada.

    • Para tipos de máquinas predefinidos, use o formato MACHINE_FAMILY-standard-CPUS; por exemplo, n2-standard-4.
    • Para tipos de máquinas 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áquinas personalizados.

      Substitua o seguinte:

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

  • RESERVED_ACCELERATOR_TYPE: o tipo de acelerador que quer adicionar na reserva em anexo.

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

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

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

  • SHARE_SETTING: o tipo de partilha da reserva anexada. Especifique este campo com o valor SPECIFIC_PROJECTS se quiser partilhar a sua reserva anexada em vários projetos de consumidor. 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 partilhar esta reserva; por exemplo, project-1 e project-2. Pode incluir até 100 projetos de consumo. Estes projetos têm de estar na mesma organização que o projeto proprietário. Não inclua o ID do projeto onde cria esta reserva, uma vez que esse projeto tem autorização para consumir esta reserva por predefinição. Exclua estes campos se quiser criar uma reserva de projeto único.

O Compute Engine cria o compromisso e as reservas anexas apenas se existirem recursos suficientes do tipo de máquina especificado na zona de destino e quota suficiente no momento do seu pedido. Se a compra tiver sido feita com êxito, o Compute Engine devolve um estado 200 para o seu pedido de API REST.

Exemplos de compromissos de compra através da criação de novas reservas para anexar

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

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

Suponhamos que quer comprar um compromisso commitment-01 na região us-central1 que inclui 4 GPUs NVIDIA V100. Quer criar uma nova reserva reservation-01 como a reserva anexada para essas GPUs. Suponhamos que também quer especificar que o Compute Engine use essas GPUs reservadas em 2 VMs na zona us-central1-a.n1-standard-8 Para comprar este compromisso de exemplo com a respetiva reserva anexada, faça o seguinte pedido 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 GPUs sem comprometer vCPUs nem memória

Para confirmar e reservar GPUs e discos SSD locais sem confirmar vCPUs nem memória, especifique 0 como o valor das quantidades de vCPU e memória. Por exemplo, suponha que quer comprar um compromisso commitment-02 para uma única GPU NVIDIA P4 na região us-west2. Também quer criar uma nova reserva como a reserva anexada e especificar o Compute Engine para usar a GPU reservada numa VM na zona us-west2-b.n1-standard-2 Para comprar este compromisso de exemplo com a reserva anexada, faça o seguinte pedido 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

Suponhamos que quer comprar um compromisso commitment-03 para 1 GPU NVIDIA V100 e 2 discos SSD locais na região us-central1. Também quer criar e anexar duas reservas na zona us-central1-a. Na primeira reserva, res-01, quer reservar 1 VM n1-standard-2 com 1 GPU. Quer fazer uma reserva segmentada, o que significa que tem de segmentar especificamente essa reserva pelo nome para usar as respetivas VMs reservadas.res-01 Na segunda reserva, res-02, quer reservar 1 VM n1-standard-8 com 2 tipos de discos SSD locais anexados. Para comprar este compromisso de exemplo com as reservas anexas, faça o seguinte pedido POST. Tenha em atenção que o exemplo de compromisso 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 reservas associadas a compromissos

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

A reserva de substituição é sempre uma reserva criada recentemente. Para substituir uma reserva anexada, tem de especificar as propriedades da reserva que quer usar como substituição. O Compute Engine cria automaticamente uma nova reserva com estas propriedades e usa-a para substituir a reserva anexada. Não pode usar uma reserva existente para substituir a reserva associada.

Alterações permitidas

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

  • Pode reservar VMs de um tipo de máquina diferente. No entanto, continua a ter de reservar VMs da mesma série de máquinas para continuar a receber CUDs para os seus recursos reservados.
  • Pode alterar o número de VMs que quer reservar.
  • Pode alterar a quantidade de GPUs e discos SSD locais associados por VM, desde que a quantidade total de GPUs e discos SSD locais reservados permaneça a mesma.
  • Pode especificar que as reservas substituídas sejam de projeto único (também denominadas locais na Google Cloud consola) ou reservas partilhadas.

Requisitos

Quando substitui a reserva associada ao compromisso por uma nova, o seu pedido tem de cumprir todos os seguintes requisitos:

  • Só pode substituir uma reserva anexada de cada vez por exatamente uma nova reserva anexada. Para substituir uma reserva associada, remova simultaneamente uma reserva associada existente definindo a respetiva contagem de VMs como 0 e defina uma nova reserva associada pela qual quer substituí-la.
  • A nova reserva tem de existir no mesmo projeto que o compromisso.
  • A nova reserva tem de estar localizada na mesma zona que a reserva removida.
  • A quantidade e os tipos de GPUs especificados na nova reserva têm de corresponder à reserva removida.
  • Os números e os tipos de discos SSD locais especificados na nova reserva têm de corresponder à reserva removida.
  • Só pode alterar até 100 VMs por pedido. Para fazer uma alteração que envolva mais de 100 VMs, divida a alteração em vários pedidos mais pequenos ou contacte o Google Cloud apoio técnico.

O seu pedido de substituição de uma reserva também depende da disponibilidade de capacidade nesse momento. Se a capacidade para um pedido não estiver disponível, o pedido falha e devolve um erro de disponibilidade de recursos, que pode tentar resolver modificando ou adiando o pedido. Para mais informações, consulte a documentação sobre como resolver problemas de disponibilidade de recursos.

Se o pedido de substituição de uma reserva associada falhar, a reserva associada e os recursos reservados existentes permanecem inalterados. Para preservar a capacidade, aguarde até que o pedido de substituição de uma reserva seja bem-sucedido para fazer as alterações correspondentes às VMs.

Passos para substituir uma reserva anexada

Pode substituir as reservas de um compromisso através da Google Cloud CLI ou da API REST.

gcloud

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

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

    • A reserva atual que quer substituir.

      Para aceder aos detalhes desta reserva, consulte o artigo Ver detalhes de uma reserva.

    • A nova reserva de substituição.

    O conteúdo do ficheiro 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 substituição:

    Reserva atual

    Para a reserva atual, todas as seguintes propriedades têm de ser exatamente iguais às que viu quando consultou a reserva. Omitir os campos para quaisquer propriedades que a reserva atual ainda não tenha.

    • 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 atual anexada.
    • 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 o disco SSD local para cada utilização de VM reservada na reserva anexada atual. As opções válidas são: scsi e nvme. Cada disco 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 sua reserva anexada atual for partilhada por vários projetos de consumidor.
    • CURRENT_RESERVATION_SHARE_SETTING: O tipo de partilha da reserva atual. Especifique este campo com o valor projects se a reserva anexada atual for partilhada por 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 partilha a reserva anexada atual, por exemplo, project-1 e project-2.

    Reserva de substituição

    Para a reserva de substituição, defina as seguintes propriedades como obrigatórias. Certifique-se de que cumpre todos os requisitos quando especificar estas propriedades. Omita os campos adicionais que não quer usar.

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

      • Para tipos de máquinas predefinidos, use o formato MACHINE_FAMILY-standard-CPUS; por exemplo, n2-standard-4.
      • Para tipos de máquinas 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áquinas personalizados.

      Substitua o seguinte:

      • MACHINE_FAMILY: a família de tipos de máquinas; 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 tem de ser um múltiplo de 256 MB e tem de ser fornecida em MB. Por exemplo, para criar uma VM N2 com 4 vCPUs e 5 GB de memória, que são 5120 MB, use n2-custom-4-5120.
    • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS: o número de GPUs que quer adicionar por VM na reserva de substituição.

    • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: o tipo de acelerador que quer adicionar na reserva de substituição.

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

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

    • REPLACEMENT_RESERVATION_SHARE_SETTING: o tipo de partilha da reserva de substituição. Especifique este campo com o valor projects se quiser partilhar a sua reserva de substituição em vários projetos de consumidor.

    • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 e REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: os IDs dos projetos dos projetos que podem partilhar esta reserva, por exemplo, project-1,project-2. Pode incluir até 100 projetos de consumo. Estes projetos têm de estar na mesma organização que o projeto proprietário. Não inclua o REPLACEMENT_RESERVATION_PROJECT_ID, que já tem autorização para consumir esta reserva por predefinição.

  2. Execute o comando gcloud beta compute commitments update-reservations e especifique o caminho para o ficheiro YAML através do sinalizador --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 em anexo.
    • 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 ficheiro YAML que contém a configuração das reservas atuais e de substituição.

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

Para demonstrar isto, esta secçã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 quer atualizar as reservas anexadas para o compromisso my-commitment-with-reservations, que foi comprado através do 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 era um ficheiro no diretório atual com o seguinte conteúdo, que define uma reserva anexada denominada 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 res-1 anexada resultaram nos seguintes recursos comprometidos e reservados:

Tipo do recurso Recursos no 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 GPU P100 por MV, para 4 MVs)*
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, a reserva anexada no exemplo, res-1, reserva 4 n1-standard-4 VMs, cada uma com 1 GPU P100 e 2 discos SSD locais do tipo de interface scsi. O n1-standard-4 tipo de máquina usa 4 vCPUs e 15 GB para cada VM.

Substitua a reserva de exemplo anexada

Suponhamos que quer substituir a reserva anexada res-1 para o por uma nova reserva anexada res-2 e alterar os recursos reservados para o seguinte:

Tipo do recurso Recursos no 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 reservadas e partilhadas)n1-standard-8
GPUs 4 GPUs P100 4 GPUs P100
(1 GPU P100 por MV, para 4 MVs)*
4 GPUs P100
(2 GPUs P100 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, a reserva anexada no exemplo, res-1, reserva 4 n1-standard-4 VMs, cada uma com 1 GPU P100 e 2 discos SSD locais do tipo de interface scsi. O n1-standard-4 tipo de máquina usa 4 vCPUs e 15 GB para cada VM.

Especificamente, a reserva anexada de substituição define res-2, que reserva 2 VMs, cada uma com 1 GPU P100 e 4 discos SSD locais do tipo de interface scsi.n1-standard-8 Além disso, res-2 é partilhado com outros 2 projetos, project-1 e project-2, e é 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 por res-2 para o compromisso de my-commitment-with-reservations, faça o seguinte:

  1. Crie um ficheiro denominado two-reservations.yaml no diretório atual Esse ficheiro 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
    

REST

Para substituir reservas associadas a compromissos, faça um pedido através do método regionCommitments.updateReservations.POST

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 seguintes propriedades têm de ser exatamente iguais às que viu quando consultou a reserva. Omita os campos para quaisquer propriedades que a reserva atual ainda não especifique.

  • 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 atual anexada.
  • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS: o número de GPUs reservadas na reserva associada 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 discos SSD local para cada VM reservada usam na reserva anexada atual. As opções válidas são: scsi e nvme. Cada disco SSD local tem 375 GB. Repita o parâmetro localSsds para todos os discos SSD locais reservados.
  • CURRENT_RESERVATION_SHARE_SETTING: O tipo de partilha da reserva atual. Especifique este parâmetro com o valor projects se a reserva associada atual for partilhada por 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 partilha a reserva anexada atual, por exemplo, project-1 e project-2.

Reserva de substituição

Para a reserva de substituição, defina as seguintes propriedades como obrigatórias. Certifique-se de que cumpre todos os requisitos quando especificar estas propriedades. Omita os campos adicionais que não quer usar.

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

    • Para tipos de máquinas predefinidos, use o formato MACHINE_FAMILY-standard-CPUS; por exemplo, n2-standard-4.
    • Para tipos de máquinas 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áquinas personalizados.

    Substitua o seguinte:

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

  • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE: o tipo de acelerador que quer adicionar na reserva de substituição.

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

  • REPLACEMENT_RESERVATION_SHARE_SETTING: O tipo de partilha da reserva de substituição. Especifique este parâmetro com o valor projects se quiser partilhar a sua reserva de substituição em vários projetos de consumidor.

  • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 e REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2: os IDs dos projetos dos projetos que podem partilhar esta reserva, por exemplo, project-1,project-2. Pode incluir até 100 projetos de consumo. Estes projetos têm de estar na mesma organização que o projeto proprietário. Não inclua o PROJECT_ID, que já tem autorização para consumir esta reserva por predefinição.

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

Para demonstrar isto, esta secçã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 quer substituir a reserva anexada res-1 para o compromisso my-commitment-with-reservations, que foi comprado fazendo o seguinte pedido 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 res-1 anexada resultaram nos seguintes recursos comprometidos e reservados:

Tipo do recurso Recursos no 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 GPU P100 por MV, para 4 MVs)*
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 anexado, res-1, reserva 4 VMs, cada uma com 1 GPU P100 e 2 discos SSD locais do tipo de interface scsi.n1-standard-4 O n1-standard-4 tipo de máquina usa 4 vCPUs e 15 GB para cada VM.

Substitua a reserva de exemplo anexada

Suponhamos que quer substituir a reserva anexada res-1 para o por uma nova reserva anexada res-2 e alterar os recursos reservados para o seguinte:

Tipo do recurso Recursos no 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 reservadas e partilhadas)n1-standard-8
GPUs 4 GPUs P100 4 GPUs P100
(1 GPU P100 por MV, para 4 MVs)*
4 GPUs P100
(2 GPUs P100 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, a reserva anexada no exemplo, res-1, reserva 4 n1-standard-4 VMs, cada uma com 1 GPU P100 e 2 discos SSD locais do tipo de interface scsi. O n1-standard-4 tipo de máquina usa 4 vCPUs e 15 GB para cada VM.

Especificamente, a reserva anexada de substituição define res-2, que reserva 2 VMs, cada uma com 1 GPU P100 e 4 discos SSD locais do tipo de interface scsi.n1-standard-8 Além disso, res-2 é partilhado com outros 2 projetos, project-1 e project-2, e é 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 por res-2 para o compromisso de my-commitment-with-reservations, faça o seguinte pedido de POST através do método regionCommitments.updateReservations:

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

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

O que se segue?