Compartilhar grupos de nós de locatário individual


Os grupos de nós de locatário individual compartilhados são semelhantes aos grupos de nós de locatário individual locais. Por exemplo, os grupos de nós compartilhados custam o mesmo, consomem a mesma cota e residem em um projeto pai na hierarquia de recursos.

A diferença entre grupos de nós compartilhados e grupos de nós locais é que outros projetos na sua organização podem provisionar instâncias de máquina virtual (VM) nos grupos de nós compartilhados.

Compartilhar um grupo de nós em vários projetos ou uma organização pode ajudar você a fazer o seguinte:

  • Consolide grupos de nós que você gerencia em um único projeto e compartilhe esses nós com outros projetos ou com toda a organização

  • Reduzir custos excluindo nós após consolidar VMs de vários projetos em grupos de nós subutilizados

  • Gerenciar nós de locatário individual com uma única equipe

  • Compartilhe nós de locatário individual com projetos menores e retenha os limites de segurança e de controle de acesso entre esses projetos

  • Fazer uma migração em tempo real entre grupos de nós no mesmo projeto

  • Melhore a utilização dos seus grupos de nós e reduza o número de nós de manutenção reservados ao usar a política de manutenção Migrar no grupo de nós.

O diagrama a seguir mostra um grupo de nós compartilhado com outros projetos para que outros departamentos que gerenciam VMs nesses projetos possam provisionar VMs em um grupo de nós compartilhado.

Diagrama de um grupo de nós compartilhado entre projetos. Departamentos
            que gerenciam VMs em projetos diferentes podem provisionar VMs em um grupo de
            nós compartilhado.

Benefícios da utilização dos grupos de nós compartilhados

Na tabela a seguir, comparamos projetos que usam grupos de nós locais com projetos que usam grupos de nós compartilhados. Observe que a subutilização da vCPU diminui em projetos que usam grupos de nós compartilhados.

Configuração do projeto Grupos de nós locais Grupos de nós compartilhados
Projetos 10 10
vCPU / projeto 24 24
Grupos de nós 10 1
Nós / grupo de nós 1 3
vCPU / nó 80 80
Utilização / grupo de nós 24 80
Subutilização / Grupo de nós 56 0
Subutilização total 10 x 56 = 560 vCPUs 1 x 0 = 0 vCPU

Configurações para compartilhar grupos de nós

O Compute Engine usa as configurações a seguir para compartilhar grupos de nós e provisionar VMs nos grupos de nós compartilhados:

  • Uma configuração de compartilhamento que você define ao criar ou atualizar o grupo de nós de locatário individual. Para especificar se o grupo de nós precisa ser compartilhado com outros projetos ou com toda a organização, use as configurações da CLI gcloud (--share-setting, --share-with) ou as configurações REST (shareSetting, shareWith).

  • Um rótulo de afinidade de nó compute.googleapis.com/project padrão usado ao provisionar uma VM em um grupo de nós compartilhado usando rótulos de afinidade de nó. Para ver informações sobre os outros identificadores de afinidade do nó padrão, consulte Rótulos de afinidade padrão.

Considerações sobre a política de manutenção

Quando um grupo de nós usa a política de manutenção Migrar no grupo de nós, o Compute Engine reserva pelo menos um nó para eventos de migração em tempo real. Portanto, o nó pode ser usado. O grupo de nós precisa ter pelo menos dois nós. Não é possível programar VMs no nó reservado. Portanto, os grupos de nós com essa política de manutenção geralmente têm uma utilização geral menor. Isso faz com que as cargas de trabalho que exijam a política de manutenção Migrar dentro do grupo de nós sejam boas candidatas para o compartilhamento do grupo de nós, já que muitas vezes elas veem o maior benefício de uma utilização aprimorada.

Permissões e papéis do IAM

Tenha em mente as seguintes informações sobre papéis e permissões do IAM ao compartilhar um grupo de nós:

  • Se um grupo de nós for compartilhado com um projeto, qualquer usuário que possa criar VMs nos projetos listados ou na organização poderá provisionar VMs desses projetos para o grupo de nós compartilhado sem alterações nos papéis ou nas permissões do IAM.

  • O papel compute.soleTenantViewer do IAM permite listar e visualizar grupos de nós (CLI gcloud / REST). Não é possível modificar grupos de nós com esse papel. Qualquer usuário com esse papel ou com permissões para listar grupos de nós, independentemente das permissões de IAM na VM, pode ver o ID do projeto, o nome, o tipo de máquina e as informações sobre SSDs e GPUs locais para todas as VMs no grupo de nós.

Limitações

  • Limitações do regime de conformidade:

    • Qualquer que seja a permissão do IAM na VM, qualquer usuário com permissão para listar grupos de nós vai poder ver o ID do projeto, o nome e o tipo de máquina de todas as VMs no grupo. Portanto, devido ao risco de divulgação de informações entre projetos, os projetos com VMs provisionadas em grupos de nós compartilhados precisam estar no mesmo regime de conformidade.
  • Limitações do console do Google Cloud:

    • Se você não tiver permissão para visualizar VMs no grupo de nós compartilhado, essas VMs não aparecerão na lista de VMs na página Nós de locatário individual no console do Google Cloud.
    • Depois de modificar as configurações de compartilhamento na página Grupos de nós de locatário individual, a configuração Compartilhado com não é atualizada na IU. Para ver a configuração atualizada Compartilhado com, acesse a página Nós de locatário individual.
    • Depois de compartilhar um grupo de nós com todos os projetos em uma organização ou com projetos selecionados em uma organização, só é possível ver o grupo de nós compartilhado pelo próprio projeto. Não é possível ver o grupo de nós compartilhado dos projetos com que ele foi compartilhado. Para provisionar uma VM no grupo de nós compartilhado, do projeto com o qual o grupo de nós é compartilhado, acesse Instâncias de VM e depois modifique os identificadores de afinidade de nó de locatário individual.
  • Limitações de compartilhamento:

    • Atualize as configurações de compartilhamento do projeto proprietário do grupo de nós.
    • É possível especificar no máximo 100 projetos ao usar a configuração de compartilhamento projects.
    • Não é possível compartilhar grupos de nós entre organizações. Por exemplo, se você migrar um projeto que contém um grupo de nós compartilhado de uma organização para outra, também precisará migrar todos os projetos que têm VMs em execução nesse grupo de nós compartilhado.
    • Não é possível fazer a migração em tempo real entre projetos ao usar grupos de nós de locatário individual compartilhados. Para mais informações, consulte Migração em tempo real manual de VMs.

Preços

As VMs em grupos de nós compartilhados não geram cobranças extras e não há cobranças adicionais para compartilhar grupos de nós. Para mais informações sobre preços de nós de locatário individual, consulte Preços de nós de locatário individual.

Antes de começar

  • Antes de criar um grupo de nós de locatário individual, crie um modelo de nó de locatário individual.
  • Antes de provisionar VMs em um nó de locatário individual, verifique sua cota. Dependendo do número e do tamanho dos nós reservados, talvez seja necessário solicitar um aumento de cota.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

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

    Console

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

    gcloud

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

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

    REST

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

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

      gcloud init

Criar e compartilhar um novo grupo de nós

Para criar um novo grupo de nós e compartilhá-lo com outros projetos ou com toda a organização, use o console do Google Cloud, a CLI gcloud ou o REST.

Console

  1. Crie um grupo de nós de locatário individual. Para mais informações, consulte Criar um grupo de nós de locatário individual.

  2. Defina as configurações de compartilhamento especificando uma das seguintes opções em Definir configurações de compartilhamento:

    • Para compartilhar o grupo de nós com todos os projetos na sua organização, escolha a opção Compartilhar este grupo de nós com todos os projetos na organização.
    • Para compartilhar o grupo de nós com projetos específicos na sua organização, escolha Compartilhar esse grupo de nós com projetos selecionados na organização.

    Se você não quiser compartilhar o grupo de nós, escolha Não compartilhar este grupo de nós com outros projetos.

gcloud

Para criar um grupo de nós compartilhado, use o seguinte comando gcloud compute sole-tenancy node-groups create.

gcloud compute sole-tenancy node-groups create NODE_GROUP \
    --zone=ZONE \
    --node-template=NODE_TEMPLATE \
    --target-size=SIZE \
    --share-setting=SHARE_SETTING \
    --share-with=PROJECTS

Substitua:

  • NODE_GROUP: o nome do grupo de nós.

  • ZONE: a zona em que o grupo de nós será criado.

  • NODE_TEMPLATE: o nome do modelo de nó criado anteriormente.

  • SIZE: o número de nós no grupo de nós.

  • SHARE_SETTING: a configuração de compartilhamento do grupo de nós. Defina como projects para compartilhar com projetos específicos ou como organization para compartilhar com toda a organização.

  • PROJECTS: uma lista de IDs ou números de projeto de projeto para compartilhar o grupo de nós. Obrigatório apenas se você definir SHARE_SETTING como projects.

REST

Para criar um grupo de nós compartilhado, use o seguinte método nodeGroups.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups

{
  ...
  "name": NODE_GROUP,
  "nodeTemplate": NODE_TEMPLATE,
  "size": SIZE,
  "shareSettings": {
    "shareType": SHARE_TYPE,
    "projectMap": {
      string: {
        "projectId": PROJECTS
      },
    }
  }
  ...
}

Substitua:

  • PROJECT: o nome do projeto para criar o grupo de nós.

  • ZONE: a zona em que o grupo de nós será criado.

  • NODE_GROUP: o nome do grupo de nós.

  • NODE_TEMPLATE: o nome do modelo de nó criado anteriormente.

  • SIZE: o número de nós no grupo de nós.

  • SHARE_TYPE: a configuração de compartilhamento do grupo de nós. Defina como SPECIFIC_PROJECTS para compartilhar com projetos específicos ou como ORGANIZATION para compartilhar com toda a organização.

  • PROJECTS: uma lista de IDs ou números de projeto de projeto para compartilhar o grupo de nós. Obrigatório apenas se você definir SHARE_TYPE como SPECIFIC_PROJECTS.

Provisionar uma VM de locatário individual em um grupo de nós compartilhado

Para provisionar uma VM de locatário individual em um grupo de nós compartilhados, use o console do Google Cloud, a CLI gcloud ou a REST.

Console

  1. No console do Google Cloud, mude para um projeto com que você compartilhou um grupo de nós.

  2. Acesse a página Instâncias da VM.

    Acessar instâncias de VM

  3. Clique em Criar instância.

  4. Em Zona, escolha a zona do grupo de nós compartilhado.

  5. Em Configuração da máquina > Série, escolha o mesmo tipo de máquina que o modelo do grupo de nós de locatário individual compartilhado especifica.

  6. Abra Opções avançadas > Locatário individual > Procurar.

  7. Escolha Selecionar projeto e especifique o projeto que contém o grupo de nós compartilhado.

  8. Escolha o grupo de nós de locatário individual ou um nó de locatário individual específico nesse grupo para provisionar a VM.

gcloud

Provisionar uma VM em um grupo de nós compartilhado usando o nome desse grupo

Para provisionar uma VM de locatário individual em um grupo de nós compartilhado usando o nome do grupo de nós, use o seguinte comando gcloud compute instances create.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --node-group=NODE_GROUP \
    --node-project=NODE_PROJECT

Substitua:

  • VM_NAME: o nome da nova VM de locatário individual a ser criada em um grupo de nós compartilhado

  • MACHINE_TYPE: o tipo de máquina para a nova VM de locatário individual

  • NODE_GROUP: o nome do grupo de nós compartilhado para criar a VM de locatário individual

  • NODE_PROJECT: o projeto que contém o grupo de nós para provisionar a VM

Provisionar uma VM em um grupo de nós compartilhado usando um arquivo de afinidade do nó

Para provisionar uma VM de locatário individual em um grupo de nós compartilhado usando um arquivo de afinidade de nó, use o seguinte comando gcloud compute instances create.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --node-affinity-file=NODE_AFFINITY_FILE

Substitua:

  • VM_NAME: o nome da VM de locatário individual a ser criada em um grupo de nós compartilhado usando um rótulo de afinidade.

  • MACHINE_TYPE: o tipo de máquina da VM de locatário individual a ser criada em um grupo de nós compartilhado.

  • NODE_AFFINITY_FILE: o nome do arquivo .json que contém as informações de afinidade do nó. No arquivo de afinidade do nó, defina a chave de identificador de afinidade como "compute.googleapis.com/project", o operador igual a "IN" e o valor igual ao projeto que contém o grupo de nós. Para mais informações sobre como configurar a afinidade de nó, consulte Configurar rótulos de afinidade de nó.

REST

Para provisionar uma VM de locatário individual em um grupo de nós compartilhado usando um arquivo de afinidade de nó, use o seguinte método nodeGroups.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances

{
  ...
  "name": VM_NAME,
  "machineType": MACHINE_TYPE,
  "scheduling": {
    ...
    "nodeAffinities": [
      {
        "key": KEY,
        "operator": OPERATOR,
        "values": [
          VALUE
        ]
      }
    ],
    ...
  },
  ...
}

Substitua:

  • PROJECT: o nome do projeto proprietário do grupo de nós.

  • ZONE: a zona do grupo de nós.

  • VM_NAME: o nome da VM de locatário individual a ser criada em um grupo de nós compartilhado usando um rótulo de afinidade.

  • MACHINE_TYPE: o tipo de máquina da VM de locatário individual a ser criada em um grupo de nós compartilhado.

  • KEY: o rótulo de afinidade. Defina como "compute.googleapis.com/project".

  • OPERATOR: o operador de rótulo de afinidade. Defina como "IN".

  • VALUE: o projeto que contém o grupo de nós para provisionar a VM. Especifique um projeto usando o nome ou o ID do projeto.

Para mais informações sobre como configurar a afinidade de nó, consulte Configurar rótulos de afinidade de nó.

Visualizar as configurações de compartilhamento de um grupo de nós

Para visualizar as configurações de compartilhamento de um grupo de nós, use o console do Google Cloud, a CLI gcloud ou a REST.

Console

  1. No Console do Google Cloud, acesse a página Nós de locatário individual.

    Acesse Nós de locatário individual

  2. Para visualizar as propriedades do grupo de nós, na coluna Nome, clique no nome do grupo de nós.

gcloud

Para visualizar as configurações de compartilhamento de um grupo de nós, use o seguinte comando gcloud compute sole-tenancy node-groups describe.

gcloud compute sole-tenancy node-groups describe NODE_GROUP

Substitua NODE_GROUP pelo nome do grupo de nós para visualizar as configurações de compartilhamento.

REST

Para visualizar as configurações de compartilhamento de um grupo de nós, use o seguinte método nodeGroups.get.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups

Substitua:

  • PROJECT: o nome do projeto com o grupo de nós para ver as configurações de compartilhamento

  • ZONE: a zona que contém o grupo de nós para visualizar as configurações de compartilhamento

Compartilhar um grupo de nós atual

Para compartilhar um grupo de nós existente com outros projetos ou com toda a organização, use o console do Google Cloud, a CLI gcloud ou a REST.

Console

  1. No Console do Google Cloud, acesse a página Nós de locatário individual.

    Acesse Nós de locatário individual

  2. Na coluna Nome, clique no nome do grupo de nós.

  3. Para compartilhar o grupo de nós com todos os projetos na organização ou com projetos selecionados na organização, em Visão geral > Compartilhado com e clique em Editar .

gcloud

Para atualizar as configurações de compartilhamento de um grupo de nós, use o seguinte comando gcloud compute sole-tenancy node-groups update.

gcloud compute sole-tenancy node-groups update NODE_GROUP \
    --zone=ZONE \
    --share-setting=SHARE_SETTING \
    --share-with=PROJECTS

Substitua:

  • NODE_GROUP: o nome do grupo de nós para atualizar as configurações de compartilhamento.

  • SHARE_SETTING: a configuração de compartilhamento do grupo de nós. Defina como projects para compartilhar com projetos específicos ou como organization para compartilhar com toda a organização.

  • PROJECTS: uma lista de IDs ou números de projeto de projeto para compartilhar o grupo de nós. Obrigatório apenas se você definir SHARE_SETTING como projects.

REST

Para atualizar as configurações de compartilhamento de um grupo de nós, use o seguinte método nodeGroups.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

{
  "shareSettings": {
    "shareType": SHARE_TYPE,
    "projectMap": {
      string: {
        "projectId": PROJECTS
      },
    }
  }
}

Substitua:

  • PROJECT: o nome do projeto com os grupos de nós para atualizar as configurações de compartilhamento.

  • ZONE: a zona que contém os grupos de nós em que as configurações de compartilhamento serão atualizadas.

  • NODE_GROUP: o nome do grupo de nós para atualizar as configurações de compartilhamento.

  • SHARE_TYPE: a configuração de compartilhamento do grupo de nós. Defina como projects para compartilhar com projetos específicos ou como organization para compartilhar com toda a organização.

  • PROJECTS: uma lista de IDs ou números de projeto de projeto para compartilhar o grupo de nós. Obrigatório apenas se você definir SHARE_SETTING como SPECIFIC_PROJECTS.

Parar de compartilhar um grupo de nós

Para interromper o compartilhamento de um grupo de nós com outros projetos ou com toda a organização, use a CLI gcloud ou REST.

Console

  1. No Console do Google Cloud, acesse a página Nós de locatário individual.

    Acesse Nós de locatário individual

  2. Clique no Nome do grupo de nós.

  3. Em Visão geral > Compartilhado com, clique em Editar .

  4. Para interromper o compartilhamento, escolha Não compartilhar este grupo de nós com outros projetos.

gcloud

Para interromper o compartilhamento de um grupo de nós com outros projetos ou com toda a organização, use o seguinte comando gcloud compute sole-tenancy node-groups update.

gcloud compute sole-tenancy node-groups update NODE_GROUP \
    --zone=ZONE \
    --share-setting=local

Substitua NODE_GROUP pelo nome do grupo de nós para interromper o compartilhamento.

REST

Para interromper o compartilhamento de um grupo de nós com outros projetos ou com toda a organização, use o seguinte método nodeGroups.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

{
  "shareSettings": {
    "shareType": LOCAL
  }
}

Substitua:

  • PROJECT: o nome do projeto com o grupo de nós para interromper o compartilhamento

  • ZONE: a zona que contém o grupo de nós para interromper o compartilhamento

  • NODE_GROUP: o nome do grupo de nós para interromper o compartilhamento

Excluir um grupo de nós compartilhado do projeto proprietário

Para excluir um grupo de nós compartilhados do projeto proprietário, use o console do Google Cloud, a CLI gcloud ou a REST. Antes de excluir um grupo de nós, interrompa todas as VMs que estão em execução no grupo de nós.

Console

  1. No Console do Google Cloud, acesse a página Nós de locatário individual.

    Acesse Nós de locatário individual

  2. Na coluna Nome, clique no nome do grupo de nós.

  3. Clique em Excluir.

gcloud

Para excluir um grupo de nós compartilhado do projeto proprietário, use o seguinte comando gcloud compute sole-tenancy node-groups delete.

gcloud compute sole-tenancy node-groups delete NODE_GROUP

Substitua NODE_GROUP pelo nome do grupo de nós a ser excluído.

REST

Para excluir um grupo de nós compartilhado do projeto proprietário, use o seguinte método nodeGroups.delete.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

Substitua:

  • PROJECT: o nome do projeto com o grupo de nós a ser excluído.

  • ZONE: a zona que contém o grupo de nós a ser excluído.

  • NODE_GROUP: o nome do grupo de nós a ser excluído.