Configurar o máximo de pods por nó


Nesta página, explicamos como configurar o número máximo de pods que podem ser executados em um nó para clusters padrão. Esse valor determina o tamanho dos intervalos de endereços IP atribuídos aos nós no Google Kubernetes Engine (GKE). Os pods executados em um nó são endereços IP alocados do intervalo CIDR do nó.

Ao programar, o GKE usa o número máximo de pods por nó para determinar se há capacidade suficiente para programar um pod. Somente pods que foram atribuídos a um nó e ainda não foram encerrados (fase Failed ou Succeeded) são contabilizados nessa capacidade.

As etapas nesta página não se aplicam aos clusters do Autopilot porque o número máximo de nós é pré-configurado e imutável.

Antes de começar

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

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

Restrições

  • Só é possível configurar o máximo de pods por nó em clusters nativos de VPC.
  • A criação de nós é limitada pelo número de endereços disponíveis no intervalo de endereços do pod. Verifique a Tabela de planejamento de intervalo de endereços IP para os tamanhos padrão, mínimo e máximo do intervalo. Também é possível adicionar endereços IP de pod adicionais usando o CIDR de vários pods descontínuos.
  • Cada cluster precisa criar pods do kube-system, como kube-proxy, no namespace kube-system. Lembre-se de considerar os pods de carga de trabalho e os pods do sistema ao reduzir o número máximo de pods por nó. Para listar os pods do sistema no cluster, execute o seguinte comando:

    kubectl get pods --namespace kube-system
    

Configurar o máximo de pods por nó

Você pode configurar o número máximo de pods por nó ao criar um cluster ou um pool de nós. Não será possível alterar essa configuração depois que o cluster ou o pool de nós for criado.

No entanto, se os endereços IP do pod ficarem sem capacidade, crie intervalos de endereços IP do pod adicionais usando CIDR de vários pods distintos.

Defina o tamanho do intervalo de endereços do pod ao criar um cluster usando a gcloud CLI ou o Console do Google Cloud.

gcloud

Para definir o máximo de pods padrão por nó usando a gcloud CLI, execute este comando:

gcloud container clusters create CLUSTER_NAME \
    --enable-ip-alias \
    --cluster-ipv4-cidr=10.0.0.0/21 \
    --services-ipv4-cidr=10.4.0.0/19 \
    --create-subnetwork=name='SUBNET_NAME',range=10.5.32.0/27 \
    --default-max-pods-per-node=MAXIMUM_PODS \
    --location=COMPUTE_LOCATION

Substitua:

  • CLUSTER_NAME: o nome do novo cluster;
  • SUBNET_NAME: o nome da nova sub-rede do cluster;
  • MAXIMUM_PODS: o número máximo padrão de pods por nó para o cluster. Pode ser configurado até 256. Se omitido, o Kubernetes atribuirá o valor padrão 110.
  • COMPUTE_LOCATION: o local do Compute Engine para o novo cluster.

Console

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

    Acessar o Google Kubernetes Engine

  2. Clique em Criar.

  3. Configure seu novo cluster.

  4. No painel de navegação, em Cluster, clique em Rede.

  5. Verifique se a caixa de seleção Ativar roteamento de tráfego nativo de VPC (usa IP do alias) está marcada.

  6. No painel de navegação, em Pools de nós, clique em Nós.

  7. Defina o campo Máximo de pods por nó como 110. O GKE usa esse valor para ajustar o tamanho do intervalo de endereços IP atribuído aos nós.

  8. Clique em Criar.

Ao configurar o número máximo de pods por nó, o Kubernetes usa esse valor para alocar um intervalo CIDR para os nós. Você pode calcular o número máximo de nós no cluster com base no intervalo de endereço de IP secundário para pods e o intervalo CIDR alocado para o nó.

Por exemplo, se você definir o número máximo padrão de pods como 110 e o intervalo de endereços IP secundário dos pods como /21, o Kubernetes atribuirá um intervalo CIDR /24 aos nós no cluster. Isso permite no máximo 2(24-21) = 23 = 8 nós no cluster.

Da mesma forma, se você definir os pods máximos padrão como 8 e o intervalo de endereços IP secundários do cluster para pods como /21, o Kubernetes atribuirá um intervalo CIDR /28 aos nós. Isso permite no máximo 2(28-21) = 27 = 128 nós no cluster.

Definir o número máximo de pods em um novo pool de nós para um cluster

Também é possível especificar o número máximo de pods por nó ao criar um pool de nós em um cluster atual. Criar um novo pool de nós permite otimizar a alocação de endereços IP, mesmo em clusters atuais em que não há número máximo padrão configurado de pods por nó no nível do cluster.

A definição do número máximo de pods no nível do pool de nós substitui o máximo padrão no nível do cluster. Se você não configurar um número máximo de pods por nó ao criar o pool de nós, o máximo no nível do cluster será aplicado.

gcloud

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --max-pods-per-node=MAXIMUM_PODS

Substitua:

  • POOL_NAME: o nome do novo pool de nós.
  • CLUSTER_NAME: o nome do cluster em que você quer criar o pool de nós.
  • MAXIMUM_PODS: o número máximo de pods nos nós do pool.

Console

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

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Clique em Adicionar pool de nós.

  4. No painel de navegação, clique em Nós.

  5. Em Rede, insira um valor para o campo Máximo de pods por nó. O GKE usa esse valor para ajustar o tamanho do intervalo de endereços IP atribuído aos nós.

Sobre o máximo padrão de pods por nó

Por padrão, o GKE permite até 110 pods por nó em clusters padrão. No entanto, os clusters padrão podem ser configurados para permitir até 256 pods por nó. Os clusters do Autopilot, com base na densidade de pods de carga de trabalho esperada, escolhem o máximo de pods por nó em um intervalo entre 8 e 256. O Kubernetes atribui a cada nó um intervalo de endereços IP, um bloco CIDR, para que cada Pod tenha um endereço IP exclusivo. O tamanho do bloco CIDR corresponde ao número máximo de Pods por nó.

Intervalos CIDR de pods em clusters padrão

Com o máximo padrão de 110 pods por nó para clusters padrão, o Kubernetes atribui um bloco CIDR /24 (256 endereços) a cada um dos nós. Tendo mais que o dobro de endereços IP disponíveis que o número máximo de pods que podem ser criados em um nó, o Kubernetes pode reduzir a reutilização de endereços IP à medida que os pods são adicionados e removidos de um nó.

Embora ter 256 pods por nó seja um limite absoluto, é possível reduzir o número de pods em um nó. O tamanho do bloco CIDR atribuído a um nó depende dos pods máximos por valor de nó. O bloco sempre contém, pelo menos, o dobro de endereços do número máximo de pods por nó.

A tabela a seguir lista o tamanho do bloco CIDR e o número correspondente de endereços IP disponíveis que o Kubernetes atribui aos nós com base no número máximo de Pods por nó:

Número máximo de pods por nó Intervalo CIDR por nó Número de endereços IP
8 /28 16
9 – 16 /27 32
17 – 32 /26 64
33 – 64 /25 128
65 – 128 /24 256
129 - 256 /23 512

Intervalos CIDR de pod em clusters do Autopilot

As configurações padrão para os tamanhos de CIDR do cluster do Autopilot são as seguintes:

  • Intervalo da sub-rede: /23
  • Intervalo de endereços IP secundário para pods: /17
  • Intervalo de endereços IP secundário para Serviços: /22

O Autopilot tem um máximo de pods por nó de 32. Assim como no GKE Standard, isso resulta em um intervalo /26 sendo provisionado por nó, ou seja, 64 IPs. Um intervalo de endereços de pod de /17 resulta em um cluster compatível com no máximo 511 nós (32.766 IPs utilizáveis/64 endereços IP por nó).

Verifique se o intervalo de endereços IP secundário especificado para os pods é grande o suficiente para suportar o tamanho máximo esperado do cluster. Um intervalo de /16 (por exemplo, cluster-ipv4-cidr=10.0.0.0/16) é recomendado para aceitar o crescimento máximo do cluster.

Reduzir o número máximo de pods.

Reduzir o número máximo de pods por nó permite que o cluster tenha mais nós, já que cada um deles exige uma parte menor do espaço total de endereços IP. Uma alternativa é fornecer o mesmo número de nós no cluster, especificando um espaço de endereços IP menor para pods no momento da criação do cluster.

Reduzir o número máximo de pods por nó também permite criar clusters menores que exigem menos endereços IP. Por exemplo, com oito pods por nó, cada nó recebe um CIDR /28. Esses intervalos de endereços IP, além das sub-redes e intervalos secundários definidos, determinam o número de endereços IP necessários para criar um cluster.

É possível configurar o número máximo de pods por nó no momento da criação do cluster e do pool de nós.

A seguir