É possível reduzir a quantidade de gerenciamento manual de infraestrutura em clusters padrão do Google Kubernetes Engine (GKE) permitindo que o GKE crie automaticamente pools de nós para pods pendentes. Neste documento, mostramos como ativar a criação automática de pool de nós para clusters e cargas de trabalho, definir valores padrão para nós criados automaticamente e acionar a criação automática para alguns casos de uso comuns.
Este documento é destinado a administradores, operadores e desenvolvedores de cluster que gerenciam infraestrutura e implantam cargas de trabalho em clusters padrão. Para mais informações sobre como a criação automática de pool de nós funciona e os diferentes métodos de ativação (como ComputeClasses e provisionamento automático de nós no nível do cluster), consulte Sobre a criação automática de pool de nós de nós.
Limitações
A criação automática de pools de nós tem as seguintes limitações:
- Todas as limitações do autoescalador de cluster também se aplicam à criação automática de pool de nós.
- Clusters com mais de 200 pools de nós totais podem ter aumento na latência durante o escalonamento automático. Qualquer configuração que acione a criação de um novo pool de nós, como separação de carga de trabalho ou o uso de várias ComputeClasses, aumenta esse número. Para mais informações sobre limites de cluster, consulte limites e práticas recomendadas em "Planejar clusters grandes".
- Todos os limites de recursos definidos para o cluster ao ativar o provisionamento automático de nós também se aplicam aos pools de nós que o GKE cria para ComputeClasses.
- As configurações a seguir não são compatíveis com ComputeClasses:
- Upgrades súbitos ou azul-verde.
- Integridade do nó e inicialização segura.
- Para ativar a criação automática de pool de nós para uma ComputeClass em versões do GKE anteriores a 1.33.3-gke.1136000, também é necessário ativar o provisionamento automático de nós no nível do cluster. Essa limitação não se aplica ao GKE versão 1.33.3-gke.1136000 e posteriores.
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 CLI do Google Cloud para essa tarefa,
instale e inicialize a
gcloud CLI. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando o comando
gcloud components update
. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
Requisitos
É possível ativar a criação automática de pool de nós para todo o cluster em qualquer versão do GKE usando o recurso de provisionamento automático de nós. Se você quiser usar uma ComputeClass para ativar a criação automática de pool de nós no nível da carga de trabalho e não quiser ativar o provisionamento automático de nós, seu cluster precisará atender aos seguintes requisitos:
- Use o GKE versão 1.33.3-gke.1136000 ou posterior.
- Use o canal de lançamento rápido.
Para acionar a criação automática de pool de nós para configurações de nós específicas, é necessário atender aos requisitos de versão correspondentes. Para mais informações sobre o suporte a versões para várias configurações, consulte as notas da versão do GKE (novos recursos) ou a documentação do seu caso de uso.
Ativar a criação automática no nível da carga de trabalho
É possível ativar a criação automática de pool de nós para cargas de trabalho específicas no cluster
usando uma ComputeClass. O campo nodePoolAutoCreation
em uma especificação
ComputeClass controla se o GKE pode criar novos pools de nós para
pods que selecionam essa ComputeClass. Na versão 1.33.3-gke.1136000 e mais recentes do GKE, é possível ativar a criação automática de pool de nós para uma ComputeClass mesmo que o cluster não tenha o provisionamento automático de nós ativado.
Em versões anteriores a 1.33.3-gke.1136000, também é necessário
ativar o provisionamento automático de nós no nível do cluster.
Para ativar a criação automática de pool de nós para uma ComputeClass, siga estas etapas:
Use um cluster padrão novo ou atual que atenda aos seguintes requisitos:
- Usa o GKE versão 1.33.3-gke.1136000 ou mais recente.
- Usa o canal de lançamento rápido.
Você pode criar um cluster Standard.
Se o cluster não atender aos requisitos da etapa anterior, ative o provisionamento automático de nós no nível do cluster.
Salve o exemplo a seguir de ComputeClass como um arquivo YAML:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua
COMPUTE_CLASS
por um nome para a nova ComputeClass. Para mais informações sobre os campos disponíveis em ComputeClasses, consulte a CustomResourceDefinition do ComputeClass.Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.Salve o seguinte exemplo de implantação, que seleciona uma ComputeClass, como
helloweb-deploy.yaml
:Crie a implantação no cluster:
kubectl apply -f helloweb-deploy.yaml
Para verificar se o GKE criou um novo pool de nós para seu pod, receba uma lista dos pools de nós no cluster:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION
Substitua:
CLUSTER_NAME
: o nome do cluster.CONTROL_PLANE_LOCATION
: a região ou zona do plano de controle do cluster, comous-central1
ouus-central1-a
.
Ativar o provisionamento automático de nós no nível do cluster
Para ativar a criação automática de pool de nós em todo o cluster do GKE, use a configuração de provisionamento automático de nós. Com o provisionamento automático de nós, o GKE cria novos pools de nós para cargas de trabalho pendentes no cluster com base na configuração na especificação do pod ou em uma ComputeClass. É possível ativar o provisionamento automático de nós para clusters novos ou atuais.
Antes de ativar o provisionamento automático de nós, planeje o tamanho do intervalo de endereços IPv4 principal da sub-rede VPC. O GKE usa esse intervalo de endereços IP como o intervalo de endereços IP do nó principal. Dependendo do tamanho e da escala do cluster, o intervalo de endereços IP padrão do nó pode não ter endereços IP suficientes para atribuir a novos nós. Se você atualizar o tamanho do intervalo de endereços IP do nó depois de criar o cluster, será necessário atualizar as regras de firewall do cluster do GKE para permitir o tráfego dos novos endereços IP.
Para receber pools de nós criados automaticamente em versões do GKE anteriores a 1.33.3-gke.1136000, siga as etapas desta seção. Também é possível ativar o provisionamento automático de nós em um cluster atual editando a configuração do cluster no console Google Cloud .
Para ativar o provisionamento automático de nós ao criar um cluster, selecione uma das seguintes opções:
Console
No console Google Cloud , acesse a página Criar um cluster do Kubernetes.
Na página Noções básicas do cluster, especifique um nome e um local para o novo cluster.
No menu de navegação, clique em Automação.
Marque a caixa de seleção Ativar provisionamento automático de nós. Uma seção Limites aparece.
Especifique limites para CPU e memória.
Clique em Salvar alterações.
gcloud
gcloud container clusters create CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--min-cpu=MINIMUM_CPU \
--min-memory=MINIMUM_MEMORY \
--max-cpu=MAXIMUM_CPU \
--max-memory=MAXIMUM_MEMORY \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
Substitua:
CLUSTER_NAME
: o nome do cluster para ativar o provisionamento automático de nós.CONTROL_PLANE_LOCATION
: a região ou zona do plano de controle do cluster, comous-central1
ouus-central1-a
.MINIMUM_CPU
: o número mínimo de núcleos no cluster.MINIMUM_MEMORY
: a capacidade mínima de memória, em GiB, no cluster.MAXIMUM_CPU
: o número máximo de núcleos no cluster. Esse limite se aplica à soma dos núcleos de CPU em todos os nós novos e atuais do cluster, incluindo pools de nós criados manualmente.MAXIMUM_MEMORY
: a capacidade máxima de memória, em GiB, no cluster. Esse limite se aplica à soma da capacidade de memória em todos os pools de nós novos e atuais no cluster, incluindo os criados manualmente.
Configurar definições com um arquivo de configuração de provisionamento automático de nós
É possível configurar limites de recursos e configurações de configuração de nós para o provisionamento automático de nós usando um arquivo de configuração YAML. O arquivo de configuração permite especificar de forma declarativa valores padrão para pools de nós criados automaticamente e realizar configurações avançadas, como ativar o reparo automático de nós. Esse arquivo não está relacionado a ComputeClasses, que são recursos personalizados do Kubernetes. Em vez disso, o arquivo de configuração existe como uma alternativa mais extensível ao uso de flags de linha de comando para especificar configurações para o provisionamento automático de nós. Para mais informações, consulte Configurações padrão no nível do cluster com um arquivo de configuração.
Para criar e usar um arquivo de configuração, siga estas etapas:
- Em um editor de texto, crie um arquivo YAML em um caminho que a Google Cloud CLI possa acessar.
Adicione as configurações que você quer definir ou modificar, como no exemplo a seguir:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
Este exemplo tem as seguintes configurações para o provisionamento automático de nós:
resourceLimits
: define limites de recursos para CPU, capacidade de memória e GPUs NVIDIA T4 no cluster. Esses limites se aplicam à soma da capacidade de recursos no cluster, incluindo em pools de nós criados manualmente.management
: ativa o reparo e o upgrade automáticos de nós para todos os novos pools de nós criados automaticamente no cluster.shieldedInstanceConfig
: ativa a inicialização segura e o monitoramento da integridade do nó para todos os novos pools de nós criados automaticamente no cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Depois de aplicar o arquivo de configuração ao cluster, o GKE usa as configurações no arquivo para novos pools de nós criados automaticamente no cluster. Essas configurações não se aplicam aos pools de nós criados pelo GKE no cluster.
Configurar limites de recursos para o provisionamento automático de nós
Ao usar o provisionamento automático de nós no nível do cluster, é necessário configurar limites para a quantidade total de recursos que o cluster pode ter em todos os pools de nós. Para ativar o provisionamento automático de nós em um cluster, especifique limites de capacidade de CPU e memória. Além disso, para usar outros tipos de recursos anexados, como GPUs e TPUs, especifique limites para esses recursos. Esses limites são necessários apenas se você ativar a configuração de provisionamento automático de nós para seu cluster. Se você usar apenas ComputeClasses para receber pools de nós criados automaticamente, não será necessário configurar limites de recursos.
É possível adicionar ou modificar limites de recursos para a criação automática de pool de nós usando um dos seguintes métodos:
- O console do Google Cloud
- Flags da CLI gcloud
- O arquivo de configuração no nível do cluster
Para configurar limites de recursos em um cluster, selecione uma das seguintes opções:
Console
No console Google Cloud , acesse a página Clusters do Kubernetes.
Clique no nome do cluster. A página Detalhes do cluster é aberta.
Clique na guia Detalhes.
Na seção Automação, na linha Provisionamento automático de nós, clique em
Editar. O painel Editar provisionamento automático de nós é aberto.Marque a caixa de seleção Ativar provisionamento automático de nós.
Na seção Limites, especifique os valores mínimo e máximo para a capacidade de CPU e memória no cluster.
Para configurar limites para outro recurso, como GPUs ou TPUs, faça o seguinte:
- Clique em Adicionar recurso.
- Na lista suspensa Tipo de recurso, selecione o modelo de GPU ou o tipo de máquina de TPU, como NVIDIA A100 80GB ou ct5p.
- Especifique valores mínimos e máximos para o recurso.
Opcional: na seção Locais do pool de nós, selecione zonas específicas para o GKE criar nós. Por exemplo, se você planeja executar cargas de trabalho de GPU, selecione zonas com alta disponibilidade para o tipo de GPU escolhido.
Clique em Salvar alterações.
gcloud
Execute um dos seguintes comandos:
Especifique limites de recursos de CPU e memória:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY
Substitua:
MINIMUM_CPU
: o número mínimo de núcleos no cluster.MINIMUM_MEMORY
: a capacidade mínima de memória, em GiB, no cluster.MAXIMUM_CPU
: o número máximo de núcleos no cluster. Esse limite se aplica à soma dos núcleos de CPU em todos os pools de nós no cluster, incluindo os criados manualmente.MAXIMUM_MEMORY
: a capacidade máxima de memória, em GiB, no cluster. Esse limite se aplica à soma da capacidade de memória em todos os pools de nós no cluster, incluindo os criados manualmente.
Especifique limites de recursos da GPU:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \ --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
Substitua:
GPU_TYPE
: o tipo de GPU para definir um limite, comonvidia-l4
.MINIMUM_GPU_COUNT
: o número mínimo de GPUs do tipo especificado que o cluster pode ter.MAXIMUM_GPU_COUNT
: o número máximo de GPUs do tipo especificado que o cluster pode ter.
Especifique os limites de recursos da TPU:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \ --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
Substitua:
TPU_TYPE
: o tipo de TPU para definir um limite. Os valores a seguir são aceitos:tpu-v4-podslice
: TPU v4.tpu-v5-lite-podslice
: TPU v5e com tipos de máquina que começam comct5lp-
.tpu-v5p-slice
: TPU v5e com tipos de máquina que começam comct5p-
.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU_COUNT
: o número mínimo de chips de TPU do tipo especificado que o cluster pode ter. Se o valor especificado for maior que o número de chips de TPU em uma fração de TPU de vários hosts, a redução da reduzir escala vertical vertical da fração de TPU poderá não ocorrer.MAXIMUM_TPU_COUNT
: o número máximo de chips de TPU do tipo especificado que o cluster pode ter. Para frações de TPU de vários hosts, especifique um valor maior que o número de chips em cada fração para que o GKE possa escalonar a fração de maneira atômica. O número de chips em uma fração é o produto da topologia da TPU. Por exemplo, se a topologia for2x2x2
, o número de chips na fração será8
, o que significa que o valor de MAXIMUM_TPU_COUNT precisa ser maior que8
.
Arquivo de configuração
No arquivo de configuração, especifique um dos seguintes conjuntos de campos no campo
resourceLimits
:Especifique limites de recursos de CPU e memória:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY
Substitua:
MINIMUM_CPU
: o número mínimo de núcleos no cluster.MINIMUM_MEMORY
: a capacidade mínima de memória, em GiB, no cluster.MAXIMUM_CPU
: o número máximo de núcleos no cluster. Esse limite se aplica à soma dos núcleos de CPU em todos os pools de nós no cluster, incluindo os criados manualmente.MAXIMUM_MEMORY
: a capacidade máxima de memória, em GiB, no cluster. Esse limite se aplica à soma da capacidade de memória em todos os pools de nós no cluster, incluindo os criados manualmente.
Especifique limites de recursos da GPU:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'GPU1_TYPE' minimum: MINIMUM_GPU1_COUNT maximum: MAXIMUM_GPU1_COUNT - resourceType: 'GPU2_TYPE' minimum: MINIMUM_GPU2_COUNT maximum: MAXIMUM_GPU2_COUNT
Substitua:
GPU1_TYPE
,GPU2_TYPE
: os tipos de GPUs para definir limites, comonvidia-l4
.MINIMUM_GPU1_COUNT
,MINIMUM_GPU2_COUNT
: o número mínimo de GPUs dos tipos especificados que o cluster pode ter.MAXIMUM_GPU1_COUNT
,MAXIMUM_GPU2_COUNT
: o número máximo de GPUs dos tipos especificados que o cluster pode ter.
Especifique os limites de recursos da TPU:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'TPU1_TYPE' minimum: MINIMUM_TPU1_COUNT maximum: MAXIMUM_TPU1_COUNT - resourceType: 'TPU2_TYPE' minimum: MINIMUM_TPU2_COUNT maximum: MAXIMUM_TPU2_COUNT
Substitua:
TPU1_TYPE
,TPU2_TYPE
: os tipos de TPUs para definir limites. Os valores a seguir são aceitos:tpu-v4-podslice
: TPU v4.tpu-v5-lite-podslice
: TPU v5e com tipos de máquina que começam comct5lp-
.tpu-v5p-slice
: TPU v5e com tipos de máquina que começam comct5p-
.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU1_COUNT
,MINIMUM_TPU2_COUNT
: o número mínimo de chips de TPU do tipo especificado que o cluster pode ter. Se o valor especificado for maior que o número de chips de TPU em uma fração de TPU de vários hosts, a redução da reduzir escala vertical vertical da fração poderá não ocorrer.MAXIMUM_TPU1_COUNT
,MAXIMUM_TPU2_COUNT
: o número máximo de chips de TPU do tipo especificado que o cluster pode ter. Para frações de TPU de vários hosts, especifique um valor maior que o número de chips em cada fração para que o GKE possa escalonar a fração de forma atômica. O número de chips em uma fração é o produto da topologia de TPU. Por exemplo, se a topologia deTPU1_TYPE
for2x2x2
, o número de chips na fração será8
, o que significa que o valor deMAXIMUM_TPU1_COUNT
precisa ser maior que8
.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Marcar pools de nós atuais como criados automaticamente
Depois de ativar o provisionamento automático de nós no nível do cluster, marque todos os pools de nós atuais no cluster como criados automaticamente. O GKE gerencia o escalonamento nesses pools de nós, incluindo a exclusão deles quando estão vazios. É possível marcar pools de nós criados manualmente como criados automaticamente para permitir que o GKE gerencie os pools de nós para você.
Se você desativar o provisionamento automático para o cluster, o GKE vai parar de gerenciar todos os pools de nós criados automaticamente no cluster. Se você reativar o provisionamento automático para o cluster mais tarde, o GKE não vai retomar automaticamente o gerenciamento desses pools de nós. Marque esses pools de nós como criados automaticamente.
Para marcar um pool de nós atual como criado automaticamente, execute o comando a seguir:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning
Substitua NODE_POOL_NAME
pelo nome do pool de nós.
Configurar as definições padrão para pools de nós criados automaticamente
O GKE usa suas ComputeClasses e especificações de pod para determinar os tipos de nós que podem executar de maneira ideal os pods pendentes. Também é possível configurar as definições padrão que o GKE aplica aos pools de nós criados automaticamente, como uma conta de serviço personalizada do Identity and Access Management (IAM) para os nós ou configurações personalizadas de disco de inicialização. Essas configurações padrão substituem os valores padrão correspondentes definidos pelo Google para seus clusters. Por exemplo, é possível definir uma imagem de nó do Ubuntu como padrão para pools de nós criados automaticamente, o que substitui a imagem de nó padrão do Container-Optimized OS do GKE.
É possível configurar as definições padrão no nível do cluster usando o provisionamento automático de nós ou no nível da carga de trabalho em ComputeClasses. Antes de configurar uma definição em um desses níveis, considere o seguinte:
- As configurações no nível do cluster se aplicam a qualquer pool de nós criado automaticamente no cluster, e as configurações de ComputeClass se aplicam apenas a cargas de trabalho que usam essa ComputeClass.
- Se você especificar a mesma configuração padrão em uma ComputeClass e no nível do cluster, o GKE usará a configuração da ComputeClass para cargas de trabalho que usam a ComputeClass.
- Os valores padrão configurados se aplicam apenas a novos pools de nós criados automaticamente. Os pools de nós atuais não são afetados.
As seções a seguir mostram como configurar configurações padrão específicas.
Definir a imagem de nó padrão
Selecione uma das seguintes opções:
ComputeClass
Em um manifesto ComputeClass, use o campo
nodePoolConfig.imageType
. Esse campo está disponível no GKE versão 1.32.4-gke.1198000 e mais recentes.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: imageType: IMAGE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua
IMAGE_TYPE
por um valor para a imagem do nó, que pode ser um dos seguintes:cos_containerd
: Container-Optimized OS com o containerdubuntu_containerd
Ubuntu com o containerd.
Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
gcloud
Para definir a imagem de nó padrão na linha de comando, use a flag
--autoprovisioning-image-type
:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-image-type=IMAGE_TYPE
Substitua:
CLUSTER_NAME
: o nome do cluster.IMAGE_TYPE
: a imagem do nó, que pode ser uma das seguintes:cos_containerd
: Container-Optimized OS com o containerdubuntu_containerd
Ubuntu com o containerd.
Para definir a imagem padrão do nó em um arquivo de configuração, siga estas etapas:
No arquivo de configuração, especifique o campo
imageType
:imageType: 'IMAGE_TYPE'
Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Definir a conta de serviço padrão do IAM para nós
Os nós do GKE usam uma conta de serviço do IAM para tarefas do sistema, como geração de registros e monitoramento. Para mudar a conta de serviço do IAM em pools de nós criados automaticamente, selecione uma das seguintes opções:
ComputeClass
Em um manifesto Computeclass, use o campo
nodePoolConfig.serviceAccount
. Esse campo está disponível no GKE versão 1.31.4-gke.1072000 e mais recentes.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua:
SERVICE_ACCOUNT_NAME
: o nome da conta de serviço do IAM, comomy-node-account
.PROJECT_ID
: o ID do projeto da conta de serviço.
Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
gcloud
Ao usar a CLI gcloud para configurar uma conta de serviço padrão para pools de nós criados automaticamente, também é necessário especificar escopos de acesso que os pools de nós exigem para funcionar corretamente.
Para definir a conta de serviço padrão e os escopos de acesso na linha de comando, use as flags
--autoprovisioning-service-account
e
--autoprovisioning-scopes
:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
Substitua:
SERVICE_ACCOUNT_NAME
: o nome da conta de serviço do IAM, comomy-node-account
.PROJECT_ID
: o ID do projeto da conta de serviço.
Para definir a conta de serviço padrão e os escopos de acesso em um arquivo de configuração, siga estas etapas:
No arquivo de configuração, especifique os campos
serviceAccount
escopes
:serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Definir as zonas padrão para nós criados automaticamente
Por padrão, o GKE cria nós automaticamente nas seguintes zonas, dependendo do tipo de cluster:
- Clusters regionais: o GKE cria nós em três zonas aleatórias na região do cluster.
- Clusters zonais: o GKE cria nós na mesma zona que o plano de controle do cluster.
É possível especificar manualmente uma lista de zonas em que o GKE cria nós automaticamente. Essas zonas precisam estar na mesma região que o plano de controle do cluster. Por exemplo, se você tiver um cluster zonal com o plano de controle em us-central1-a
, poderá especificar qualquer zona na região us-central1
para que o GKE crie nós automaticamente. Se você modificar as zonas padrão para nós criados automaticamente em um cluster
existente, as mudanças serão aplicadas apenas aos novos pools de nós que o
GKE criar.
Para especificar as zonas padrão dos nós criados automaticamente, selecione uma das seguintes opções:
ComputeClass
Em um manifesto ComputeClass, use o campo
spec.priorityDefaults.location.zones
. Esse campo está disponível no GKE versão 1.33.1-gke.1545000 e mais recentes.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorityDefaults: location: zones: ['ZONE1','ZONE2','...'] priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua
ZONE1,ZONE2,...
por uma lista separada por vírgulas das zonas padrão para nós criados automaticamente, comous-central1-a','us-central1-b', 'us-central1-f'
. O GKE usa essas zonas se regras específicas no campospec.priorities
não incluem uma lista explícita de zonas.Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
gcloud
Para definir as zonas padrão para a criação automática de pool de nós na linha de comando, use a flag
--autoprovisioning-locations
:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-locations=ZONE1,ZONE2,...
Substitua ZONE1,ZONE2,...
por uma lista separada por vírgulas
das zonas padrão para nós criados automaticamente, como
'us-central1-a','us-central1-b', 'us-central1-f'
.
Para definir as zonas padrão para a criação automática de um pool de nós usando um arquivo de configuração, siga estas etapas:
Especifique o campo
autoprovisioningLocations
no arquivo de configuração:autoprovisioningLocations: - ZONE1 - ZONE2
Substitua
ZONE1
,ZONE2
pelas zonas padrão para nós criados automaticamente, como "us-central1-a
" e "us-central1-b
".Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Definir chaves de criptografia gerenciadas pelo cliente para a criptografia do disco de inicialização
É possível especificar uma chave de criptografia gerenciada pelo cliente (CMEK) no Cloud Key Management Service que o GKE usa para criptografar os discos de inicialização dos nós em pools de nós criados automaticamente. É necessário criar a chave antes de usá-la com a criação automática de pool de nós. Para definir uma CMEK para os discos de inicialização do nó, selecione uma das seguintes opções:
ComputeClass
Em "ComputeClasses", especifique a chave em todas as regras de prioridade no campo
spec.priorities
em "ComputeClass".
Em um manifesto ComputeClass, use o campo
priorities.storage.bootDiskKMSKey
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME - machineFamily: n4d storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua:
KEY_PROJECT_ID
: o ID do projeto que tem a chave.KEY_LOCATION
: a localização do keyring.KEY_RING
: o nome do keyring que contém a chave.KEY_NAME
: o nome da chave;
Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
gcloud
Especifique o campo
bootDiskKmsKey
no arquivo de configuração:bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Substitua:
KEY_PROJECT_ID
: o ID do projeto que tem a chave.KEY_LOCATION
: a localização do keyring.KEY_RING
: o nome do keyring que contém a chave.KEY_NAME
: o nome da chave;
Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Configurar a integridade do nó e a inicialização segura
É possível ativar a inicialização segura e o monitoramento de integridade para pools de nós criados automaticamente apenas usando o arquivo de configuração do provisionamento automático de nós.
Especifique o campo
shieldedInstanceConfig
no arquivo de configuração:shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Configurar o reparo e o upgrade automáticos de nós
É possível modificar as configurações de reparos automáticos de nós e upgrades automáticos de nós em pools de nós criados automaticamente. Esses recursos são ativados por padrão em todos os clusters e pools de nós do GKE. Recomendamos que você mantenha esses recursos ativados para melhorar a confiabilidade e a estabilidade dos seus clusters.
Para mudar as configurações de reparo e upgrade automáticos de nós, selecione uma das seguintes opções:
ComputeClass
Em um manifesto ComputeClass, use o campo
autoRepair
e o campoautoUpgrade
no campospec.nodePoolConfig
. Esses campos estão disponíveis na versão 1.34.0-gke.2201000 e mais recentes do GKE.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: nodePoolConfig: autoRepair: true autoUpgrade: true priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
gcloud
Para ativar as configurações de reparo e upgrade automáticos na linha de comando, use as flags
--enable-autoprovisioning-autorepair
e--enable-autoprovisioning-autoupgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
Para desativar as configurações de reparo e upgrade automáticos na linha de comando, use as flags
--no-enable-autoprovisioning-autorepair
e--no-enable-autoprovisioning-autoupgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
Para modificar as configurações de reparo e upgrade automáticos de nós usando um arquivo de configuração, siga estas etapas:
Especifique os campos
management.autoRepair
emanagement.autoUpgrade
no arquivo de configuração:management: autoRepair: true autoUpgrade: true
Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
Configurar as opções de upgrade súbito
É possível especificar configurações de upgrade súbito em pools de nós criados automaticamente. Os upgrades súbitos são a estratégia de upgrade de nós padrão do GKE. Para mudar as configurações de upgrade súbito, configure o provisionamento automático de nós no nível do cluster.
Para especificar as configurações de upgrade súbito na linha de comando, use as sinalizações
--autoprovisioning-max-surge-upgrade
e--autoprovisioning-max-unavailable-upgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade=MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE
Substitua:
MAX_SURGE
: o número máximo de nós que podem ser adicionados ao pool de nós durante os upgrades.MAX_UNAVAILABLE
: o número máximo de nós no pool de nós que podem estar indisponíveis simultaneamente durante os upgrades.
Para especificar configurações de upgrade súbito usando um arquivo de configuração, siga estas etapas:
Especifique os campos
upgradeSettings.maxSurgeUpgrade
eupgradeSettings.maxUnavailableUpgrade
no arquivo de configuração:upgradeSettings: maxSurgeUpgrade: MAX_SURGE maxUnavailableUpgrade: MAX_UNAVAILABLE
Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
As configurações de upgrade de sobretensão especificadas só serão aplicadas se o cluster usar upgrades de sobretensão para fazer upgrade de pools de nós criados automaticamente. Para mudar sua estratégia de upgrade de nós para upgrades de sobretensão em novos pools de nós criados automaticamente, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--enable-autoprovisioning-surge-upgrade
Quando você muda a estratégia de upgrade, o GKE usa todas as configurações que você configurou anteriormente para essa estratégia.
Usar upgrades azul-verde para novos pools de nós criados automaticamente
É possível mudar a estratégia de upgrade de nós para upgrades azul-verde em todos os novos pools de nós criados automaticamente e ajustar as configurações padrão para upgrades azul-verde. Para mudar sua estratégia de upgrade, configure o provisionamento automático de nós no nível do cluster. As mudanças feitas só se aplicam a novos pools de nós criados automaticamente. Também é possível atualizar os pools de nós criados automaticamente para usar upgrades azul-verde.
Para usar upgrades azul-verde e as configurações padrão do GKE para novos pools de nós criados automaticamente, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
Para usar upgrades azul-verde e configurar suas próprias configurações padrão para novos pools de nós criados automaticamente, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
Substitua:
NODE_POOL_SOAK_DURATION
: a duração, em segundos, que o GKE aguarda após drenar todos os lotes de nós no pool azul antes de excluir o pool azul. O valor padrão é3600
.BATCH_NODE_COUNT
: o número de nós a serem drenados em um lote durante a fase de drenagem do pool azul. O valor padrão é1
. Se você especificar um valor de0
, o GKE vai ignorar a fase de drenagem do pool azul.BATCH_SOAK_DURATION
: a duração, em segundos, que o GKE aguarda para iniciar uma operação de drenagem em lote após a conclusão da operação anterior. O valor padrão é0
.
Configurar discos de inicialização de nós personalizados
Para especificar o tipo e o tamanho dos discos de inicialização que o GKE anexa a cada VM de nó em um pool de nós criado automaticamente, selecione uma das seguintes opções:
ComputeClass
Use os campos
bootDiskType
ebootDiskSize
no campospec.priorities.storage
em uma ComputeClass:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE - machineFamily: n4d storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua:
BOOT_DISK_TYPE
: o tipo de disco a ser usado como disco de inicialização do nó. O valor especificado precisa ser compatível com o tipo de máquina do Compute Engine usado pelo GKE para essa regra de prioridade. O valor precisa ser um dos seguintes:pd-balanced
: Persistent Disk equilibrado.pd-standard
: Persistent Disk padrão.pd-ssd
: Persistent Disk de desempenho (SSD).hyperdisk-balanced
: hiperdisco equilibrado do Google Cloud.
BOOT_DISK_SIZE
: o tamanho do disco de inicialização do nó em GiB. O valor mínimo é10
.
Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
gcloud
No arquivo de configuração, especifique os campos
diskSizeGb
ediskType
:diskSizeGb: BOOT_DISK_SIZE diskType: BOOT_DISK_TYPE
Substitua:
BOOT_DISK_TYPE
: o tipo de disco a ser usado como disco de inicialização do nó. O valor especificado precisa ser compatível com o tipo de máquina do Compute Engine usado pelo GKE para essa regra de prioridade. O valor precisa ser um dos seguintes:pd-balanced
: Persistent Disk equilibrado.pd-standard
: Persistent Disk padrão.pd-ssd
: Persistent Disk de desempenho (SSD).hyperdisk-balanced
: hiperdisco equilibrado do Google Cloud.
BOOT_DISK_SIZE
: o tamanho do disco de inicialização do nó em GiB. O valor mínimo é10
.
Se o arquivo de configuração tiver outras configurações, não as modifique. Qualquer modificação ou remoção no arquivo de configuração também altera as configurações correspondentes no nível do cluster.
Forneça o arquivo de configuração ao GKE especificando as flags
--autoprovisioning-config-file
e--enable-autoprovisioning
para um cluster novo ou atual:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Substitua:
CLUSTER_NAME
: o nome do cluster.PATH_TO_CONFIGURATION_FILE
: o caminho para o arquivo de configuração.
O GKE reserva uma parte do disco de inicialização do nó para a funcionalidade do sistema e para o armazenamento temporário. Para mais informações, consulte Armazenamento temporário baseado em disco de inicialização de nós.
Configurar pools de nós criados automaticamente para cenários comuns
As seções a seguir mostram como solicitar pools de nós criados automaticamente para alguns casos de uso comuns do GKE. Para mais informações sobre outros casos de uso e configurações compatíveis, consulte a documentação do seu caso de uso específico.
Selecione uma série ou um tipo de máquina
Para selecionar uma série ou tipo de máquina do Compute Engine compatível, escolha uma das seguintes opções:
ComputeClass
Em um manifesto do ComputeClass, especifique um dos seguintes campos no campo
spec.priorities
. É possível especificar os dois campos no mesmo manifesto ComputeClass, mas não na mesma regra de prioridade.Para selecionar uma série de máquinas, especifique o campo
machineFamily
em uma regra de prioridade:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: MACHINE_SERIES whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua
MACHINE_SERIES
por uma série de máquinas do Compute Engine, comon4
.Para selecionar um tipo de máquina, especifique o campo
machineType
em uma regra de prioridade:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineType: MACHINE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Substitua
MACHINE_TYPE
por um tipo de máquina do Compute Engine, comoc4-standard-96
. Na versão 1.33.2-gke.1111000 e mais recentes do GKE, também é possível especificar tipos de máquina personalizados neste campo.
Não é possível especificar os campos
machineFamily
emachineType
na mesma regra de prioridade.Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
Especificação do pod
Em um manifesto do pod, selecione um dos seguintes rótulos de nó:
Para selecionar uma série de máquinas, use o rótulo do nó
cloud.google.com/machine-family
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Substitua
MACHINE_SERIES
por uma série de máquinas do Compute Engine, comon4
.Para selecionar um tipo de máquina predefinido, use os rótulos de nó
cloud.google.com/machine-family
enode.kubernetes.io/instance-type
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES node.kubernetes.io/instance-type: MACHINE_TYPE containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Substitua
MACHINE_TYPE
por um tipo de máquina do Compute Engine na série especificada. Por exemplo, se você especificarn4
paraMACHINE_SERIES
, poderá especificarn4-standard-80
paraMACHINE_TYPE
.Na versão 1.33.2-gke.1111000 do GKE, também é possível especificar tipos de máquina personalizados nesse campo.
Crie o pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Substitua
PATH_TO_POD_MANIFEST
pelo caminho para o manifesto do pod.
Selecionar GPUs
Para solicitar GPUs para pools de nós criados automaticamente, selecione uma das seguintes opções:
ComputeClass
Em um manifesto ComputeClass, especifique o campo
spec.priorities.gpu
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - gpu: type: GPU_TYPE count: GPU_COUNT driverVersion: DRIVER_VERSION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
Substitua:
GPU_TYPE
: o tipo de GPU a ser anexado, comonvidia-l4
.GPU_COUNT
: o número de GPUs que serão anexadas a cada nó. Esse valor precisa ser pelo menos1
.DRIVER_VERSION
: a versão do driver da GPU a ser instalada. Esse valor precisa serdefault
oulatest
. Esse campo exige a versão 1.31.1-gke.1858000 ou mais recente do GKE.
Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.Selecione a ComputeClass em uma carga de trabalho de GPU, como no exemplo a seguir:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/compute-class: nvidia-l4-class containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: 1
Especificação do pod
Para selecionar GPUs nas especificações do pod, configure o provisionamento automático de nós no nível do cluster e defina limites de recursos para esse tipo de GPU. Para configurar limites de recursos de GPU e selecionar GPUs nos seus pods, siga estas etapas:
- Configure os limites de recursos no nível do cluster para as GPUs que você quer usar, conforme descrito na seção Configurar limites de recursos para a criação automática de pool de nós de nós.
Selecione GPUs usando rótulos de nós na especificação do pod:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/gke-accelerator: GPU_TYPE cloud.google.com/gke-accelerator-count: GPU_COUNT cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: GPU_QUANTITY
Substitua:
GPU_TYPE
: o tipo de GPU a ser anexado, comonvidia-l4
.GPU_COUNT
: o número de GPUs que serão anexadas a cada nó. Esse valor precisa ser pelo menos1
.DRIVER_VERSION
: a versão do driver da GPU a ser instalada. Esse valor precisa serdefault
oulatest
. Na versão 1.32.2-gke.1297000 e mais recente do GKE, o GKE instala automaticamente a versão do driverdefault
. Esse rótulo de nó exige o GKE versão 1.29.2-gke.1108000 ou posterior. Para mais informações, consulte Como instalar drivers usando o provisionamento automático de nós com GPUs.GPU_QUANTITY
: o número de GPUs a serem anexadas ao pod. Esse valor precisa ser menor ou igual ao deGPU_COUNT
.
Selecionar TPUs
É possível solicitar TPUs em ComputeClasses ou especificações de pod. Esta seção pressupõe que você já conhece a seleção de Cloud TPU e sabe o tipo, a topologia e a contagem de TPU que quer usar. As etapas a seguir dependem de como você seleciona as TPUs:
- ComputeClasses: consulte Provisionar TPUs usando classes de computação personalizadas.
- Especificação do pod:
- Configure os limites de recursos no nível do cluster para as TPUs que você quer usar, conforme descrito na seção Configurar limites de recursos para a criação automática de pool de nós de nós.
- Configure seletores e solicitações de recursos nas especificações do pod, conforme descrito em Executar sua carga de trabalho em nós de fração de TPU.
Limitar o tempo de execução dos nós criados automaticamente
É possível especificar uma duração máxima após a qual o GKE encerra os nós criados automaticamente. As restrições do Compute Engine se aplicam a esse limite de tempo.
Selecione uma das seguintes opções:
ComputeClass
Em um manifesto ComputeClass, use o campo
spec.priorities.maxRunDurationSeconds
. Esse campo está disponível no GKE versão 1.32.1-gke.1159000 e mais recentes.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machine-family: n4 maxRunDurationSeconds: MAX_RUN_DURATION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
Substitua
MAX_RUN_DURATION
pelo tempo, em segundos, que os nós criados automaticamente podem ser executados antes de o GKE encerrar os nós.Aplique o manifesto ComputeClass ao cluster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Substitua
PATH_TO_COMPUTECLASS_MANIFEST
pelo caminho para o arquivo de manifesto ComputeClass.
Especificação do pod
No manifesto do pod, use um seletor de nós para o rótulo do nó
cloud.google.com/gke-max-run-duration-seconds
. Esse rótulo de nó está disponível no GKE versão 1.31.2-gke.1518000 e mais recentes.apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: n4 cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Substitua
MAX_RUN_DURATION
pelo tempo, em segundos, que os nós criados automaticamente podem ser executados antes de o GKE encerrar os nós.Crie o pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Substitua
PATH_TO_POD_MANIFEST
pelo caminho para o manifesto do pod.
Especificar uma plataforma mínima de CPU
O provisionamento automático de nós oferece suporte à criação de pools de nós com uma plataforma de CPU mínima especificada. É possível especificar a plataforma de CPU mínima no nível da carga de trabalho (recomendado) ou no nível do cluster.
Desativar a criação automática de pool de nós
Nas seções a seguir, mostramos como desativar a criação automática de pool de nós para
pools específicos ou para todo o cluster. Também é possível desativar a criação automática de pool de nós em uma ComputeClass especificando um valor de false
no campo nodePoolAutoCreation.enabled
da ComputeClass. No entanto, não recomendamos desativar a criação automática para ComputeClasses, porque ela é um dos principais benefícios desse recurso, permitindo que você use recursos como migração ativa e prioridades de fallback.
Desativar a criação automática de pools de nós específicos
É possível impedir que o GKE gerencie os nós em pools de nós criados automaticamente. Essa ação tem os seguintes efeitos:
- O escalonador automático de cluster para de criar ou excluir nós nesse pool de nós. Se você quiser que o GKE faça o escalonamento automático dos nós, ative o escalonador automático de cluster para esse pool de nós.
- O GKE não exclui o pool de nós quando o número de nós é zero.
- O GKE continua colocando pods pendentes em nós disponíveis no pool de nós. Se o provisionamento automático de nós ainda estiver ativado para o cluster, o GKE também poderá criar novos pools de nós para pods pendentes conforme necessário.
Para desativar a criação automática de um pool de nós específico, execute o comando a seguir:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning
Desativar o provisionamento automático de nós para o cluster
É possível desativar a criação automática de pool de nós para todo o cluster desativando a configuração de provisionamento automático de nós. Essa ação tem os seguintes efeitos:
- O escalonador automático de cluster para de criar e excluir nós em pools de nós criados automaticamente. Os pools de nós criados manualmente que usam o autoescalador de cluster não são afetados.
- O GKE não cria automaticamente pools de nós para cargas de trabalho pendentes. Monitore seu cluster para evitar pods presos.
Se o cluster atender aos seguintes requisitos, o GKE continuará criando pools de nós para ComputeClasses que ativam a criação automática:
- Usa o GKE versão 1.33.3-gke.1136000 ou mais recente.
- Está inscrito no canal de lançamento rápido.
Se o cluster não atender a esses requisitos, o GKE não criará pools de nós para ComputeClasses que ativam a criação automática.
Se você reativar a configuração de provisionamento automático de nós no nível do cluster mais tarde, o GKE não vai reativar a criação automática de pool de nós nos pools de nós existentes. É necessário marcar cada pool de nós como criado automaticamente.
Para desativar a configuração de provisionamento automático de nós no nível do cluster, selecione uma das seguintes opções:
Console
No console Google Cloud , acesse a página Clusters do Kubernetes:
Clique no nome do cluster que você quer modificar. A página Detalhes do cluster é aberta.
Clique na guia Detalhes.
Na seção Automação, na linha Provisionamento automático de nós, clique em Editar. O painel Editar provisionamento automático de nós aparece.
Desmarque a caixa de seleção Ativar provisionamento automático de nós.
Clique em Salvar alterações.
gcloud
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning
A seguir
- Saiba mais sobre o autoescalador de clusters.
- Saiba mais sobre pools de nós.
- Saiba mais sobre as estratégias de upgrade de nós.