Configurar a criação automática de pool de nós

É 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:

  1. 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.

  2. Se o cluster não atender aos requisitos da etapa anterior, ative o provisionamento automático de nós no nível do cluster.

  3. 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.

  4. 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.

  5. Salve o seguinte exemplo de implantação, que seleciona uma ComputeClass, como helloweb-deploy.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  6. Crie a implantação no cluster:

    kubectl apply -f helloweb-deploy.yaml
    
  7. 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, como us-central1 ou us-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

  1. No console Google Cloud , acesse a página Criar um cluster do Kubernetes.

    Acessar "Criar um cluster do Kubernetes"

  2. Na página Noções básicas do cluster, especifique um nome e um local para o novo cluster.

  3. No menu de navegação, clique em Automação.

  4. Marque a caixa de seleção Ativar provisionamento automático de nós. Uma seção Limites aparece.

  5. Especifique limites para CPU e memória.

  6. 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, como us-central1 ou us-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:

  1. Em um editor de texto, crie um arquivo YAML em um caminho que a Google Cloud CLI possa acessar.
  2. 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.
  3. 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:

Para configurar limites de recursos em um cluster, selecione uma das seguintes opções:

Console

  1. No console Google Cloud , acesse a página Clusters do Kubernetes.

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster. A página Detalhes do cluster é aberta.

  3. Clique na guia Detalhes.

  4. 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.

  5. Marque a caixa de seleção Ativar provisionamento automático de nós.

  6. Na seção Limites, especifique os valores mínimo e máximo para a capacidade de CPU e memória no cluster.

  7. Para configurar limites para outro recurso, como GPUs ou TPUs, faça o seguinte:

    1. Clique em Adicionar recurso.
    2. 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.
    3. Especifique valores mínimos e máximos para o recurso.
  8. 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.

  9. 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, como nvidia-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 com ct5lp-.
      • tpu-v5p-slice: TPU v5e com tipos de máquina que começam com ct5p-.
      • 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 for 2x2x2, o número de chips na fração será 8, o que significa que o valor de MAXIMUM_TPU_COUNT precisa ser maior que 8.

Arquivo de configuração

  1. 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, como nvidia-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 com ct5lp-.
        • tpu-v5p-slice: TPU v5e com tipos de máquina que começam com ct5p-.
        • 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 de TPU1_TYPE for 2x2x2, o número de chips na fração será 8, o que significa que o valor de MAXIMUM_TPU1_COUNT precisa ser maior que 8.
  2. 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

  1. 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 containerd
    • ubuntu_containerd Ubuntu com o containerd.
  2. 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 containerd
    • ubuntu_containerd Ubuntu com o containerd.

Para definir a imagem padrão do nó em um arquivo de configuração, siga estas etapas:

  1. 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.

  2. 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

  1. 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, como my-node-account.
    • PROJECT_ID: o ID do projeto da conta de serviço.
  2. 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, como my-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:

  1. No arquivo de configuração, especifique os campos serviceAccount e scopes:

    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.

  2. 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

  1. 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, como us-central1-a','us-central1-b', 'us-central1-f'. O GKE usa essas zonas se regras específicas no campo spec.priorities não incluem uma lista explícita de zonas.

  2. 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:

  1. 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.

  2. 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".

  1. 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;
  2. 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

  1. 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.

  2. 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.

  1. 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.

  2. 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

  1. Em um manifesto ComputeClass, use o campo autoRepair e o campo autoUpgrade no campo spec.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
    
  2. 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:

    1. Especifique os campos management.autoRepair e management.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.

    2. 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:

    1. Especifique os campos upgradeSettings.maxSurgeUpgrade e upgradeSettings.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.

    2. 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 de 0, 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

  1. Use os campos bootDiskType e bootDiskSize no campo spec.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.
  2. 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

  1. No arquivo de configuração, especifique os campos diskSizeGb e diskType:

    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.

  2. 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

  1. 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, como n4.

    • 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, como c4-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 e machineType na mesma regra de prioridade.

  2. 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.

  3. Selecione a ComputeClass em uma carga de trabalho.

Especificação do pod

  1. 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, como n4.

    • Para selecionar um tipo de máquina predefinido, use os rótulos de nó cloud.google.com/machine-family e node.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ê especificar n4 para MACHINE_SERIES, poderá especificar n4-standard-80 para MACHINE_TYPE.

      Na versão 1.33.2-gke.1111000 do GKE, também é possível especificar tipos de máquina personalizados nesse campo.

  2. 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

  1. 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, como nvidia-l4.
    • GPU_COUNT: o número de GPUs que serão anexadas a cada nó. Esse valor precisa ser pelo menos 1.
    • DRIVER_VERSION: a versão do driver da GPU a ser instalada. Esse valor precisa ser default ou latest. Esse campo exige a versão 1.31.1-gke.1858000 ou mais recente do GKE.
  2. 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.

  3. 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:

  1. 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.
  2. 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, como nvidia-l4.
    • GPU_COUNT: o número de GPUs que serão anexadas a cada nó. Esse valor precisa ser pelo menos 1.
    • DRIVER_VERSION: a versão do driver da GPU a ser instalada. Esse valor precisa ser default ou latest. Na versão 1.32.2-gke.1297000 e mais recente do GKE, o GKE instala automaticamente a versão do driver default. 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 de GPU_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:

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

  1. 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.

  2. 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.

  3. Selecione a ComputeClass em uma carga de trabalho.

Especificação do pod

  1. 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.

  2. 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

  1. No console Google Cloud , acesse a página Clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster que você quer modificar. A página Detalhes do cluster é aberta.

  3. Clique na guia Detalhes.

  4. 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.

  5. Desmarque a caixa de seleção Ativar provisionamento automático de nós.

  6. Clique em Salvar alterações.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

A seguir