Crie um MIG para cargas de trabalho de HPC com consumo associado a reservas


Este tutorial mostra como criar um grupo de instâncias gerido (MIG) que usa um tipo de máquina H4D. O MIG usa o modelo de aprovisionamento associado a reservas para obter recursos de computação.

A criação de um GIG permite-lhe gerir várias máquinas virtuais (VMs) como uma única entidade. Cada VM num MIG baseia-se num modelo de instância. Ao gerirem automaticamente as VMs no grupo, os MIGs oferecem elevada disponibilidade e escalabilidade. Para saber mais sobre os MIGs, consulte o artigo Grupos de instâncias geridas.

Para saber mais sobre as opções de criação de VMs de HPC e clusters de HPC, consulte o artigo Vista geral da criação de clusters de HPC.

Este tutorial destina-se a engenheiros de HPC, administradores e operadores de plataformas, bem como a especialistas em dados e MPI que tenham interesse em criar um grupo de instâncias de HPC interligadas para executar as respetivas cargas de trabalho. As instâncias resultantes não usam um orquestrador para a gestão de instâncias nem para o agendamento de tarefas.

Se quiser criar um grupo de instâncias geridas, mas não precisar de criar uma implementação densa de instâncias, consulte os cenários básicos para criar grupos de instâncias geridas (MIGs).

Objetivos

  • Reservar blocos de capacidade para as instâncias de VM.
  • Opcional: crie redes de nuvem virtual privada (VPC).
  • Opcional: crie uma política de carga de trabalho.
  • Crie um modelo de instância.
  • Crie um MIG através de um dos seguintes métodos:
    • Crie um MIG com um tamanho de destino.
    • Crie um MIG e um pedido de redimensionamento.
  • Limpe os recursos que criou.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

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

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the required API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable compute.googleapis.com
  8. Install the Google Cloud CLI.

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

  10. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  11. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the required API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable compute.googleapis.com
  14. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/compute.instanceAdmin.v1,roles/compute.networkAdmin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  15. Capacidade de reserva

    Para usar os comandos neste tutorial, tem de reservar a capacidade para criar as instâncias no MIG.

    Crie uma reserva futura para blocos de capacidade

    Esta ação permite-lhe reservar blocos de capacidade durante uma duração definida, a partir de uma data e hora específicas à sua escolha. A reserva reserva blocos ou sub-blocos de capacidade num cluster, o que permite implementações densas de instâncias de VM.

    Para criar uma reserva futura para uma implementação densa, o processo é o seguinte:

    1. Siga o processo para reservar capacidade contactando a sua equipa da conta na documentação do hipercomputador de IA. No seu pedido de reserva futuro, forneça as informações conforme documentado, com as seguintes exceções:

      • Tipo de máquina: especifique o tipo de máquina H4D h4d-highmem-192-lssd.
      • Zona: especifique uma das zonas onde as instâncias H4D estão disponíveis, conforme documentado na tabela Regiões e zonas disponíveis. Para apresentar as zonas disponíveis apenas para H4D, na lista Selecionar uma série de máquinas, selecione H4D.
      • Tipo de agendamento de manutenção: para instâncias H4D, pode especificar GROUPED ou INDEPENDENT.
      • Modo operacional de reserva: para instâncias H4D, especifique o valor HIGHLY_AVAILABLE_CAPACITY.
    2. A quota é aumentada automaticamente antes de a capacidade ser disponibilizada. Não é necessária nenhuma ação da sua parte.

    3. Quando cria o modelo de instância, especifica o modelo de aprovisionamento associado à reserva. As instâncias de VM no GIG são aprovisionadas a partir da sua capacidade reservada.

    É-lhe cobrado o período de reserva completo, quer use ou não os recursos reservados durante todo o período. Para mais informações, consulte o artigo Faturação de reservas.

    Crie uma reserva futura no modo de calendário

    Se precisar de usar a capacidade reservada durante menos de 90 dias, pode criar uma reserva futura no modo de calendário através do Dynamic Workload Scheduler. Para receber recursos de reserva futuros, o processo é o seguinte:

    1. Pesquise a capacidade disponível e reserve recursos através da Google Cloud consola, da CLI gcloud ou da API Compute Engine.
    2. Não é cobrada nenhuma quota e não é necessária nenhuma ação da sua parte.
    3. Quando cria o modelo de instância, especifica o modelo de aprovisionamento associado à reserva. As instâncias de VM no GIG são aprovisionadas a partir da sua capacidade reservada.

    É-lhe cobrado o período de reserva completo, quer use ou não os recursos reservados durante todo o período. Para mais informações, consulte os preços do Dynamic Workload Scheduler.

    Opcional: crie redes VPC

    A menos que opte por desativá-la, cada projeto tem uma rede predefinida, que pode ser usada para fornecer conetividade de rede às suas instâncias. Quando cria uma VM, pode especificar uma rede de VPC e uma sub-rede. Se omitir esta configuração, são usadas a rede e a sub-rede predefinidas.

    As instâncias H4D podem ser configuradas para usar o RDMA na nuvem. O RDMA na nuvem permite capacidades de mensagens fiáveis de baixa latência através de um controlador de rede IRDMA que suporta o acesso direto à memória (RDMA) remoto entre instâncias do Compute Engine.

    Para este tutorial:

    • Se quiser configurar as instâncias H4D para usar o RDMA na nuvem, conclua os passos nesta secção.
    • Se não quiser usar o RDMA na nuvem, pode ignorar esta secção e usar a rede predefinida.

    As instâncias com RDMA requerem, no mínimo, duas interfaces de rede (NICs):

    • Tipo de NIC GVNIC: usa o controlador gve para TCP/IP e tráfego da Internet para comunicação normal entre VMs e entre VMs e a Internet.
    • Tipo de NIC IRDMA: usa controladores IDPF/iRDMA para rede RDMA na nuvem entre instâncias.

    As instâncias que usam o RDMA na nuvem só podem ter uma interface IRDMA. Pode adicionar até oito interfaces de rede GVNIC adicionais para um total de 10 NICs por instância.

    Para configurar as redes VPC do Falcon para usar com as suas instâncias, pode seguir as instruções documentadas ou usar o script fornecido.

    Guias de instruções

    Para criar as redes, pode usar as seguintes instruções:

    Script

    Pode criar até nove interfaces de rede GVNIC e uma interface de rede IRDMA por instância. Cada interface de rede tem de ser anexada a uma rede separada. Para criar as redes, pode usar o seguinte script, que cria duas redes para GVNIC e uma rede para IRDMA.

    1. Opcional: antes de executar o script, liste os perfis de rede RDMA para verificar se existe um disponível.
        gcloud beta compute network-profiles list
        
    2. Copie o seguinte código e execute-o numa janela de shell do Linux.

        #!/bin/bash
        # Set the number of GVNIC interfaces to create. You can create up to 9.
        NUM_GVNIC=NUMBER_OF_GVNIC
      
        # Create standard VPC (networks and subnets) for the GVNIC interfaces
          for N in $(seq 0 $(($NUM_GVNIC - 1))); do
            gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
                --subnet-mode=custom
      
            gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
                --network=GVNIC_NAME_PREFIX-net-$N \
                --region=REGION \
                --range=10.$N.0.0/16
      
            gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
                --network=GVNIC_NAME_PREFIX-net-$N \
                --action=ALLOW \
                --rules=tcp:0-65535,udp:0-65535,icmp \
                --source-ranges=10.0.0.0/8
        done
      
        # Create SSH firewall rules
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
            --network=GVNIC_NAME_PREFIX-net-0 \
            --action=ALLOW \
            --rules=tcp:22 \
            --source-ranges=IP_RANGE
      
        # Optional: Create a firewall rule for the external IP address for the
        #  first GVNIC network interface
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
            --network=GVNIC_NAME_PREFIX-net-0 \
            --action=ALLOW \
            --rules=icmp \
            --source-ranges=IP_RANGE
      
        # Create a network for the RDMA over Falcon network interface
        gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \
            --network-profile=ZONE-vpc-falcon \
            --subnet-mode custom
      
        # Create a subnet for the RDMA network
        gcloud beta compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
            --network=RDMA_NAME_PREFIX-irdma \
            --region=REGION \
            --range=10.2.0.0/16  # offset to avoid overlap with GVNIC subnet ranges
        

      Substitua o seguinte:

      • NUMBER_OF_GVNIC: o número de interfaces GVNIC a criar. Especifique um número de 1 a 9.
      • GVNIC_NAME_PREFIX: o prefixo do nome a usar para a rede e a sub-rede da VPC padrão que usam um tipo de NIC GVNIC.
      • REGION: a região onde quer criar as redes. Tem de corresponder à zona especificada para a flag --network-profile quando cria a rede RDMA. Por exemplo, se especificar a zona como europe-west4-b, a sua região é europe-west4.
      • IP_RANGE: o intervalo de endereços IP fora da rede VPC a usar para as regras de firewall SSH. Como prática recomendada, especifique os intervalos de endereços IP específicos a partir dos quais precisa de permitir o acesso, em vez de todas as origens IPv4 ou IPv6. Não use 0.0.0.0/0 nem ::/0 como um intervalo de origem, porque isso permite tráfego de todas as origens IPv4 ou IPv6, incluindo origens fora de Google Cloud.
      • RDMA_NAME_PREFIX: o prefixo do nome a usar para a rede VPC e a sub-rede que usa o tipo de NIC IRDMA.
      • ZONE: a zona onde quer criar as redes e as instâncias de computação. Use us-central1-a ou europe-west4-b.
    3. Opcional: para verificar se os recursos da rede VPC foram criados com êxito, verifique as definições de rede na Google Cloud consola:

      1. Na Google Cloud consola, aceda à página Redes VPC.

        Aceda a redes de VPC

      2. Pesquise na lista as redes que criou no passo anterior.
      3. Para ver as sub-redes, as regras da firewall e outras definições de rede, clique no nome da rede.

    Opcional: crie uma política de carga de trabalho

    Se quiser que o Compute Engine coloque instâncias de VM num único bloco ou em blocos adjacentes, especifique o posicionamento de instâncias criando uma política de carga de trabalho. No entanto, se quiser que o Compute Engine coloque as suas instâncias num bloco específico, ignore este passo e indique o nome do bloco na afinidade de reserva quando criar o modelo de instância.

    Se já tiver uma política de carga de trabalho, pode reutilizá-la. Quando aplica uma política de carga de trabalho ao MIG, o Compute Engine faz tentativas de melhor esforço para criar instâncias o mais próximas possível umas das outras. Se a sua aplicação for sensível à latência e quiser que as instâncias estejam mais próximas (compactação máxima), especifique o campo maxTopologyDistance quando criar uma política de carga de trabalho.

    Não é possível atualizar uma política de carga de trabalho depois de a criar. Para fazer alterações a uma política de carga de trabalho, tem de criar uma nova.

    Para criar uma política de carga de trabalho, selecione uma das seguintes opções:

    gcloud

    Para criar uma política de carga de trabalho, use o comando gcloud compute resource-policies create workload-policy.

    • Para um posicionamento de VMs com o melhor esforço, especifique apenas a flag --type=high-throughput no comando:

      gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
          --type=high-throughput \
          --region=REGION
      
    • Para a colocação conjunta estrita de VMs, especifique a flag --max-topology-distance no comando:

      gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
          --type=high-throughput \
          --max-topology-distance=TOPOLOGY_DISTANCE \
          --region=REGION
      

    Substitua o seguinte:

    • WORKLOAD_POLICY_NAME: o nome da política de carga de trabalho.
    • REGION: a região onde quer criar a política de carga de trabalho. Especifique uma região na qual quer criar o MIG e o tipo de máquina que quer usar está disponível. Para informações sobre regiões e zonas, consulte o artigo Regiões e zonas disponíveis.

    REST

    Para criar uma política de carga de trabalho, faça um POST pedido ao método resourcePolicies.insert.

    • Para um posicionamento de VMs com base no melhor esforço, especifique apenas o campo type no pedido da seguinte forma:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
        {
          "name": "WORKLOAD_POLICY_NAME"
          "workloadPolicy": {
            "type": "HIGH_THROUGHPUT"
          }
        }
      
    • Para a colocação conjunta estrita de VMs, especifique o campo maxTopologyDistance no pedido da seguinte forma:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
        {
          "name": "WORKLOAD_POLICY_NAME"
          "workloadPolicy": {
            "type": "HIGH_THROUGHPUT",
            "maxTopologyDistance": "TOPOLOGY_DISTANCE"
          }
        }
      

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto
    • REGION: a região onde quer criar a política de carga de trabalho. Especifique uma região na qual quer criar o MIG e o tipo de máquina que quer usar está disponível. Para informações sobre regiões e zonas, consulte o artigo Regiões e zonas disponíveis.
    • WORKLOAD_POLICY_NAME: o nome da política de carga de trabalho.

    Crie um modelo de instância

    Para especificar as propriedades de instância e consumo de cada instância no MIG, crie um modelo de instância através de um dos seguintes métodos:

    gcloud

    Para criar um modelo de instância regional, use o comando gcloud compute instance-templates create.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --machine-type=MACHINE_TYPE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --instance-template-region=REGION \
        --boot-disk-type=hyperdisk-balanced \
        --boot-disk-size=DISK_SIZE \
        --scopes=cloud-platform \
        
    --network-interface=nic-type=GVNIC, \
          network=GVNIC_NAME_PREFIX-net-0, \
          subnet=GVNIC_NAME_PREFIX-sub-0, \
          stack-type=STACK_TYPE, \
          address=EXTERNAL_IPV4_ADDRESS \
    --network-interface=nic-type=GVNIC, \
          network=GVNIC_NAME_PREFIX-net-1, \
          subnet=GVNIC_NAME_PREFIX-sub-1,no-address \
    --network-interface=nic-type=IRDMA, \
          network=RDMA_NAME_PREFIX-irdma, \
          subnet=RDMA_NAME_PREFIX-irdma-sub, \
          stack-type=IPV4_ONLY,no-address \
        --reservation-affinity=specific \
        --reservation=RESERVATION \
        --provisioning-model=RESERVATION_BOUND \
        --instance-termination-action=DELETE \
        --maintenance-policy=TERMINATE
    
    

    Substitua o seguinte:

    • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
    • MACHINE_TYPE: o tipo de máquina H4D a usar para a instância.
    • IMAGE_FAMILY: a família de imagens da imagem do SO que quer usar. Para ver uma lista dos sistemas operativos suportados, consulte o artigo Sistemas operativos suportados.
    • IMAGE_PROJECT: o ID do projeto da imagem do SO.
    • REGION: a região onde quer criar o modelo de instância. Especifique uma região na qual o tipo de máquina que quer usar está disponível.
    • DISK_SIZE: o tamanho do disco de arranque em GiB.
    • GVNIC_NAME_PREFIX: o prefixo do nome que usou quando criou as redes VPC e as sub-redes padrão para as interfaces gVNIC.

      Se estiver a usar a rede predefinida, inclua apenas um único campo --network-interface com o campo nic-type definido como GVNIC. Além disso, omita as definições network e subnetwork para esta interface de rede.

    • STACK_TYPE: Opcional: o tipo de pilha a usar para a interface gVNIC. Especifique IPV4_ONLY ou IPV4_IPV6. Se não especificar um valor, IPV4_ONLY é usado por predefinição.
    • EXTERNAL_IPV4_ADDRESS: Opcional: um endereço IPv4 externo estático a usar com a interface de rede gVNIC. Tem de ter reservado um endereço IPv4 externo anteriormente. Efetue um dos seguintes passos:

      • Especifique um endereço IPv4 válido da sub-rede.
      • Use a flag no-address se não quiser que a interface de rede tenha um endereço IP externo.
      • Especifique address='' se quiser que a interface de rede receba um endereço IP externo efémero.

      Para especificar um endereço IPv6 externo para a interface de rede GVNIC, use a flag --external-ipv6-address.

    • RDMA_NAME_PREFIX: o prefixo do nome que usou quando criou a rede VPC e a sub-rede para a interface de rede IRDMA.

      Se não estiver a usar o RDMA na nuvem com as suas instâncias H4D, omita o campo --network-interface para a interface IRDMA.

    • RESERVATION: o nome da reserva que quer usar.

      RESERVATION: o nome da reserva ou um bloco específico numa reserva. Para obter o nome da reserva ou os blocos disponíveis, consulte o artigo Veja a capacidade reservada. Com base no seu requisito de posicionamento de instâncias, escolha uma das seguintes opções:
      • Para criar instâncias em vários blocos ou num único bloco:

        projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME

        Além disso, para um único bloco, crie o MIG aplicando uma política de carga de trabalho que especifica uma colocação de blocos (maxTopologyDistance=BLOCK) . Em seguida, o Compute Engine aplica a política à reserva e cria instâncias no mesmo bloco.

      • Para criar instâncias num bloco específico:

        projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME

    REST

    Para criar um modelo de instância regional, faça um pedido POST ao método regionInstanceTemplates.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
    {
      "name":"INSTANCE_TEMPLATE_NAME",
      "properties":{
        "disks":[
          {
            "boot":true,
            "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "mode":"READ_WRITE",
            "type":"PERSISTENT"
          }
        ],
        "machineType":"MACHINE_TYPE",
        
            "networkInterfaces": [
            {
              "network": "GVNIC_NAME_PREFIX-net-0",
              "subnetwork": "GVNIC_NAME_PREFIX-sub-0",
              "accessConfigs": [
                {
                    "type": "ONE_TO_ONE_NAT",
                    "name": "External IP",
                    "natIP": "EXTERNAL_IPV4_ADDRESS"
                }
              ],
              "stackType": "IPV4_ONLY",
              "nicType": "GVNIC",
          },
          {
              "network": "GVNIC_NAME_PREFIX-net-1",
              "subnetwork": "GVNIC_NAME_PREFIX-sub-1",
              "stackType": "IPV4_ONLY",
              "nicType": "GVNIC",
          },
          {
              "network": "RDMA_NAME_PREFIX-irdma",
              "subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
              "stackType": "IPV4_ONLY",
              "nicType": "IRDMA",
          }
        ],
    ,
        "reservationAffinity":{
            "consumeReservationType":"SPECIFIC_RESERVATION",
            "key":"compute.googleapis.com/reservation-name",
            "values":[
              "RESERVATION"
            ]
          },
        "scheduling":{
            "provisioningModel":"RESERVATION_BOUND",
            "instanceTerminationAction":"DELETE",
            "onHostMaintenance": "TERMINATE",
            "automaticRestart":true
          }
      }
    }
    

    Substitua o seguinte:

    • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
    • MACHINE_TYPE: o tipo de máquina a usar para a instância. Especifique um tipo de máquina H4D. Para mais informações, consulte os tipos de máquinas H4D.
    • IMAGE_FAMILY: a família de imagens da imagem do SO que quer usar. Para ver uma lista dos sistemas operativos suportados, consulte o artigo Sistemas operativos suportados.
    • IMAGE_PROJECT: o ID do projeto da imagem do SO.
    • REGION: a região onde quer criar o modelo de instância. Especifique uma região na qual o tipo de máquina que quer usar está disponível. Para obter informações sobre regiões, consulte o artigo Regiões e zonas.
    • DISK_SIZE: o tamanho do disco de arranque em GiB.
    • GVNIC_NAME_PREFIX: o prefixo do nome que usou quando criou as redes VPC e as sub-redes padrão para as interfaces gVNIC.

      Se estiver a usar a rede predefinida, inclua apenas um único campo --network-interface com o campo nic-type definido como GVNIC. Além disso, omita as definições network e subnetwork para esta interface de rede.

    • EXTERNAL_IPV4_ADDRESS: Opcional: um endereço IPv4 externo estático a usar com a interface de rede gVNIC. Tem de ter reservado um endereço IPv4 externo anteriormente.

      Para especificar um endereço IPv6 externo para a interface de rede GVNIC, use a flag --external-ipv6-address.

    • RDMA_NAME_PREFIX: o prefixo do nome que usou quando criou a rede VPC e a sub-rede para a interface de rede IRDMA.

      Se não estiver a usar o RDMA na nuvem com as suas instâncias H4D, omita o campo --network-interface para a interface IRDMA.

    • RESERVATION: o nome da reserva que quer usar.

      RESERVATION: o nome da reserva ou um bloco específico numa reserva. Para obter o nome da reserva ou os blocos disponíveis, consulte o artigo Veja a capacidade reservada. Com base no seu requisito de posicionamento de instâncias, escolha uma das seguintes opções:
      • Para criar instâncias em vários blocos ou num único bloco:

        projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME

        Além disso, para um único bloco, crie o MIG aplicando uma política de carga de trabalho que especifica uma colocação de blocos (maxTopologyDistance=BLOCK) . Em seguida, o Compute Engine aplica a política à reserva e cria instâncias no mesmo bloco.

      • Para criar instâncias num bloco específico:

        projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME

    Depois de criar o modelo de instância, pode ver o modelo para ver o respetivo ID e rever as propriedades da instância.

    Crie um MIG

    Consoante os requisitos da carga de trabalho, pode criar um MIG numa das seguintes configurações:

    Crie um MIG com um tamanho de destino

    Se puder iniciar a tarefa sem criar todas as instâncias de VM de uma só vez, então crie um MIG com um tamanho de destino. O tamanho de destino determina o número de instâncias no MIG. O GIG começa a criar instâncias com base na disponibilidade de recursos atual. Se algum recurso estiver temporariamente indisponível, o MIG tenta continuamente criar instâncias para atingir o tamanho alvo.

    Para criar um MIG com um tamanho alvo, selecione uma das seguintes opções:

    gcloud

    Para criar um MIG com um tamanho alvo especificado, use o comando instance-groups managed create.

    Neste passo, os comandos para criar um GIG usam uma política de carga de trabalho para especificar o posicionamento da VM. Se não quiser usar uma política de carga de trabalho, remova a flag --workload-policy.

    Crie um GIG zonal ou regional da seguinte forma:

    • Para criar um MIG zonal, use o seguinte comando:
      gcloud compute instance-groups managed create MIG_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=TARGET_SIZE \
        --workload-policy=WORKLOAD_POLICY_URL \
        --zone=ZONE
      
    • Para criar um MIG regional, use o seguinte comando:
      gcloud compute instance-groups managed create MIG_NAME \
          --template=INSTANCE_TEMPLATE_URL \
          --size=TARGET_SIZE \
          --workload-policy=WORKLOAD_POLICY_URL \
          --region=REGION
      
    Substitua o seguinte:
    • MIG_NAME: o nome do MIG.
    • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que quer usar para criar VMs no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
      • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
      • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
    • TARGET_SIZE: o número de VMs que quer no MIG.
    • WORKLOAD_POLICY_URL: Opcional: o URL da política de carga de trabalho. Se não quiser usar uma política de carga de trabalho, pode remover a flag --workload-policy.
    • ZONE: a zona na qual quer criar o MIG. Se usar uma política de carga de trabalho, especifique uma zona na região da política.
    • REGION: a região na qual quer criar o MIG. Se usar uma política de carga de trabalho, especifique a mesma região que a da política. Para um MIG regional, em vez de uma região, pode especificar as zonas nessa região através da flag --zones.

    REST

    Para criar um MIG com um tamanho de destino especificado, faça um pedido POST da seguinte forma.

    Neste passo, os pedidos para criar um GIG usam uma política de carga de trabalho para especificar o posicionamento de VMs. Se não quiser usar uma política de carga de trabalho, remova o campo resourcePolicies.workloadPolicy do corpo do pedido.

    Crie um GIG zonal ou regional da seguinte forma:

    • Para criar um MIG zonal, faça um pedido POST ao método instanceGroupManagers.insert.
      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
      {
        "versions": [
          {
            "instanceTemplate": "INSTANCE_TEMPLATE_URL"
          }
        ],
        "name": "MIG_NAME",
        "instanceTemplate": "INSTANCE_TEMPLATE_URL",
        "targetSize": "TARGET_SIZE",
        "resourcePolicies": {
          "workloadPolicy": WORKLOAD_POLICY_URL
        }
      }
      
    • Para criar um GIG regional, faça um pedido POST ao regionInstanceGroupManagers.insert método.
        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
        {
          "versions": [
            {
              "instanceTemplate": "INSTANCE_TEMPLATE_URL"
            }
          ],
          "name": "MIG_NAME",
          "instanceTemplate": "INSTANCE_TEMPLATE_URL",
          "targetSize": "TARGET_SIZE",
          "resourcePolicies": {
            "workloadPolicy": WORKLOAD_POLICY_URL
          }
        }
      
    Substitua o seguinte:
    • PROJECT_ID: o ID do projeto.
    • ZONE: a zona na qual quer criar o MIG. Se usar uma política de carga de trabalho, especifique uma zona na região da política.
    • REGION: a região na qual quer criar um MIG. Se usar uma política de carga de trabalho, especifique a mesma região que a da política.
    • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que quer usar para criar VMs no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
      • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
      • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
    • MIG_NAME: o nome do MIG.
    • TARGET_SIZE: o número de VMs que quer no MIG.
    • WORKLOAD_POLICY_URL: opcional: o URL da política de carga de trabalho. Se não quiser usar uma política de carga de trabalho, pode remover o campo resourcePolicies.workloadPolicy.

    Crie um MIG e um pedido de redimensionamento

    Para criar todas as instâncias pedidas ao mesmo tempo, crie um MIG sem instâncias. Depois de criar o MIG vazio, cria um pedido de redimensionamento no MIG. Quando os recursos estão disponíveis para criar todas as instâncias de uma só vez, o pedido de redimensionamento adiciona as instâncias ao MIG.

    Para criar um MIG e um pedido de redimensionamento, selecione uma das seguintes opções:

    gcloud

    Neste passo, os comandos para criar um GIG usam uma política de carga de trabalho para especificar o posicionamento da VM. Se não quiser usar uma política de carga de trabalho, remova a flag --workload-policy.

    Crie um GIG zonal ou regional e um pedido de redimensionamento da seguinte forma:

    • Para criar um MIG zonal e um pedido de redimensionamento no mesmo, faça o seguinte:

      1. Crie um MIG zonal com o comando instance-groups managed create da seguinte forma.

        gcloud compute instance-groups managed create MIG_NAME \
            --template=INSTANCE_TEMPLATE_URL \
            --size=0 \
            --workload-policy=WORKLOAD_POLICY_URL \
            --zone=ZONE
        
      2. Crie um pedido de redimensionamento no GIG zonal através do comando instance-groups managed resize-requests create da seguinte forma:

        gcloud compute instance-groups managed resize-requests create MIG_NAME \
            --resize-request=RESIZE_REQUEST_NAME \
            POPULATION_METHOD \
            --zone=ZONE
        
    • Para criar um GIG regional e um pedido de redimensionamento no mesmo, faça o seguinte:

      1. Crie um MIG regional com o comando instance-groups managed create da seguinte forma.

        gcloud compute instance-groups managed create MIG_NAME \
            --template=INSTANCE_TEMPLATE_URL \
            --size=0 \
            --workload-policy=WORKLOAD_POLICY_URL \
            --zones=ZONE \
            --target-distribution-shape=any-single-zone \
            --instance-redistribution-type=none
          
      2. Crie um pedido de redimensionamento no GIG regional através do comando beta instance-groups managed resize-requests create da seguinte forma:

        gcloud beta compute instance-groups managed resize-requests create MIG_NAME \
            --resize-request=RESIZE_REQUEST_NAME \
            POPULATION_METHOD \
            --region=REGION
        

    Substitua o seguinte:

    • MIG_NAME: o nome do MIG.
    • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que quer usar para criar VMs no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
      • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
      • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
    • WORKLOAD_POLICY_URL: opcional: o URL da política de carga de trabalho. Se não quiser usar uma política de carga de trabalho, pode remover a flag --workload-policy.
    • ZONE: a zona na qual quer criar o MIG. Para um MIG regional, também tem de especificar uma zona. Esta zona tem de ser a zona que contém o perfil da sua rede VPC e tem de ser uma zona onde o tipo de máquina está disponível. Para mais informações, consulte a secção Limitações.
    • RESIZE_REQUEST_NAME: o nome do pedido de redimensionamento, que tem de ser exclusivo no MIG especificado. Caso contrário, a criação do pedido de redimensionamento falha.
    • POPULATION_METHOD: o método de adicionar instâncias ao MIG. Use uma das seguintes opções:

      • --resize-by=COUNT: adicionar o número especificado de instâncias ao MIG de uma só vez. Os nomes das instâncias são gerados automaticamente.
      • --instances=INSTANCE_NAME_LIST: adiciona instâncias com os nomes especificados ao MIG de uma só vez. Substitua INSTANCE_NAME_LIST por uma lista de nomes de instâncias separados por vírgulas. O número de nomes que fornecer determina o número de instâncias a criar com este pedido de redimensionamento.
    • REGION: a região em que o MIG está localizado.

    REST

    Neste passo, os pedidos para criar um GIG usam uma política de carga de trabalho para especificar o posicionamento de VMs. Se não quiser usar uma política de carga de trabalho, remova o campo resourcePolicies.workloadPolicy do corpo do pedido.

    Crie um GIG zonal ou regional e um pedido de redimensionamento da seguinte forma:

    • Para criar um GIG zonal e um pedido de redimensionamento no mesmo, faça o seguinte:
      1. Crie um GIG zonal fazendo um pedido POST ao método instanceGroupManagers.insert da seguinte forma.
        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
        {
          "versions": [
            {
              "instanceTemplate": "INSTANCE_TEMPLATE_URL"
            }
          ],
          "name": "MIG_NAME",
          "targetSize": 0,
          "resourcePolicies": {
            "workloadPolicy": WORKLOAD_POLICY_URL
          }
        }
        
      2. Crie um pedido de redimensionamento na GIG zonal fazendo um pedido POST ao método instanceGroupManagerResizeRequests.insert da seguinte forma:
        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/resizeRequests
        {
          "name": "RESIZE_REQUEST_NAME",
          POPULATION_METHOD
        }
        
    • Para criar um GIG regional e um pedido de redimensionamento no mesmo, faça o seguinte:
      1. Crie um GIG regional fazendo um pedido POST ao método regionInstanceGroupManagers.insert da seguinte forma.
        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
        {
          "versions": [
            {
              "instanceTemplate": "INSTANCE_TEMPLATE_URL"
            }
          ],
          "name": "MIG_NAME",
          "targetSize": 0,
          "distributionPolicy": {
            "targetShape": "ANY_SINGLE_ZONE",
            "zones": [
              {
                "zone": "projects/PROJECT_ID/zones/ZONE"
              }
            ]
          },
          "updatePolicy": {
            "instanceRedistributionType": "NONE"
          },
          "resourcePolicies": {
            "workloadPolicy": WORKLOAD_POLICY_URL
          }
        }
        
      2. Crie um pedido de redimensionamento no GIG regional fazendo um pedido POST ao método beta.regionInstanceGroupManagerResizeRequests.insert da seguinte forma:
        POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/resizeRequests
        {
          "name": "RESIZE_REQUEST_NAME",
          POPULATION_METHOD
        }
        

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto.
    • ZONE: a zona na qual quer criar o MIG. Para um MIG regional, também tem de especificar uma zona. Esta zona tem de ser a zona que contém o perfil da sua rede VPC e tem de ser uma zona onde o tipo de máquina está disponível. Para mais informações, consulte a secção Limitações.
    • REGION: a região na qual quer criar o MIG.
    • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que quer usar para criar VMs no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
      • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
      • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
    • MIG_NAME: o nome do MIG.
    • WORKLOAD_POLICY_URL: Opcional: o URL da política de carga de trabalho. Se não quiser usar uma política de carga de trabalho, pode remover o campo resourcePolicies.workloadPolicy.
    • RESIZE_REQUEST_NAME: o nome do pedido de redimensionamento, que tem de ser exclusivo no MIG especificado. Caso contrário, a criação do pedido de redimensionamento falha.
    • POPULATION_METHOD: o método de adicionar instâncias ao MIG. Use uma das seguintes opções:

      • "resizeBy":COUNT: substitua COUNT pelo número especificado de instâncias a adicionar ao MIG de uma só vez. Os nomes das instâncias são gerados automaticamente.
      • "instanceNames":INSTANCE_NAME_LIST: adicionar instâncias com os nomes especificados ao MIG de uma só vez. Substitua INSTANCE_NAME_LIST por uma lista de nomes de instâncias separados por vírgulas. O número de nomes que fornecer determina o número de instâncias a criar com este pedido de redimensionamento.

    Limpar

    Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

    Elimine o projeto

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    Elimine os recursos

    1. Elimine pedidos de redimensionamento num MIG.

    2. Elimine o MIG e as instâncias.

    3. Se o estado de eliminação automática dos discos tiver sido definido como False no modelo de instância, os discos não são eliminados automaticamente quando a instância de VM é eliminada. Pode eliminar os discos através de um dos seguintes métodos:

      Consola

      1. Na Google Cloud consola, aceda à página Discos.

      Aceda a Discos

      1. Selecione as linhas que contêm os discos que criou neste tutorial. Certifique-se de que a coluna Em utilização por está vazia para cada disco.

      2. Clique em Eliminar e, de seguida, clique em Eliminar para confirmar.

      gcloud

      Use o comandogcloud compute disks delete.

      gcloud compute disks delete DISK_NAME \
          --project PROJECT_ID --zone ZONE
      

      Substitua o seguinte:

      • DISK_NAME : o nome do disco a eliminar
      • PROJECT_ID: o ID do projeto que contém o disco
      • ZONE: a zona do disco

      REST

      Use o método disks.delete para eliminar os discos.

      DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME 
      

      Substitua o seguinte:

      • PROJECT_ID: o ID do projeto que contém o disco
      • ZONE: a zona do disco
      • DISK_NAME : o nome do disco a eliminar
    4. Elimine as estações.

    5. Elimine o modelo de instância.

    O que se segue?