Isolar suas cargas de trabalho do GKE usando nós de locatário individual


Nesta página, mostramos como isolar suas cargas de trabalho em execução nos clusters padrão do Google Kubernetes Engine (GKE) usando nós de locatário individual do Compute Engine, que são servidores físicos dedicados que executar somente as VMs de um projeto específico. É possível usar nós de locatário individual para manter suas VMs separadas fisicamente das VMs de outros projetos ou agrupá-las no mesmo hardware host.

Esse recurso não é compatível com o Autopilot do GKE. Para saber mais sobre os limites de segurança do Autopilot, consulte Limites de segurança no Autopilot.

Para usar nós de locatário individual no GKE, crie um grupo de nós de locatário individual no Compute Engine e use esse grupo para criar um pool de nós do GKE. É possível criar pools de nós usando nós de locatário individual do projeto do cluster do GKE ou nós de locatário individual compartilhados usando recursos em projetos dentro da organização. Por exemplo, é possível designar um projeto de proprietário na organização em que você cria grupos de nós de locatário individual e projetos de consumidor em que você tem clusters com pools de nós usando esses grupos de nós do projeto do proprietário.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando gcloud components update.

Solicitação de cota adicional

Os nós de locatário individual são grandes (por exemplo, 96 vCPUs e 624 GB de memória) e as cotas do projeto padrão são muito baixas para processá-las.

É preciso solicitar um aumento de cota para CPUs da API do Compute Engine na página de cotas para criar nós de locatário individual. Para mais informações sobre como solicitar um aumento, consulte Cotas.

O número de CPUs necessárias depende do seguinte:

  • O uso atual da cota de CPU
  • O tamanho do grupo de nós
  • O modelo de nó

Examine o número de núcleos do tipo de nó de locatário individual e solicite um limite de CPU de pelo menos esse valor, de preferência com mais 10 CPUs para garantir que o projeto tenha capacidade adequada.

Crie um modelo de nó de locatário individual.

Um modelo de nó de locatário individual é um recurso regional que define e aplica propriedades a cada nó ao criar um grupo. Para mais informações, consulte Tipos de nó.

Se você estiver usando nós de locatário individual compartilhados, siga estas instruções no projeto do proprietário do grupo de nós, e não o projeto consumidor do cluster.

Console

  1. Acesse a página Nós de locatário individual no console do Google Cloud.

    Acesse Nós de locatário individual

  2. Clique em Criar modelo de nó.

  3. Especifique um Nome e uma Região para o modelo de nó.

  4. Selecione um Tipo de nó.

  5. Opcionalmente, adicione um ou mais rótulos de afinidade de nó.

  6. Clique em Criar para criar o modelo de nó.

gcloud

Use o comando gcloud compute sole-tenancy node-templates create para criar um modelo de nó:

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type=NODE_TYPE \
    --node-affinity-labels=AFFINITY_LABELS \
    --region=COMPUTE_REGION

Substitua:

  • TEMPLATE_NAME: o nome do novo modelo de nó;
  • NODE_TYPE: o tipo de nó dos nós de locatário individual criados com base nesse modelo. Use o comando gcloud compute sole-tenancy node-types list para ver uma lista dos tipos de nó disponíveis em cada zona.
  • AFFINITY_LABELS: as chaves e os valores ([KEY=VALUE,...]) dos rótulos de afinidade. Os rótulos de afinidade permitem agrupar nós e grupos de nós de maneira lógica. E, posteriormente, ao provisionar VMs, será possível especificar rótulos de afinidade nas VMs para programá-las em um conjunto específico de nós ou grupos de nós. Para mais informações, consulte Afinidade e antiafinidade de nós.
  • COMPUTE_REGION: a região em que o modelo de nó será criado. É possível usar esse modelo para criar grupos de nós em qualquer zona dessa região.

O resultado será assim:

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

Crie um grupo de nós de locatário individual.

Um grupo de nós é um conjunto de nós de locatário individual em uma zona específica do mesmo modelo de nó de locatário individual. Para clusters regionais e pools de nós disponíveis em várias zonas, você precisa criar um grupo de nós com o mesmo nome em cada zona. Verifique se você tem uma cota suficiente antes de concluir esta etapa.

Se você estiver usando nós de locatário individual compartilhados, siga estas instruções no projeto do proprietário do grupo de nós, e não o projeto consumidor do cluster.

Console

Para criar um grupo de nós de locatário individual, execute as etapas a seguir:

  1. Acesse a página Nós de locatário individual no console do Google Cloud.

    Acesse Nós de locatário individual

  2. Clique em Criar grupo de nós.

  3. Especifique um Nome para o modelo de nó.

  4. Selecione a mesma Região onde você criou o modelo de nó e selecione uma Zona nessa região.

  5. Selecione seu Modelo de nó.

  6. Se quiser, ative o Modo de escalonamento automático.

  7. Especifique o Número de nós que você quer no grupo.

  8. Se quiser, altere a Política de manutenção.

  9. Opcionalmente, para compartilhar o grupo de nós de locatário individual, defina as configurações de compartilhamento especificando uma das seguintes opções na seção Definir configurações de compartilhamento:

    • Compartilhar este grupo de nós com todos os projetos na organização
    • Compartilhar este grupo de nós com projetos selecionados na organização
  10. Clique em Criar para criar o grupo de nós.

gcloud

Crie um grupo de nós a partir do modelo:

gcloud compute sole-tenancy node-groups create GROUP_NAME \
    --zone COMPUTE_ZONE \
    --node-template TEMPLATE_NAME --target-size TARGET_SIZE \
    --share-settings=SHARE_SETTING \
    --share-with=PROJECTS

Substitua:

  • GROUP_NAME: o nome que você quer para o novo grupo de nós;
  • COMPUTE_ZONE: a zona em que esse grupo de nós está localizado; Essa zona precisa estar na mesma região que o modelo de nó que você está usando;
  • TEMPLATE_NAME: o nome do modelo de nó que você está usando;
  • TARGET_SIZE: o número de nós que você quer criar no grupo.
  • 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.

Criar um pool de nós de locatário individual do GKE

Agora que você criou um grupo de nós de locatário individual no Compute Engine, é possível criar um pool de nós de locatário individual.

Se você já tiver um cluster do GKE, poderá adicionar a ele um pool de nós de locatário individual. Caso contrário, crie um cluster com gcloud container clusters create.

Se você estiver usando um cluster regional ou se o pool de nós estiver disponível em várias zonas, será necessário criar um grupo de nós com o mesmo nome em cada uma dessas zonas. Se não for possível reutilizar o nome em cada zona, crie pools de nós separados para cada zona.

Criar um pool de nós com um grupo de nós de locatário individual a partir do projeto do cluster

Para criar um pool de nós usando um grupo de nós do projeto do cluster, transmita o nome do grupo de nós de locatário individual. Se você quiser usar um grupo de nós de locatário individual compartilhado ou rótulos de afinidade de nó personalizados configurados ao criar o modelo de nó de locatário individual , veja as instruções para criar um pool de nós com um nó de locatário individual compartilhado usando um arquivo de afinidade de nó.

Crie um novo pool de nós com um grupo de nós especificado:

Para pools de nós zonais:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE

Para pools de nós regionais:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --region COMPUTE_REGION --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE1,COMPUTE_ZONE2

Substitua:

  • NODE_POOL_NAME: um nome para o novo pool de nós;
  • GROUP_NAME: o nome do grupo de nós de locatário individual que você quer usar;
  • CLUSTER_NAME: o nome do cluster no qual você está criando o pool de nós;
  • COMPUTE_REGION: a mesma região do cluster;
  • MACHINE_TYPE: o tipo de máquina do pool de nós;
  • COMPUTE_ZONE1 e COMPUTE_ZONE2,[...]: as zonas dos grupos de nós de locatário individual.

Para ver uma lista completa das sinalizações opcionais que podem ser especificadas, consulte a documentação gcloud container node-pools create.

Criar um pool de nós com um nó de locatário individual compartilhado usando um arquivo de afinidade de nó

Para criar um pool de nós usando um grupo de nós de locatário individual compartilhado, use os rótulos de afinidade de nó. Também é possível usar a afinidade de nós para escolher grupos de nós do mesmo projeto.

Para fazer referência a rótulos, siga as instruções para criar um pool de nós, substituindo a sinalização --node-group por --sole-tenant-node-affinity-file. Transmita um arquivo JSON com esses rótulos. Por exemplo, consulte o seguinte comando:

  gcloud container node-pools create sole-tenant-node-pool \
      --sole-tenant-node-affinity-file /path/to/affinity/file --cluster my-cluster \
      --region us-central1 --machine-type n1-standard-4  \
      --node-locations=us-central1-a,us-central1-b,us-central1-c

As seções a seguir descrevem casos de uso de rótulos de afinidade de nó com nós de locatário individual.

Especificar o nome de um grupo de nós de um projeto

Para usar grupos de nós de locatário individual de um projeto e nome de grupo de nós específicos, especifique esses valores no arquivo de afinidade de nó. Use essa afinidade se estiver criando um pool de nós de várias zonas em que os nomes de grupos de nós de cada zona precisam corresponder. Para usar qualquer grupo de nós no projeto do proprietário especificado, omita todo o bloco compute-googleapis.com/node-group-name do arquivo JSON.

Veja o exemplo a seguir:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "compute.googleapis.com/node-group-name",
    "operator" : "IN",
    "values" : ["GROUP_NAME"]
  },
]

Especificar rótulos personalizados

Também é possível usar afinidade e antiafinidade de nós para criar um pool de nós usando grupos de nós com rótulos personalizados. Cada grupo de nós recebe automaticamente rótulos de afinidade padrão. É possível referenciar os rótulos padrão como nos exemplos anteriores ou usar rótulos personalizados designados ao criar o modelo de nó. É possível usar rótulos personalizados para isolar ou agrupar cargas de trabalho.

Veja o exemplo a seguir:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "workload",
    "operator" : "IN",
    "values" : ["frontend"]
  },
]

Limitações

Ao criar um pool de nós com nós de locatário individual, você é responsável por gerenciar a capacidade subjacente para grupos de nós de locatário individual. Considere como os recursos a seguir interagem com grupos de nós de locatário individual:

A seguir