Como usar o provisionamento automático de nós


Nesta página, explicamos como usar o provisionamento automático de nós em clusters padrão do Google Kubernetes Engine (GKE).

Com os clusters do Autopilot, você não precisa se preocupar com o provisionamento de nós ou o gerenciamento de pools de nós porque eles são provisionados automaticamente usando o provisionamento automático de nós, e são escalonadas automaticamente para atender aos requisitos das cargas de trabalho.

Visão geral

O provisionamento automático de nós gerencia automaticamente um conjunto de pools de nós em nome do usuário. Sem o provisionamento automático do nós, o GKE considera a inicialização de novos nós somente a partir do conjunto de pools de nós criados pelo usuário. Com esse recurso, é possível criar e excluir novos pools de nós automaticamente.

Antes de começar

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

Defina as configurações padrão da gcloud usando um dos métodos a seguir:

  • Use gcloud init se quiser orientações para definir os padrões.
  • Use gcloud config para definir individualmente a região, a zona e o ID do projeto.

Como usar o gcloud init

Se você receber o erro One of [--zone, --region] must be supplied: Please specify location, conclua esta seção.

  1. Execute gcloud init e siga as instruções:

    gcloud init

    Se você estiver usando SSH em um servidor remoto, utilize a sinalização --console-only para impedir que o comando inicie um navegador:

    gcloud init --console-only
  2. Siga as instruções para autorizar a gcloud a usar sua conta do Google Cloud.
  3. Crie uma nova configuração ou selecione uma atual.
  4. Escolha um projeto do Google Cloud.
  5. Escolha uma zona padrão do Compute Engine para clusters zonais ou uma região para clusters regionais ou de Autopilot.

Como usar o gcloud config

  • Defina o ID do projeto padrão:
    gcloud config set project PROJECT_ID
  • Se você estiver trabalhando com clusters zonais, defina a zona do Compute padrão:
    gcloud config set compute/zone COMPUTE_ZONE
  • Se você estiver trabalhando com clusters de Autopilot ou regionais, defina a região do Compute padrão:
    gcloud config set compute/region COMPUTE_REGION
  • Atualize gcloud para a versão mais recente:
    gcloud components update

Requisitos

O provisionamento automático de nós está disponível nas seguintes versões do GKE:

  • versão 1.11.2-gke.25 e superior para clusters zonais;
  • versão 1.12.x e superior para clusters regionais.

Recursos não suportados

Os recursos a seguir não são compatíveis com o provisionamento automático de nós, o que significa que o provisionamento automático de nós não fornecerá pools de nós com esses recursos, mas fará o escalonamento automático dos pools de nós existentes:

Operação

O provisionamento automático de nós é um mecanismo do escalonador automático de clusters, que escalona por pool de nós. Com o provisionamento automático de nós ativado, o escalonador automático de cluster pode estender os pools de nós automaticamente com base nas especificações dos pods não programáveis.

O provisionamento automático de nós cria pools de nós com base nestas informações:

Limites de recursos

O provisionamento automático de nós e o autoescalador de clusters têm limites em dois níveis:

  • Nível do pool de nós
  • Nível do cluster

Limites dos pools de nós

Os pools de nós criados pelo provisionamento automático de nós estão limitados a 1.000 nós.

Limites de clusters

Os limites definidos são aplicados com base em todos os recursos de CPU e memória usados no cluster, não apenas nos pools provisionados automaticamente.

O escalonador automático de cluster não cria novos nós se essa ação exceder um dos limites definidos. Se os limites já tiverem sido excedidos, os nós não serão excluídos automaticamente.

Separação da carga de trabalho

Se os pods pendentes tiverem afinidades e tolerâncias de nó, o provisionamento automático poderá ser feito em nós com rótulos e taints correspondentes.

O provisionamento automático de nós pode criar pools de nós com rótulos e taints se todas as condições a seguir forem atendidas:

  • Um pod pendente requer um nó com uma chave de rótulo e um valor específicos.
  • O pod tem uma tolerância para um taint com a mesma chave.
  • A tolerância é para o efeito NoSchedule, NoExecute ou todos os efeitos.

A especificação do pod pode expressar que ele exige nós com rótulos específicos de duas maneiras:

  • Usando um campo nodeSelector.
  • Usando um campo nodeAffinity com um operador In e exatamente um valor.

O exemplo a seguir é um trecho de uma especificação de pod interpretada como uma solicitação de separação de carga de trabalho. Neste exemplo, o administrador do cluster escolheu dedicated como a chave que será usada para o isolamento da carga de trabalho, e a equipe da IU determinou que precisa de nós dedicados para suas cargas de trabalho.

O pod tem uma tolerância para nós rotulados com dedicated=ui-team e usa nodeAffinity para seleção de nós:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: dedicated
            operator: In
            values:
            - ui-team

Se esse pod existir, os nós com taint dedicated=ui-team:NoSchedule e rótulo dedicated=ui-team serão considerados para criação pelo provisionamento automático de nós.

O exemplo a seguir usa nodeSelector e tem o mesmo efeito:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  nodeSelector:
    dedicated: ui-team

Exclusão de pools de nós provisionados automaticamente

Quando não há nós em um pool de nós provisionado automaticamente, o GKE exclui o pool de nós. Os pools de nós que não estão marcados como provisionados automaticamente não são excluídos.

Tipos de máquinas compatíveis

A partir do GKE 1.19.7-gke.800, o provisionamento automático de nós considera todos os tipos de máquinas ao criar pools de nós, com exceção das máquinas N1, o provisionamento automático de nós considera apenas as máquinas com até 64 vCPUs. Por padrão, a família de máquinas E2 é usada, a menos que:

  • A carga de trabalho solicita um recurso que não está disponível na família de máquinas E2. Por exemplo, se uma GPU for solicitada pela carga de trabalho, a família de máquinas N1 será usada para o novo pool de nós.
  • A carga de trabalho usa o rótulo da família de máquinas. Isso poderá ser substituído se a solicitação de carga de trabalho não for atendida (o ponto anterior). Para obter mais informações, consulte Como usar uma família de máquinas personalizada.

Nas versões anteriores ao GKE 1.19.7-gke.800, o provisionamento automático de nós considera apenas os tipos de máquinas N1 com até 64 vCPUs.

Imagens de nó compatíveis

O provisionamento automático de nós cria pools de nós usando uma das seguintes imagens de nó:

  • Container-Optimized OS (cos ou cos_containerd)
  • Ubuntu (ubuntu ou ubuntu_containerd)

Suporte para VMs preemptivas

O provisionamento automático de nós oferece suporte à criação de pools de nós com base em instâncias de máquinas virtuais (VM) preemptivas.

A criação de pools de nós com base em VMs preemptivas apenas será considerada se existirem pods não programáveis com tolerância para o taint cloud.google.com/gke-preemptible="true":NoSchedule.

Os nós baseados em VMs preemptivas e criados por pools de nós automaticamente provisionados têm o taint aplicado.

Suporte para pods que solicitam armazenamento temporário

O provisionamento automático de nós é compatível com a criação de pools de nós quando os pods solicitam armazenamento temporário. O tamanho do disco de inicialização provisionado nos pools de nós é constante para todos os novos pools de nós provisionados automaticamente. Esse tamanho do disco de inicialização pode ser personalizado, em que o padrão é 100 GiB. O armazenamento temporário com suporte de SSDs locais não é compatível.

O provisionamento automático de nós provisionará um pool de nós somente se o armazenamento temporário alocável de um nó com um disco de inicialização especificado for maior ou igual à solicitação de armazenamento temporário de um pod pendente. Se a solicitação de armazenamento temporário for maior do que a alocação, o provisionamento automático de nós não provisionará um pool de nós. Os tamanhos de disco para nós não são configurados dinamicamente com base nas solicitações de armazenamento temporário de pods pendentes.

Essa compatibilidade com armazenamento temporário para pods é compatível com as versões 1.19.7-gke.800 ou posteriores e 1.18.12-gke.1210 ou posteriores do GKE.

Limitações de escalonabilidade

O provisionamento automático de nós tem as mesmas limitações que o escalonador automático de cluster, bem como as seguintes limitações adicionais:

Limite no número de cargas de trabalho separadas
O provisionamento automático de nós é compatível com no máximo 100 cargas de trabalho separadas e diferentes.
Limite no número de pools de nós
O provisionamento automático de nós deixa de priorizar a criação de novos pools quando a quantidade deles chega perto de 100. Criar mais de 100 pools de nós é possível, mas só quando isso é a única opção para programar um pod pendente.

Como ativar o provisionamento automático de nós

Use gcloud ou o Console do Google Cloud para ativar o provisionamento automático de nós nos clusters.

gcloud

Para ativar o provisionamento automático de nós, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --min-cpu MINIMUM_CPU \
    --min-memory MIMIMUM_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.
  • MINIMUM_CPU: o número mínimo de núcleos no cluster.
  • MINIMUM_MEMORY: o número mínimo de gigabytes de memória no cluster.
  • MAXIMUM_CPU: o número máximo de núcleos no cluster.
  • MAXIMUM_MEMORY: o número máximo de gigabytes de memória no cluster.

O exemplo a seguir ativa o provisionamento automático de nós no dev-cluster e permite o escalonamento entre um tamanho de cluster total de 1 CPU e 1 gigabyte de memória a um máximo de 10 CPUs e 64 gigabytes de memória:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --min-cpu 1 \
    --min-memory 1 \
    --max-cpu 10 \
    --max-memory 64

Console

Para ativar o provisionamento automático de nós, execute as seguintes etapas:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud.

    Acessar o Google Kubernetes Engine

  2. Selecione o cluster desejado.

  3. Clique no ícone .

  4. Role para baixo até Provisionamento automático de nós e selecione Ativado.

  5. Defina o uso mínimo e máximo da CPU e da memória para o cluster.

  6. Clique em Salvar. O GKE atualizará o cluster.

Como usar um arquivo de configuração de provisionamento automático

O provisionamento automático de nós pode ser configurado usando um arquivo de configuração YAML. Se for usado para alterar uma única configuração, o arquivo de configuração poderá conter apenas uma linha. Várias definições podem ser especificadas em um único arquivo de configuração. Nesse caso, todas elas serão alteradas quando o arquivo de configuração for aplicado.

Algumas configurações avançadas só podem ser especificadas com um arquivo de configuração.

Exemplo 1: a aplicação do arquivo de configuração a seguir permite o reparo e upgrade automáticos de nós para qualquer novo pool de nós criado pelo provisionamento automático:

management:
  autoRepair: true
  autoUpgrade: true

Exemplo 2: a aplicação do arquivo de configuração abaixo altera as seguintes configurações:

  • Define limites de recursos para CPU, memória e GPU. O provisionamento automático de nós não criará um nó se o tamanho total do cluster exceder os limites de recursos especificados.
  • Ativa o reparo e o upgrade automáticos de nós em qualquer novo pool de nós criado pelo provisionamento automático de nós.
  • Permite o Monitoramento de integridade e Inicialização segura em qualquer novo pool de nós criado pelo provisionamento automático de nós.
  • Define o tamanho do disco de inicialização como 100 GB para qualquer novo pool de nós criado pelo provisionamento automático de nós.
resourceLimits:
  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

Para usar um arquivo de configuração de provisionamento automático:

  1. Crie um arquivo com a configuração pretendida em um local em que gcloud possa acessá-lo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • FILE_NAME: o nome do arquivo de configuração.

    Para mais informações, consulte a documentação gcloud container clusters update.

Padrões de provisionamento automático

O provisionamento automático de nós analisa os requisitos de pods no seu cluster para determinar o tipo de nó mais adequado para esses pods. No entanto, algumas configurações de pool de nós não são especificadas diretamente pelos pods, como configurações relacionadas a upgrades de nó. Defina valores padrão para essas configurações, que serão aplicadas a todos os pools de nós recém-criados.

Como definir o tipo de imagem de nó padrão

É possível especificar o tipo de imagem de nó a ser usado em todos os novos pools de nós provisionados automaticamente usando a ferramenta gcloud ou um arquivo de configuração. Essa configuração está disponível apenas para a versão 1.20.6-gke.1800 e do cluster do GKE.

gcloud

Para definir o tipo de imagem de nó padrão, execute o comando a seguir:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-image-type IMAGE_TYPE

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • IMAGE_TYPE: o tipo de imagem do nó, que pode ser um dos seguintes:

    • cos_containerd: Container-Optimized OS com o containerd
    • cos: Container-Optimized OS com Docker
    • ubuntu_containerd Ubuntu com o containerd.
    • ubuntu: Ubuntu com Docker

arquivo

Para todos os novos pools de nós provisionados automaticamente, é possível especificar o tipo de imagem do nó a ser usado usando um arquivo de configuração. A seguinte configuração YAML especifica que, para novos pools de nós provisionados automaticamente, o tipo de imagem é cos_containerd e tem limites de recursos associados para CPU e memória. Para ativar o provisionamento automático, especifique os valores máximos para CPU e memória.

  1. Salve a configuração do YAML:

    resourceLimits:
      - resourceType: 'cpu'
          minimum: 4
          maximum: 10
      - resourceType: 'memory'
          maximum: 64
    autoprovisioningNodePoolDefaults:
      imageType: 'cos_containerd'
    
  2. Aplique a configuração:

    gcloud container clusters update CLUSTER_NAME \
      --enable-autoprovisioning \
      --autoprovisioning-config-file FILE_NAME
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • FILE_NAME: o nome do arquivo de configuração.

Como definir padrões de identidade para pools de nós com provisionamento automático

As permissões para recursos do Google Cloud são fornecidas por identidades.

É possível especificar uma identidade padrão (uma conta de serviço ou pelo menos um escopo) para novos pools de nós com provisionamento automático usando a ferramenta gcloud ou um arquivo de configuração.

gcloud

Para especificar a conta de serviço padrão do IAM usada pelo provisionamento automático de nós, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • SERVICE_ACCOUNT: o nome da conta de serviço padrão.

O exemplo a seguir define test-service-account@google.com como a conta de serviço padrão no cluster dev-cluster:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com

Para especificar os escopos padrão usados pelo provisionamento automático de nós, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-scopes=SCOPE

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • SCOPE: os escopos do Google Cloud usados pelos pools de nós com provisionamento automático. Para especificar vários escopos, separe-os por vírgula. por exemplo: SCOPE1, SCOPE2,....

O exemplo a seguir define o escopo padrão no cluster dev-cluster como devstorage.read_only:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only

arquivo

É possível especificar o padrão de identidade usado pelo provisionamento automático de nós usando um arquivo de configuração. A seguinte configuração YAML define a conta de serviço do IAM:

  serviceAccount: SERVICE_ACCOUNT

Substitua SERVICE_ACCOUNT pelo nome da conta de serviço padrão.

Como alternativa, é possível usar a configuração YAML a seguir para especificar os escopos padrão usados pelo provisionamento automático de nós:

  scopes: SCOPE

Substitua SCOPE pelo escopo do Google Cloud usado pelos pools de nós com provisionamento automático. Para especificar vários escopos, separe-os com vírgulas. Por exemplo: SCOPE1, SCOPE2,....

Para usar um arquivo de configuração de provisionamento automático:

  1. Crie um arquivo de configuração especificando os padrões de identidade em um local em que gcloud possa acessá-lo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • FILE_NAME: o nome do arquivo de configuração.

Chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês)

É possível especificar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) usadas por novos pools de nós provisionados automaticamente.

É possível ativar a criptografia gerenciada pelo cliente para unidades de inicialização usando um arquivo de configuração. A seguinte configuração YAML define a chave de CMEK:

  bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Substitua:

  • KEY_PROJECT_ID: o ID de projeto da chave;
  • LOCATION: a localização do keyring;
  • KEY_RING: o nome do keyring;
  • KEY_NAME: o nome da chave;

Para usar um arquivo de configuração de provisionamento automático:

  1. Crie um arquivo de configuração especificando uma chave de CMEK em um local em que gcloud possa acessá-la.

  2. Aplique a configuração ao cluster executando o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • FILE_NAME: o nome do arquivo de configuração.

Integridade de nós

O provisionamento automático de nós é compatível com a criação de pools de nós com o Monitoramento de integridade e Inicialização segura ativado.

É possível ativar o Monitoramento de integridade e Inicialização segura usando um arquivo de configuração. A seguinte configuração YAML ativa a Inicialização segura e desativa o Monitoramento de integridade:

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

Para usar um arquivo de configuração de provisionamento automático:

  1. Copie a configuração acima para um arquivo em um local onde gcloud possa acessá-lo. Edite os valores de enableSecureBoot e enableIntegrityMonitoring. Salve o arquivo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • FILE_NAME: o nome do arquivo de configuração.

Reparo e upgrade automáticos de nós

O provisionamento automático de nós é compatível com a criação de pools de nós com o reparo e o upgrade automáticos de nós ativados.

gcloud

Para ativar o reparo e o upgrade automáticos em todos os novos pools de nós provisionados automaticamente, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --enable-autoprovisioning-autorepair \
    --enable-autoprovisioning-autoupgrade

Substitua CLUSTER_NAME pelo nome do cluster.

Para desativar o reparo e o upgrade automáticos em todos os novos pools de nós provisionados automaticamente, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \
    --no-enable-autoprovisioning-autoupgrade

Substitua CLUSTER_NAME pelo nome do cluster.

arquivo

É possível ativar ou desativar o reparo e o upgrade automáticos de nós usando um arquivo de configuração. A configuração YAML a seguir ativa o reparo automático e desativa o upgrade automático:

  management:
    autoRepair: true
    autoUpgrade: false

Para usar um arquivo de configuração de provisionamento automático:

  1. Copie a configuração acima para um arquivo em um local onde gcloud possa acessá-lo. Edite os valores de autoUpgrade e autoRepair. Salve o arquivo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • FILE_NAME: o nome do arquivo de configuração.

Configurações de upgrades súbitos do nó

É possível especificar configurações de upgrade súbito em todos os novos pools de nós provisionados automaticamente usando a ferramenta gcloud ou um arquivo de configuração.

gcloud

Para especificar as configurações de upgrade súbito para todos os novos pools de nós provisionados automaticamente, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-max-surge-upgrade MAX_SURGE \
    --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • 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.

arquivo

É possível especificar configurações de upgrade súbito para todos os novos pools de nós provisionados automaticamente usando um arquivo de configuração como o seguinte:

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

Para usar um arquivo de configuração de provisionamento automático:

  1. Copie a configuração acima para um arquivo em um local onde gcloud possa acessá-lo. Edite os valores de maxSurgeUpgrade e maxUnavailableUpgrade. Salve o arquivo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • FILE_NAME: o nome do arquivo de configuração.

Para mais informações, consulte a documentação gcloud container clusters update.

Discos de inicialização personalizados

O provisionamento automático de nós é compatível com a criação de pools de nós com discos de inicialização personalizados.

É possível personalizar a configuração do disco de inicialização usando um arquivo de configuração. A seguinte configuração YAML faz com que o provisionamento automático de nós crie pools de nós com discos SSD de 100 GB:

  diskSizeGb: 100
  diskType: pd-ssd

Especifique o seguinte:

  • diskSizeGb: o tamanho do disco, especificado em GB;
  • diskType: o tipo de disco, que pode ser um dos seguintes valores:
    • pd-standard: um disco permanente padrão (padrão);
    • pd-ssd: um disco permanente SSD.

Para usar um arquivo de configuração de provisionamento automático:

  1. Crie um arquivo com a configuração do disco de inicialização pretendida em um local em que gcloud possa acessá-lo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • FILE_NAME: o nome do arquivo de configuração.

Plataforma mínima de CPU

O provisionamento automático de nós é compatível com a criação de pools de nós com uma plataforma mínima de CPU.

É possível especificar a plataforma de CPU mínima padrão para novos pools de nós provisionados automaticamente usando a ferramenta gcloud ou um arquivo de configuração.

gcloud

Para definir a plataforma de CPU mínima padrão, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-min-cpu-platform MIN_CPU_PLATFORM

Substitua:

arquivo

Para definir a plataforma mínima padrão de CPU, use um arquivo de configuração. A seguinte configuração YAML define a plataforma mínima de CPU padrão:

minCpuPlatform: MIN_CPU_PLATFORM

Substitua MIN_CPU_PLATFORM pela plataforma mínima de CPU pretendida.

Para usar um arquivo de configuração de provisionamento automático:

  1. Crie um arquivo de configuração especificando a plataforma mínima de CPU em um local em que gcloud possa acessá-lo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • FILE_NAME: o nome do arquivo de configuração.

Como configurar limites de GPU

Ao usar o provisionamento automático de nós com GPUs, defina o limite máximo de cada tipo de GPU no cluster usando a ferramenta gcloud ou o Console do Google Cloud. Para configurar vários tipos de GPU, use um arquivo de configuração.

Para listar os resourceTypes disponíveis, execute gcloud compute accelerator-types list.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY \
    --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \
    --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • MAXIMUM_CPU: o número máximo de núcleos no cluster;
  • MAXIMUM_MEMORY: o número máximo de gigabytes de memória no cluster.
  • GPU_TYPE: o tipo de GPU.
  • MINIMUM_ACCELERATOR: o número mínimo de aceleradores de GPU no cluster.
  • MAXIMUM_ACCELERATOR: o número máximo de aceleradores de GPU no cluster.

O exemplo a seguir define os limites de GPU para o tipo de acelerador de GPU nvidia-tesla-k80 no cluster dev-cluster:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --max-cpu 10 \
    --max-memory 64 \
    --min-accelerator type=nvidia-tesla-k80,count=1 \
    --max-accelerator type=nvidia-tesla-k80,count=4

arquivo

É possível carregar limites para vários tipos de GPU usando um arquivo de configuração. A seguinte configuração YAML configura dois tipos diferentes de GPUs:

  resourceLimits:
    -resourceType: 'cpu'
     minimum: 4
     maximum: 10
    -resourceType: 'memory'
     maximum: 64
    -resourceType: 'nvidia-tesla-k80'
     maximum: 4
    -resourceType: 'nvidia-tesla-v100'
     maximum: 2

Para usar um arquivo de configuração de provisionamento automático:

  1. Copie a configuração acima para um arquivo em um local onde gcloud possa acessá-lo. Edite os valores de cpu e memory. Adicione quantos valores forem necessários para resourceType. Salve o arquivo.

  2. Aplique a configuração ao cluster executando o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • FILE_NAME: o nome do arquivo de configuração.

Para mais informações, consulte a documentação gcloud container clusters update.

Console

Para ativar o provisionamento automático de nós com recursos de GPU, execute as seguintes etapas:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud.

    Acessar o Google Kubernetes Engine

  2. Selecione o cluster desejado.

  3. Clique no ícone Editar.

  4. Role para baixo até Provisionamento automático de nós e selecione Ativado.

  5. Defina o uso mínimo e máximo da CPU e da memória para o cluster.

  6. Clique em Adicionar recurso.

  7. Selecione o tipo de GPU que você quer adicionar, por exemplo, NVIDIA TESLA K80. Defina os números mínimo e máximo de GPUs para adicionar ao cluster.

  8. Aceite as limitações das GPUs no GKE.

  9. Clique em Salvar. O GKE atualizará o cluster.

Locais do provisionamento automático de nós

Defina as zonas em que o provisionamento automático de nós pode criar novos pools de nós. Não há suporte para locais regionais. Zonas precisam pertencer à mesma região que o cluster, mas não estão limitadas a locais de nós definidos no nível do cluster. Alterar os locais de provisionamento automático de nós não afeta os pools de nós existentes.

Para definir locais em que o provisionamento automático de nós pode criar novos pools de nós, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-locations=ZONE

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • ZONE: a zona em que o provisionamento automático de nós pode criar novos pools de nós. Para especificar várias zonas, separe-as por vírgula. Por exemplo: ZONE1, ZONE2,....

Como desativar o provisionamento automático de nós

Quando você desativa o provisionamento automático de nós para um cluster, os pools de nós não são mais provisionados automaticamente.

gcloud

Para desativar o provisionamento automático de nós para um cluster, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
  --no-enable-autoprovisioning

Substitua CLUSTER_NAME pelo nome do cluster.

Console

Para desativar o provisionamento automático de nós usando o Console do Google Cloud:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud.

    Acessar o Google Kubernetes Engine

  2. Selecione o cluster desejado.

  3. Clique no ícone Editar.

  4. Role para baixo até Provisionamento automático de nós e selecione Desativado.

Marcar o pool de nós como provisionado automaticamente

Depois de ativar o provisionamento automático de nós no cluster, especifique quais pools de nós serão provisionados automaticamente. Um pool de nós desse tipo é excluído automaticamente quando não é usado por nenhuma carga de trabalho.

Para marcar um pool de nós como automaticamente provisionado, execute o seguinte comando:

gcloud container node-pools update NODE_POOL_NAME \
  --enable-autoprovisioning

Substitua NODE_POOL_NAME pelo nome do pool de nós.

Como marcar o pool de nós como não provisionado automaticamente

Para marcar um pool de nós como não provisionado automaticamente, execute o seguinte comando:

gcloud container node-pools update NODE_POOL_NAME \
  --no-enable-autoprovisioning

Substitua NODE_POOL_NAME pelo nome do pool de nós.

Como usar uma família de máquinas personalizada

A partir do GKE 1.19.7-gke.800, é possível escolher uma família de máquinas para suas cargas de trabalho. Isso é feito das seguintes maneiras:

  • Definindo a afinidade do nó com a chave de cloud.google.com/machine-family, o operador In e o valor como a família de máquinas desejada (por exemplo, n2).
  • Adicionando um nodeSelector com a chave de cloud.google.com/machine-family e o valor como a família de máquinas desejada.

Confira um exemplo que define o nodeAffinity para uma família de máquinas de n2:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.google.com/machine-family
            operator: In
            values:
            - n2

Após aplicar as alterações, o provisionamento automático de nós escolhe o melhor pool de nós com um tipo de máquina dentro da família de máquinas especificada. Se vários valores forem usados para a expressão correspondente, um valor será escolhido arbitrariamente.

A seguir