Consumo e gerenciamento de reservas

Neste documento, você verá como consumir e gerenciar reservas de recursos zonais do Compute Engine. As reservas fornecem um nível de garantia muito alto para conseguir capacidade para recursos zonais do Compute Engine. Cada reserva fornece garantia para uma ou mais instâncias de máquina virtual (VM) com as mesmas propriedades. Para saber mais sobre reservas, consulte Reservas para recursos zonais do Compute Engine. Para saber como criar reservas, consulte Criar uma reserva para um projeto único ou Criar uma reserva compartilhada.

Antes de começar

Como consumir instâncias reservadas

Ao criar uma instância de máquina virtual (VM), defina a sinalização de afinidade de reserva dela para escolher se a instância pode usar qualquer reserva correspondente disponível (padrão), usar uma reserva específica ou não fazer reservas. A propriedade de afinidade de reserva é exibida da seguinte maneira:

  • Seção Usar com instância de VM no console
  • Sinalização --reservation-affinity na CLI gcloud
  • Campo "reservationAffinity" na API Compute Engine

Em todos os casos, uma VM só poderá consumir uma reserva se todas as propriedades a seguir para a VM e a reserva forem exatamente correspondentes:

  • Projeto
  • Zona
  • Tipo de máquina
  • Plataforma mínima de CPU
  • Tipo e contagem de GPU
  • Tipo e contagem de SSD local

Para uma instância consumir a partir de uma reserva específica, essa reserva precisa ser criada com a sinalização de necessidade de reserva específica correspondente.

Para mais informações, consulte Como as reservas funcionam.

Como consumir instâncias de qualquer reserva correspondente

Nesse modelo de consumo, as instâncias atuais e novas contam automaticamente com a reserva se as propriedades dessas instâncias corresponderem às propriedades da instância reservada. Esse modelo será útil se você criar e excluir muitas VMs e quiser usar reservas sempre que possível.

Ao usar esse modelo de consumo, todas as reservas de projeto único são consumidas antes de qualquer reserva compartilhada, já que esta é uma disponibilidade mais ampla. Para mais informações sobre como as instâncias são consumidas automaticamente, consulte a ordem de consumo.

Para usar esse modelo, exclua a sinalização --require-specific-reservation ao criar suas reservas, para que as instâncias correspondentes possam consumir essas reservas automaticamente.

Console

  1. Crie uma reserva com recursos que possam ser usados por instâncias de VM com uma propriedade de afinidade de reserva configurada para consumir qualquer reserva (padrão). É possível criar uma reserva independente ou uma reserva anexada a um compromisso.

    1. No console, acesse a página Descontos por compromisso de uso.

      Acesse "Descontos por uso contínuo"

    2. Crie uma reserva usando uma das seguintes opções:

      • Para criar uma reserva independente, clique em Criar reserva.

      • Para criar uma reserva vinculada a um compromisso, clique em Comprar compromisso. Após especificar as outras opções, clique em Adicionar um item na seção Reservas. Para mais informações sobre como adquirir um compromisso com uma reserva anexada, consulte Como combinar reservas com descontos por compromisso de uso.

    3. No campo Nome, insira um nome para a reserva. Neste exemplo, digite reservation-01.

    4. Escolha a Região e a Zona em que você quer reservar recursos. Para este exemplo, selecione us-central1 como a região e us-central1-a como a zona.

    5. Escolha o Tipo de compartilhamento preferido:

      • Para criar uma reserva para um único projeto, selecione Local.
      • Para criar uma reserva compartilhada entre vários projetos, selecione Compartilhado. Para compartilhar essa reserva com outros projetos, clique em Adicionar projetos e selecione os projetos pretendidos na organização atual de projetos.
    6. Em Usar com instância de VM, selecione Usar reserva automaticamente para que qualquer instância de VM correspondente possa usar essa reserva automaticamente.

    7. No campo Número de instâncias da VM, insira o número de instâncias de instâncias de VM que você quer reservar. Neste exemplo, digite 2.

    8. Especifique os recursos que serão reservados para cada instância de VM.

      • Se você quiser reservar VMs que correspondam a um modelo de instância existente, selecione Usar modelo de instância e selecione um modelo de instância na lista.
      • Caso contrário, selecione Especificar tipo de máquina e especifique o seguinte:
        1. Nos campos Família de máquinas, Série e Tipo de máquina, selecione um grupo, uma série e um tipo de máquina.
        2. Opcional: especifique uma plataforma de CPU e/ou GPUs mínimas:
          1. Para expandir a seção Plataforma de CPU e GPU, clique na seta de expansão .
          2. Opcional: para especificar uma plataforma mínima de CPU, selecione uma opção na lista Plataforma de CPU.
          3. Opcional: para adicionar GPUs, clique em Adicionar GPU. Em seguida, nos campos Tipo de GPU e Número de GPUs, selecione o tipo e o número de GPUs para cada VM.
        3. Opcional: adicione SSDs locais:
          1. No campo Número de discos, selecione o número de SSDs locais para cada VM.
          2. No campo Tipo de interface, selecione a interface dos SSDs locais.

      Neste exemplo, selecione Especificar tipo de máquina. Em seguida, selecione o tipo de máquina n2-standard-32 para a família de máquinas General-purpose e a série N2 e escolha a plataforma de CPU mínima Intel Cascade Lake.

    9. Conclua a criação da reserva:

      • Se você estiver criando uma reserva independente, clique em Criar.

      • Se você estiver criando uma reserva vinculada a um compromisso:

        1. Para concluir a especificação das propriedades desta reserva, clique em Concluído.
        2. Para concluir a criação do compromisso e das reservas anexadas, clique em Comprar.
  2. No mesmo projeto ou em um projeto com que a reserva seja compartilhada, crie uma instância de VM que vise qualquer reserva aberta.

    Certifique-se de que as propriedades da instância de VM correspondam às propriedades da instância de VM em reservation-01, incluindo a zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e tamanho e interface do SSD local.

    Para mais informações sobre como criar uma instância de VM, consulte Como criar e iniciar uma instância de VM .

    1. No console do Google Cloud, acesse a página Criar uma instância.

      Acesse "Criar uma instância"

    2. Especifique um nome para sua VM.

    3. Nas seções a seguir, selecione uma configuração que corresponda exatamente a todas as propriedades da reserva, incluindo todas as propriedades opcionais. Neste exemplo, você precisa corresponder as seguintes propriedades da instância de VM com reservation-01:

      • Região: us-central1
      • Zona: us-central1-a
      • Tipo de máquina: n2-standard-32
      • Plataforma mínima de CPU: Intel Cascade Lake
      • GPUs: nenhuma
      • SSDs locais: nenhum
    4. Expanda a seção Rede, discos, segurança, gerenciamento, locatário único e expanda a seção Gerenciamento. Na lista Reservas, clique em Usar automaticamente a reserva criada.

    5. Para criar a VM, clique em Criar.

gcloud

  1. Crie uma reserva aberta chamada reservation-01.

    gcloud compute reservations create reservation-01 \
        --vm-count=2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a
    
  2. Crie uma instância de VM que vise qualquer reserva aberta e que corresponda às propriedades da instância em reservation-01, incluindo a zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e quantidade e interface de SSD local

    gcloud compute instances create instance-1 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=any
    

API

  1. Crie uma reserva aberta chamada reservation-01.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-01",
      "specificReservation":{
        "count":"2",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "specificReservationRequired": false
    }
    
  2. Crie uma instância de VM que vise qualquer reserva aberta e que corresponda às propriedades da instância em reservation-01, incluindo a zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e quantidade e interface de SSD local

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-1",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "ANY_RESERVATION"
      },
      ...
    }
    

Como consumir instâncias de uma reserva específica

Neste modelo, apenas novas instâncias que visam uma reserva específica pelo nome consomem essa reserva, e a reserva não é consumida automaticamente. Este modelo é útil quando você quer manter uma certa quantidade de capacidade como backup para eventos especiais.

Ao criar a reserva, especifique que as instâncias precisam segmentar a reserva específica usando um dos métodos a seguir:

  • No console, marque a caixa de seleção Selecionar reserva específica.
  • Na CLI gcloud, inclua a sinalização --require-specific-reservation.
  • Na API Compute Engine, defina o campo specificReservationRequired como true.

Em seguida, crie VMs que tenham como alvo específico essa reserva, e que correspondam às propriedades dela.

Se você estiver usando um modelo de instância para criar VMs em um grupo de instâncias gerenciado e regional, crie reservas idênticas com o mesmo nome em cada zona aplicável. Em seguida, escolha as reservas mencionando-as por nome no modelo de instância do grupo.

Por exemplo, crie uma reserva específica chamada reservation-02 e, em seguida, crie uma instância correspondente que vise essa reserva e que corresponda às propriedades da instância da reserva.

Dependendo do tipo de instância que você quer consumir, siga as etapas em Como consumir uma reserva específica de projeto única ou Como consumir uma reserva compartilhada específica.

Como consumir uma reserva específica de projeto único

Para consumir uma reserva específica de projeto único, use o console, a CLI gcloud ou a API Compute Engine.

Console

  1. Crie uma reserva com recursos que só podem ser usados por instâncias de VM que visem especificamente essa reserva por nome. É possível criar uma reserva independente ou uma reserva anexada a um compromisso.

    1. No console, acesse a página Descontos por compromisso de uso.

      Acesse "Descontos por uso contínuo"

    2. Crie uma reserva usando uma das seguintes opções:

      • Para criar uma reserva independente, clique em Criar reserva.

      • Para criar uma reserva vinculada a um compromisso, clique em Comprar compromisso. Após especificar as outras opções, clique em Adicionar um item na seção Reservas. Para mais informações sobre como adquirir um compromisso com uma reserva anexada, consulte Como combinar reservas com descontos por compromisso de uso.

    3. No campo Nome, insira um nome para a reserva. Neste exemplo, digite reservation-02.

    4. Escolha a Região e a Zona em que você quer reservar recursos. Para este exemplo, selecione us-central1 como a região e us-central1-a como a zona.

    5. Para especificar que a reserva será uma reserva de projeto único, selecione Local como o Tipo de compartilhamento.

    6. Em Usar com instância da VM, escolha Selecionar reserva específica para que apenas instâncias de VM correspondentes que visam especificamente essa reserva por nome possam usá-la.

    7. No campo Número de instâncias da VM, insira o número de instâncias de instâncias de VM que você quer reservar. Neste exemplo, digite 10.

    8. Especifique os recursos que serão reservados para cada instância de VM.

      • Se você quiser reservar VMs que correspondam a um modelo de instância existente, selecione Usar modelo de instância e selecione um modelo de instância na lista.
      • Caso contrário, selecione Especificar tipo de máquina e especifique o seguinte:
        1. Nos campos Família de máquinas, Série e Tipo de máquina, selecione um grupo, uma série e um tipo de máquina.
        2. Opcional: especifique uma plataforma de CPU e/ou GPUs mínimas:
          1. Para expandir a seção Plataforma de CPU e GPU, clique na seta de expansão .
          2. Opcional: para especificar uma plataforma mínima de CPU, selecione uma opção na lista Plataforma de CPU.
          3. Opcional: para adicionar GPUs, clique em Adicionar GPU. Em seguida, nos campos Tipo de GPU e Número de GPUs, selecione o tipo e o número de GPUs para cada VM.
        3. Opcional: adicione SSDs locais:
          1. No campo Número de discos, selecione o número de SSDs locais para cada VM.
          2. No campo Tipo de interface, selecione a interface dos SSDs locais.

      Neste exemplo, selecione Especificar tipo de máquina. Em seguida, selecione o tipo de máquina n2-standard-32 para a família de máquinas General-purpose e a série N2 e escolha a plataforma de CPU mínima Intel Cascade Lake.

    9. Conclua a criação da reserva:

      • Se você estiver criando uma reserva independente, clique em Criar.

      • Se você estiver criando uma reserva vinculada a um compromisso:

        1. Para concluir a especificação das propriedades desta reserva, clique em Concluído.
        2. Para concluir a criação do compromisso e das reservas anexadas, clique em Comprar.
  2. No mesmo projeto, crie uma instância de VM voltada para essa eserva específica por nome.

    Certifique-se de que as propriedades da instância de VM correspondam às propriedades da instância de VM específica, incluindo zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e tamanho e interface da SSD local.

    Para mais informações sobre como criar uma instância de VM, consulte Como criar e iniciar uma instância de VM .

    1. No console do Google Cloud, acesse a página Criar uma instância.

      Acesse "Criar uma instância"

    2. Especifique um nome para sua VM.

    3. Nas seções a seguir, selecione uma configuração que corresponda exatamente a todas as propriedades da reserva, incluindo todas as propriedades opcionais. Neste exemplo, você precisa corresponder as seguintes propriedades da instância de VM com reservation-02:

      • Região: us-central1
      • Zona: us-central1-a
      • Tipo de máquina: n2-standard-32
      • Plataforma mínima de CPU: Intel Cascade Lake
      • GPUs: nenhuma
      • SSDs locais: nenhum
    4. Expanda a seção Rede, discos, segurança, gerenciamento, locatário único e expanda a seção Gerenciamento. Na lista Reservas, escolha Selecionar reserva específica e, em seguida, o Nome da reserva com as propriedades correspondentes que você quer que as instâncias consumam. Neste exemplo, selecione reservation-02.

    5. Para criar a VM, clique em Criar.

gcloud

  1. Crie uma reserva com o nome reservation-02 com a sinalização --require-specific-reservation. Esses recursos reservados só podem ser usados por instâncias que visem especificamente essa reserva pelo nome.

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --require-specific-reservation
    
  2. Crie uma instância de VM que vise reservation-02 pelo nome usando as sinalizações --reservation-affinity e --reservation.

    Certifique-se de que as propriedades da instância correspondam às propriedades da instância da reserva, incluindo a zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e tamanho e interface da SSD local.

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=reservation-02
    

API

  1. Crie uma reserva chamada reservation-02 com o campo specificReservationRequired definido como true.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "specificReservationRequired": true
    }
  2. Crie uma instância de VM que vise reservation-02 pelo nome usando o campo reservationAffinity.

    Certifique-se de que as propriedades da instância correspondam às propriedades da instância da reserva, incluindo a zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e tamanho e interface da SSD local.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values":
        ["reservations/reservation-02"
        ]
      },
      ...
    }

Como consumir uma reserva compartilhada específica

Para consumir uma reserva compartilhada específica, use o console, a CLI gcloud ou a API Compute Engine.

Console

  1. Crie uma reserva compartilhada com recursos que só possam ser usados por instâncias de VM que visem especificamente essa reserva por nome. É possível criar uma reserva compartilhada independente ou uma reserva compartilhada anexada a um compromisso.

    1. No console, selecione o projeto do proprietário em que você quer criar a reserva compartilhada e acesse a página Desconto por compromisso de uso.

      Acesse "Descontos por uso contínuo"

    2. Crie uma reserva usando uma das seguintes opções:

      • Para criar uma reserva independente, clique em Criar reserva.

      • Para criar uma reserva vinculada a um compromisso, clique em Comprar compromisso. Após especificar as outras opções, clique em Adicionar um item na seção Reservas. Para mais informações sobre como adquirir um compromisso com uma reserva anexada, consulte Como combinar reservas com descontos por compromisso de uso.

    3. No campo Nome, insira um nome para a reserva. Neste exemplo, digite reservation-02.

    4. Escolha a Região e a Zona em que você quer reservar recursos. Para este exemplo, selecione us-central1 como a região e us-central1-a como a zona.

    5. Para especificar que sua reserva é uma reserva compartilhada, selecione Compartilhado como o Tipo de compartilhamento

    6. Clique em Adicionar projetos e selecione os projetos da organização atual com que você quer compartilhar a reserva.

    7. Em Usar com instância da VM, escolha Selecionar reserva específica para que apenas instâncias de VM correspondentes que visam especificamente essa reserva por nome possam usá-la.

    8. No campo Número de instâncias da VM, insira o número de instâncias de instâncias de VM que você quer reservar. Neste exemplo, digite 10.

    9. Especifique os recursos que serão reservados para cada instância de VM.

      • Se você quiser reservar VMs que correspondam a um modelo de instância existente, selecione Usar modelo de instância e selecione um modelo de instância na lista.
      • Caso contrário, selecione Especificar tipo de máquina e especifique o seguinte:
        1. Nos campos Família de máquinas, Série e Tipo de máquina, selecione um grupo, uma série e um tipo de máquina.
        2. Opcional: especifique uma plataforma de CPU e/ou GPUs mínimas:
          1. Para expandir a seção Plataforma de CPU e GPU, clique na seta de expansão .
          2. Opcional: para especificar uma plataforma mínima de CPU, selecione uma opção na lista Plataforma de CPU.
          3. Opcional: para adicionar GPUs, clique em Adicionar GPU. Em seguida, nos campos Tipo de GPU e Número de GPUs, selecione o tipo e o número de GPUs para cada VM.
        3. Opcional: adicione SSDs locais:
          1. No campo Número de discos, selecione o número de SSDs locais para cada VM.
          2. No campo Tipo de interface, selecione a interface dos SSDs locais.

      Neste exemplo, selecione Especificar tipo de máquina. Em seguida, selecione o tipo de máquina n2-standard-32 para a família de máquinas General-purpose e a série N2 e escolha a plataforma de CPU mínima Intel Cascade Lake. 1. Conclua a criação da reserva:

      • Se você estiver criando uma reserva independente, clique em Criar.

      • Se você estiver criando uma reserva vinculada a um compromisso:

        1. Para concluir a especificação das propriedades desta reserva, clique em Concluído.
        2. Para concluir a criação do compromisso e das reservas anexadas, clique em Comprar.
  2. No mesmo projeto ou em um projeto com que a reserva seja compartilhada, crie uma instância de VM que vise essa reserva específica pelo nome.

    Certifique-se de que as propriedades da instância de VM correspondam às propriedades da instância de VM específica, incluindo zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e tamanho e interface da SSD local.

    1. No console do Google Cloud, acesse a página Criar uma instância.

      Acesse "Criar uma instância"

    2. Especifique um Nome para sua VM.

    3. Nas seções a seguir, selecione uma configuração que corresponda exatamente a todas as propriedades da reserva, incluindo todas as propriedades opcionais. Neste exemplo, você precisa corresponder as seguintes propriedades da instância de VM com reservation-02:

      • Região: us-central1
      • Zona: us-central1-a
      • Tipo de máquina: n2-standard-32
      • Plataforma mínima de CPU: Intel Cascade Lake
      • GPUs: nenhuma
      • SSDs locais: nenhum
    4. Expanda a seção Rede, discos, segurança, gerenciamento, locatário único e expanda a seção Gerenciamento. Na lista Reservas, escolha Selecionar reserva específica e faça o seguinte:

      1. Selecione um projeto de reserva que tenha reservas compartilhadas com seu projeto atual. Neste exemplo, selecione o projeto usado para criar reservation-02.
      2. Selecione o Nome da reserva da reserva compartilhada que você quer que a instância de VM consuma. Neste exemplo, selecione reservation-02.
    5. Para criar a VM, clique em Criar.

gcloud

  1. Crie uma reserva com o nome reservation-02 com a sinalização --require-specific-reservation. Esses recursos reservados só podem ser usados por instâncias que visem especificamente essa reserva pelo nome.

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --project=my-owner-project \
        --share-setting=projects \
        --share-with=project-1,project-2 \
        --require-specific-reservation
    
  2. Crie uma instância de VM que vise reservation-02 pelo nome usando as sinalizações --reservation-affinity e --reservation. Para consumir essa reserva de qualquer projeto de consumidor com que essa reserva seja compartilhada, você também precisa especificar o projeto que criou a reserva, my-owner-project.

    Certifique-se de que as propriedades da instância correspondam às propriedades da instância da reserva, incluindo a zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e tamanho e interface da SSD local.

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=projects/my-owner-project/reservations/reservation-02
    

API

  1. Crie uma reserva chamada reservation-02 com o campo specificReservationRequired definido como true.

    POST https://compute.googleapis.com/compute/v1/projects/my-owner-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake"
        }
      },
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "project-1": {
            "projectId": "project-1"
          },
          "project-2": {
            "projectId": "project-2"
          }
        }
      }
      "specificReservationRequired": true
    }
  2. Crie uma instância de VM que vise reservation-02 pelo nome usando o campo reservationAffinity. Para consumir essa reserva de qualquer projeto de consumidor com que essa reserva seja compartilhada, você também precisa especificar o projeto que criou a reserva, my-owner-project.

    Certifique-se de que as propriedades da instância correspondam às propriedades da instância da reserva, incluindo a zona, tipo de máquina (família de máquinas, vCPUs e memória), plataforma mínima de CPU, quantidade e tipo de GPU e tamanho e interface da SSD local.

    POST https://compute.googleapis.com/compute/v1/projects/project-2/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values":
        ["projects/my-owner-project/reservations/reservation-02"
        ]
      },
      ...
    }

Como criar instâncias sem consumir reservas

Para evitar explicitamente o consumo de recursos de qualquer reserva, defina a propriedade de afinidade da reserva para não usar reservas ao criar a VM. Ou, para evitar implicitamente o uso de qualquer uma das suas reservas, crie uma instância que não corresponda às propriedades de instância de nenhuma das suas reservas.

Console

  1. Crie uma VM que não consuma explicitamente de uma reserva.

    1. No Console do Google Cloud, acesse a página Criar uma instância.

      Acesse "Criar uma instância"

    2. Crie uma VM. Para mais informações, consulte Como criar e iniciar uma instância de VM.

    3. Expanda a seção Rede, discos, segurança, gerenciamento, locatário único e faça o seguinte:

      1. Expanda a seção Gerenciamento.
      2. Para garantir que essa VM não consuma de reservas atuais, na lista Reservas, selecione Não usar.
    4. Clique em Criar.

gcloud

Crie uma instância que não consuma explicitamente uma reserva.

gcloud compute instances create instance-3 --reservation-affinity=none

Ou crie uma instância que não corresponda às propriedades da instância em nenhuma de suas reservas. Para revisar suas propriedades de reserva, consulte como listar e descrever reservas.

API

Crie uma instância que não consuma explicitamente uma reserva.

POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances

{
  "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
  "name": "instance-3",
  "reservationAffinity":
  {
    "consumeReservationType": "NO_RESERVATION"
  },
  ...
}

Ou crie uma instância que não corresponda às propriedades da instância em nenhuma de suas reservas. Para revisar suas propriedades de reserva, consulte como listar e descrever reservas.

Solução de problemas

Saiba como verificar o consumo de reserva e solucionar problemas com o consumo de reserva.

Como listar e descrever reservas

Só é possível listar e descrever reservas que foram criadas pelo seu projeto atual. Consequentemente, as reservas compartilhadas são listadas apenas para o projeto do proprietário. Não é possível listar as reservas compartilhadas com um projeto ou listar todas as reservas em uma organização. Também é possível ver a lista de todos os projetos de consumidor para uma reserva compartilhada ao descrever essa reserva. Para recomendações sobre como gerenciar reservas compartilhadas, consulte práticas recomendadas para reservas compartilhadas.

Use o console, a CLI gcloud ou a API Compute Engine para ver a lista de reservas que foram criadas pelo projeto e os detalhes de cada uma.

Console

  1. No console, acesse a página Descontos por compromisso de uso.

    Acesse "Descontos por uso contínuo"

  2. Para listar todas as reservas que foram criadas no projeto atual, selecione a guia Reservas.

    Na lista, cada linha descreve uma reserva, e cada coluna descreve uma propriedade. Por exemplo, a coluna Máquinas usadas descreve a utilização e a capacidade total de cada reserva: um valor de 25 (50) representa uma reserva para 50 instâncias, e 25 dessas instâncias foram consumidas e estão em uso.

    Opcional: para modificar quais reservas e propriedades são exibidas, use o filtro e as opções de exibição de coluna , respectivamente.

  3. Para descrever todas as propriedades de uma reserva, clique no Nome de uma reserva na lista. A página Detalhes da reserva é aberta.

gcloud

Veja uma lista de suas reservas com o comando gcloud compute reservations list:

gcloud compute reservations list [--filter="zone:('ZONE')"]

NAME             IN_USE_COUNT   COUNT   ZONE
reservation-04   25             50      us-central1-a
reservation-05   0              100     us-central1-b

Descreva suas reservas com o comando gcloud compute reservations describe:

gcloud compute reservations describe RESERVATION_NAME --zone=ZONE

kind: compute#reservation
name: reservation-04
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04
specificReservation:
  count: '50'
  inUseCount: '25'
  instanceProperties:
    guestAccelerators:
    - acceleratorCount: 1
      acceleratorType: nvidia-tesla-k80
    localSsds:
    - diskSizeGb: '375'
      interface: SCSI
    machineType: n1-standard-2
    minCpuPlatform: Any CPU Platform
specificReservationRequired: false
status: READY
zone: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a    

É possível usar os valores count e inUseCount para determinar a utilização de cada reserva. Neste exemplo, 50 instâncias foram reservadas para reservation-04 e 25 delas foram consumidas na reserva e estão em uso atualmente.

Para criar uma instância que usa essa reserva, lembre-se de associar as propriedades da instância da reserva. Por exemplo:

gcloud compute instances create my-instance \
    --accelerator=type=nvidia-tesla-k80,count=1 \
    --local-ssd=size=375,interface=scsi \
    --machine-type n1-standard-2 \
    --zone us-central1-a 

API

Na API, liste suas reservas fazendo uma solicitação GET para o método reservations.list.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

{
  "id": "4100668622331754141",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-05",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "name": "reservation-05",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2"
    },
    "count": "100",
    "inUseCount": "0"
  },
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation"
},
{
  "id": "2533514314332214789",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "name": "reservation-04",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2",
      "guestAccelerators": [
        {
          "acceleratorType": "nvidia-tesla-k80",
          "acceleratorCount": 1
        }
      ],
      "minCpuPlatform": "Any CPU Platform",
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    },
    "count": "50",
    "inUseCount": "25"
  },
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation"
}

Descreva uma reserva chamando o método reservations.get.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

{
  "id": "2533514314332214789",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-centra1-a",
  "name": "reservation-04",
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2",
      "guestAccelerators": [
        {
          "acceleratorType": "nvidia-tesla-k80",
          "acceleratorCount": 1
        }
      ],
      "minCpuPlatform": "Any CPU Platform",
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    },
    "count": "50",
    "inUseCount": "25"
  }
}

É possível usar os valores count e inUseCount para determinar a utilização de cada reserva. Neste exemplo, 50 instâncias estão reservadas e 25 delas foram consumidas a partir da reserva e estão em uso no momento

Como modificar reservas

Redimensione uma reserva se você quiser alterar o número de VMs reservadas. Modifique quais projetos podem consumir uma reserva compartilhada se você quiser limitar ou expandir o consumo.

Para alterar outras propriedades de uma reserva, primeiro crie uma nova reserva e exclua a reserva mais antiga.

Como redimensionar uma reserva

É possível redimensionar o número de VMs em uma reserva usando a CLI gcloud ou a API.

gcloud

Redimensione sua reserva usando o comando gcloud compute reservations update. Exemplo:

Por exemplo, suponha que você tenha criado uma reserva para duas instâncias de VM:

gcloud compute reservations create reservation-01 \
    --machine-type=n2-standard-32 \
    --zone=us-central1-a \
    --vm-count=2

Para redimensionar a reserva de exemplo de duas a dez instâncias de VM, use o seguinte comando:

gcloud compute reservations update reservation-01 \
    --zone=us-central1-a \
    --vm-count=10

API

Na API, construa uma POST solicitação para o reservations.resize e inclua o novo specificSkuCount no corpo da solicitação. O corpo da solicitação a seguir atualiza a contagem de VMs da reserva para 10.

POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/reservations/<var>RESERVATION_NAME</var>/resize

{"specificSkuCount": "10"}

A solicitação de atualização será bem-sucedida se, no momento da solicitação, houver recursos suficientes na zona de destino e uma cota suficiente na região de destino.

Como modificar os projetos do consumidor para uma reserva compartilhada

Para modificar os projetos do consumidor de uma reserva compartilhada, use o console, a CLI gcloud ou a API Compute Engine. Para ver os projetos com que uma reserva é compartilhada, descreva a reserva.

Console

  1. No Console do Google Cloud, acesse a página Descontos por uso contínuo.

    Acesse "Descontos por uso contínuo"

  2. Selecione a guia Reservas.

  3. Clique no nome da reserva compartilhada em que você quer modificar os projetos do consumidor.

  4. Clique em Editar.

  5. Modifique a lista de Projetos selecionados:

    • Para interromper o compartilhamento da reserva com um projeto de consumidor específico, clique em Excluir ao lado do Nome do projeto.
    • Para compartilhar a reserva com mais projetos, clique em Adicionar projetos e selecione os projetos da organização do projeto proprietário com que você quer compartilhar a reserva.
  6. Clique em Salvar para confirmar suas modificações na reserva compartilhada.

gcloud

Com a CLI gcloud, é possível alterar a lista de projetos que podem consumir uma reserva compartilhada adicionando projetos, removendo projetos ou substituindo a lista inteira.

  • Para adicionar um ou mais projetos à lista de projetos que podem consumir uma reserva compartilhada, use o comando gcloud compute reservations update com a sinalização --add-share-with.

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

    Substitua:

    • RESERVATION_NAME: o nome da reserva compartilhada que você quer modificar.
    • ZONE: a zona em que a reserva foi criada.
    • OWNER_PROJECT_ID, o ID do projeto do proprietário, que é o projeto usado para criar essa reserva.
    • CONSUMER_PROJECT_IDS: uma lista separada por vírgulas de um ou mais IDs de projeto com os quais você quer compartilhar essa reserva; por exemplo: project-1,project-2. Não inclua o OWNER_PROJECT_ID, que já tem permissão consumir essa reserva por padrão.
  • Para remover um ou mais projetos da lista de projetos que podem consumir uma reserva compartilhada, use o comando gcloud compute reservations update com a sinalização --remove-share-with.

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

    Substitua:

    • RESERVATION_NAME: o nome da reserva compartilhada que você quer modificar.
    • ZONE: a zona em que a reserva foi criada.
    • OWNER_PROJECT_ID, o ID do projeto do proprietário, que é o projeto usado para criar essa reserva.
    • CONSUMER_PROJECT_IDS: uma lista separada por vírgulas de um ou mais IDs de projeto com os quais você quer parar de compartilhar essa reserva; por exemplo: project-1,project-2. Não é possível parar de compartilhar esta reserva com OWNER_PROJECT_ID.
  • Para substituir a lista de projetos que podem consumir uma reserva compartilhada, use o comando gcloud compute reservations update com a sinalização --share-with.

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

    Substitua:

    • RESERVATION_NAME: o nome da reserva compartilhada que você quer modificar.
    • ZONE: a zona em que a reserva foi criada.
    • OWNER_PROJECT_ID, o ID do projeto do proprietário, que é o projeto usado para criar essa reserva.
    • CONSUMER_PROJECT_IDS: uma lista separada por vírgulas de um ou maisIDs de projetos todos os projetos que poderão ser consumidos essa reserva. Por exemplo, project-1,project-2 de dados. Inclua os IDs de projeto de consumidor com os quais você quer continuar compartilhando essa reserva e omita os IDs de projeto com os quais você quer parar de compartilhar essa reserva. Em seguida, adicione todos os novos IDs de projeto do consumidor com os quais você também quer compartilhar essa reserva. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o OWNER_PROJECT_ID, que já tem permissão consumir essa reserva por padrão.

API

Na API, crie uma solicitação PATCH para o método reservations.update. No corpo da solicitação, use o campo shareSettings.projectMap para substituir a lista de projetos com os quais essa reserva é compartilhada.

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

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

Substitua:

  • OWNER_PROJECT_ID, o ID do projeto do proprietário, que é o projeto usado para criar essa reserva.
  • ZONE: a zona em que a reserva foi criada.
  • RESERVATION_NAME: o nome da reserva que você quer modificar. No momento, essa precisa ser uma reserva compartilhada.
  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2: os IDs de projeto com um ou mais projetos com os quais você quer compartilhar essa reserva. Inclua os IDs de projeto de consumidor com os quais você quer continuar compartilhando essa reserva e omita os IDs de projeto com os quais você quer parar de compartilhar essa reserva. Em seguida, adicione todos os novos IDs de projeto do consumidor com os quais você também quer compartilhar essa reserva. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o OWNER_PROJECT_ID, que já tem permissão consumir essa reserva por padrão.

Depois de modificar quais projetos podem consumir uma reserva, o consumo dela pode mudar. Por exemplo, todos os projetos do consumidor removidos param de consumir recursos dessa reserva. Além disso, se essa reserva tiver sido configurada para ser aplicada automaticamente a qualquer instância nova ou atual que corresponda às propriedades da reserva (o comportamento padrão), qualquer projeto de consumidor adicionado poderá começar a consumir recursos desse reserva. Se você quiser monitorar o consumo dessa reserva, consulte Como listar e descrever reservas.

Como excluir uma reserva

É possível excluir reservas que não estão vinculadas a um compromisso usando o console, a CLI gcloud ou a API.

Console

  1. No console, acesse a página Descontos por compromisso de uso.

    Acesse "Descontos por uso contínuo"

  2. Clique em Reservas para ver uma lista delas.

  3. Marque a caixa de seleção ao lado de cada reserva que você quer excluir.

  4. Clique em Excluir reserva.

gcloud

É possível liberar reservas usando o comando delete:

gcloud compute reservations delete <var>RESERVATION_NAME</var> --zone <var>ZONE</var>

Substitua:

  • RESERVATION_NAME: o nome do endpoint que você quer excluir.
  • ZONE: a zona em que está localizada a VM.

API

Na API, crie uma solicitação DELETE para o método reservation.delete.

DELETE https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/reservations/<var>RESERVATION_NAME</var>

Substitua:

  • PROJECT_ID, o ID do projeto que você usou para criar essa reserva.
  • RESERVATION_NAME: o nome do endpoint que você quer excluir.
  • ZONE: a zona em que está localizada a VM.

Depois que o comando de exclusão for concluído com sucesso, você não será mais cobrado pela reserva, e os recursos não serão mais reservados para você. A exclusão de uma reserva não tem efeito em nenhuma instância em execução vinculada a essa reserva. Você ainda é cobrado por essas instâncias.

Como combinar reservas com descontos por uso contínuo

Um desconto por uso contínuo fornece um contrato de um ou três anos com desconto, mas não reserva capacidade em uma zona específica. Uma reserva garante que a capacidade seja mantida em uma zona específica, mesmo que as VMs reservadas não estejam em execução. Ao combinar uma reserva com um compromisso, é possível conseguir recursos reservados e com desconto.

Por padrão, quando você cria uma reserva, qualquer desconto por uso contínuo aplicável para núcleos e memória se aplicará automaticamente às suas instâncias de VM. No entanto, para receber o desconto em GPUs e SSDs locais, é preciso criar uma reserva para esses recursos ao comprar o compromisso.

Depois de comprar um compromisso, não será possível cancelá-lo. Para mais informações, consulte Descontos por uso contínuo.

Como comprar um compromisso para GPUs ou SSDs locais

Para adquirir um compromisso para GPUs ou SSDs locais:

  • Adquira um compromisso N1 de uso geral. As GPUs são compatíveis apenas com os tipos de máquina N1, com exceção das GPUs A100.
  • Crie uma reserva que inclua GPUs ou SSDs locais enquanto estiver comprando o compromisso;
  • Você não precisa se comprometer com núcleos (indicados por vCPUs) de um tipo de máquina ou memória.

É preciso adquirir compromissos por tipos específicos de GPU. Por exemplo, é possível comprar NVIDIA P100 ou NVIDIA V100s, mas não é possível adquirir compromissos para as GPUs NVIDIA P100 e aplicá-las a outros tipos de GPU.

A quantidade de GPUs e SSDs locais reservada precisa ser igual ao valor com o qual você se comprometeu. Por exemplo, se você quer reservar quatro GPUs V100, é preciso se comprometer com quatro GPUs V100. No entanto, a quantidade de vCPU e memória que você reserva pode ser maior ou menor do que a que você se compromete.

Se você quer se comprometer somente com GPUs ou SSDs locais, é possível especificar 0 para compromissos de memória e vCPU. Mas a reserva que você associa ao seu compromisso precisa conter as mesmas GPUs e SSDs locais que o compromisso, bem como os tipos de máquina (com vCPUs e memória) que você quer reservar.

Compre um compromisso com uma reserva anexada usando o console, a CLI gcloud ou a API.

Console

Antes de adquirir um compromisso usando o console, selecione o projeto que você quer usar para adquirir o compromisso. Se o compartilhamento de descontos estiver ativado para uma conta de faturamento, será possível comprar o compromisso usando qualquer projeto dessa conta. Depois de selecionar o projeto, execute as seguintes etapas:

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

    Acesse "Descontos por uso contínuo"

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

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

  4. Para Tipo de compromisso, selecione Propósito geral.

  5. Escolha uma Duração de um ou três anos para o compromisso.

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

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

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

  9. Para criar uma reserva e anexá-la ao compromisso, clique em Adicionar um item na seção Reservas.

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

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

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

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

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

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

gcloud

Use o comando gcloud compute commmitments create para adquirir um compromisso, e inclua sinalizadores para criar uma reserva anexada.

Por exemplo, o compromisso a seguir inclui quatro GPUs e uma reserva a ser usada em duas instâncias n1-standard-32 em us-central1-a.

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-central1-a \
    --machine-type=n1-standard-32 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

Se você quiser reservar e se comprometer com GPUs ou SSDs locais sem se comprometer com vCPUs e memória, especifique 0 para as quantidades desses itens.

gcloud compute commitments create commitment-01 \
    --region=us-west2 \
    --resources=vcpu=0,memory=0 \
    --resources-accelerator=type=nvidia-tesla-p4,count=1 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-west2-b \
    --machine-type=n1-standard-2 \
    --accelerator=type=nvidia-tesla-p4,count=1 \
    --vm-count=1

Para criar várias reservas ao adquirir um compromisso, use um arquivo YAML que contenha as propriedades da reserva. Exemplo:

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

Por exemplo, o arquivo YAML a seguir contém duas reservas. A primeira reserva, res-01, contém uma instância n1-standard-2 com uma GPU e é uma reserva visada, o que significa que você precisa visar especificamente essa reserva, mencionando-a pelo nome, para usar suas instâncias reservadas. A segunda reserva, res-02, contém uma instância de VM n1-standard-2 com dois tipos de SSDs locais anexados.

- reservation: res-01
  reservation_zone: us-central1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-v100
- reservation: res-02
  reservation_zone: us-central1-a
  vm_count: 1
  machine_type: n1-standard-2
  local_ssd:
  - interface: scsi
    size: 375
  - interface: nvme
    size: 375

API

Use o método regionCommitments.insert e inclua o campo reservations para definir as propriedades da reserva. Por exemplo, o compromisso a seguir inclui quatro GPUs e uma reserva a ser usada em duas instâncias em us-central1-a.

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

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

Se você só quiser reservar e se comprometer com GPUs ou SSDs locais sem se comprometer com vCPUs e memória, especifique 0 para as quantidade de compromissos de vCPU e memória. Exemplo:

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

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
    {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

O compromisso será criado de maneira bem-sucedida somente se houver recursos suficientes na zona de destino, além de uma cota suficiente, no momento da solicitação.

Quando você cria um compromisso com uma reserva associada, não é possível excluí-la durante a vigência do compromisso. Quando o compromisso expirar, o Compute Engine excluirá automaticamente todas as reservas anexadas.

Se você precisa transferir GPUs ou SSDs locais através de reservas comprometidas, consulte Como modificar reservas vinculadas a compromissos.

Como modificar reservas anexadas a compromissos

Se um compromisso tiver uma ou mais reservas com GPUs ou SSDs locais, será possível usar a CLI gcloud ou a API para transferir GPUs ou SSDs locais nessas reservas. Por exemplo, é possível mover as GPUs de uma reserva para outra nova.

Limitações:

  • Só é possível mover recursos entre duas reservas. Uma é a reserva de origem e a outra é a de destino. A reserva de origem já precisa existir. O destino pode ser uma reserva atual ou nova.
  • As reservas de origem e destino precisam estar na mesma zona.
  • Não é possível modificar as propriedades do recurso em reservas atuais. Só é possível transferir recursos atuais de uma reserva para outra.
  • A quantidade total de GPUs e SSDs locais precisa permanecer constante.
  • Só é possível alterar 100 VMs por solicitação. Se quiser atualizar um número maior, chame a API várias vezes ou entre em contato com o suporte do Google Cloud.
  • Não é possível transferir vCPUs ou memória, ou modificar outras propriedades de reservas vinculadas.

gcloud

Use o comando gcloud beta compute commitments update-reservations para atualizar reservas anexadas a compromissos.

Por exemplo, suponha que você crie um compromisso com a reserva a seguir:

  • res-1 tem quatro instâncias n1-standard-2, cada uma com uma GPU P100 (um total de oito vCPUs e quatro GPUs P100). O total de recursos reservados inclui as quatro GPUs P100.

Crie o compromisso de exemplo com o seguinte comando:

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

em que o arquivo one-reservation.yaml contém o seguinte:

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 4
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

É possível atualizar o compromisso de exemplo para transferir recursos de compromisso entre diferentes reservas. Neste exemplo, suponha que você queira transferir alguns recursos confirmados de res-1 para uma segunda reserva nova, res-2. É possível fazer isso da seguinte maneira:

  • Modifique res-1 para ter uma instância n1-standard-2 com uma GPU P100 (duas vCPUs).
  • Adicione res-2 para ter três instâncias n1-standard-2, cada uma com uma GPU P100 (um total de seis vCPUs e três GPUs P100).

O número total de GPUs reservadas dentro do compromisso permanece constante em quatro.

Para atualizar o exemplo, use o comando a seguir:

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

em que o arquivo two-reservations.yaml contém o seguinte:

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100
- reservation: res-2
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 3
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

API

Use o método regionCommitments.updateReservations.

Por exemplo, suponha que você crie um compromisso com a reserva a seguir:

  • res-1 tem 4 instâncias n1-standard-2, cada uma com uma GPU nvidia-tesla-p100 (quatro vCPUs e quatro GPUs P100).

Neste exemplo, o total de recursos reservados inclui quatro GPUs P100.

Crie o compromisso de exemplo com o seguinte comando:

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

{
  "name": "my-commitment-with-reservation",
  "plan": "TWELVE_MONTH",
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "4",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ],
  "resources":
  [
    {
      "amount": "10",
      "type": "VCPU"
    },
    {
      "amount": "32768",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ]
}

É possível atualizar o compromisso de exemplo para transferir recursos de compromisso entre diferentes reservas. Neste exemplo, suponha que você queira transferir alguns recursos confirmados de res-1 para uma segunda reserva nova, res-2. É possível fazer isso da seguinte maneira:

  • Modifique res-1 para ter 2 instâncias n1-standard-2, cada uma com duas GPUs P100 (duas GPUs vCPU e duas P100).
  • Adicione res-2 para ter 2 instâncias n1-standard-2, cada uma com uma GPU P100 (quatro vCPUs e duas GPUs P100).

O número total de GPUs reservadas dentro do compromisso permanece constante em quatro.

Para atualizar o exemplo, use o comando a seguir:

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

{
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    },
    {
      "name": "res-2",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ]
}

Como exibir relatórios de uso de reserva

É possível exportar relatórios detalhados de uso do Compute Engine para um bucket do Cloud Storage usando o recurso de exportação de uso. Consulte Como exibir relatórios de uso para receber instruções.

O relatório de uso mostra:

  • recursos reservados que estão em uso. Essas entradas aparecem como recursos normais de vCPU, memória, GPU e SSD local;
  • recursos reservados que não estão em uso. Essas entradas têm nomes normais de SKU e URIs de recurso de reserva;
  • total de recursos reservados. Essas entradas têm nomes de SKU de reserva e URIs de recurso de reserva. Não há custos associados a essas entradas. Use essas entradas para calcular quanto de suas reservas você está usando.
Medição Formato MeasurementId Formato Resource URI
Recursos reservados que estão em uso com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/RESOURCE_TYPE/RESOURCE_NAME.

Por exemplo, https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance
Recursos reservados que não estão em uso com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME.

Por exemplo, https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-a/reservations/my-reservation
Total de recursos reservados com.google.cloud/services/compute-engine/ReservationSKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME.

Por exemplo, https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-a/reservations/my-reservation

Por exemplo, no seguinte snippet de um relatório de uso para uma reserva chamada my-reservation:

  • A linha 1 mostra a RAM reservada atualmente em uso. O ResourceId da linha mostra que essa RAM é usada por uma instância chamada my-instance.
  • A linha 2 mostra a RAM reservada que não está em uso. O ResourceId da linha mostra que essa RAM reservada mantida por my-reservation; ela ainda não é usada por nenhuma instância.
  • A linha 3 mostra o total de RAM reservada da reserva.
Report Date,MeasurementId,Quantity,Unit,Resource URI,ResourceId,Location
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/instances/my-instance,1775485842510981624,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/ReservationN2StandardRam,333940149714944,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
...

A seguir