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
Acesse a página Nós de locatário individual no console do Google Cloud.
Clique em Criar modelo de nó.
Especifique um Nome e uma Região para o modelo de nó.
Selecione um Tipo de nó.
Opcionalmente, adicione um ou mais rótulos de afinidade de nó.
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 comandogcloud 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:
Acesse a página Nós de locatário individual no console do Google Cloud.
Clique em Criar grupo de nós.
Especifique um Nome para o modelo de nó.
Selecione a mesma Região onde você criou o modelo de nó e selecione uma Zona nessa região.
Selecione seu Modelo de nó.
Se quiser, ative o Modo de escalonamento automático.
Especifique o Número de nós que você quer no grupo.
Se quiser, altere a Política de manutenção.
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
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 comoprojects
para compartilhar com projetos específicos ou comoorganization
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ê definirSHARE_SETTING
comoprojects
.
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
eCOMPUTE_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:
- É possível ativar o escalonamento automático de cluster, no entanto, ele é limitado pela capacidade do grupo de nós subjacente. É possível configurar o escalonador automático de grupo de nós no Compute Engine para gerenciar automaticamente o tamanho dos grupos de nó de locatário individual.
- Não será possível ativar o provisionamento automático de nós no cluster se você usar nós de locatário individual.
- É possível usar qualquer estratégia de upgrade de nós. No entanto, é necessário garantir que você tenha capacidade suficiente para oferecer suporte ao pool de nós usando a estratégia de upgrade escolhida.