Como adicionar intervalos de endereços IP do pod


Nesta página, mostramos como adicionar intervalos de endereços IP de pod secundários novos ou atuais aos clusters do GKE com CIDR de vários pods descontínuos.

Por que adicionar mais intervalos IPv4 de pod

Como administrador da plataforma, você pode adicionar mais intervalos IPv4 de pod criando intervalos secundários adicionais. Isso pode ser útil nos seguintes cenários:

  • Quando o cluster estiver ficando sem endereços IP de pod.
  • Quando você quer alocar endereços IP de forma eficiente antecipando o futuro.
  • Quando é possível usar espaços de endereços IP fragmentados nos clusters.
  • Quando é possível realocar endereços IP em resposta às mudanças nas necessidades comerciais.

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.

Adicionar mais intervalos IPv4 de pod com o Autopilot do GKE

Para clusters do GKE Autopilot na versão 1.26 ou posterior, é possível adicionar mais intervalos IPv4 de pod criando intervalos secundários adicionais e atribuindo-os ao cluster.

Criar um intervalo secundário adicional para uma sub-rede

Console

  1. Acesse a página Redes VPC no Console do Google Cloud.

    Acessar redes VPC

  2. Na lista Redes VPC, selecione a rede que você quer expandir.

  3. Na lista Sub-redes, selecione a sub-rede que você quer.

  4. Clique em Editar.

  5. Clique em Adicionar intervalo de IP.

  6. Em Nome do intervalo da sub-rede, insira o nome adicional do intervalo do pod. Por exemplo, pod-range-2.

  7. Em Intervalo de IP secundário, insira o intervalo de IP. Por exemplo, 10.2.204.0/22.

  8. Clique em Save.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --add-secondary-ranges ADDITIONAL_RANGE=RANGE \
    --location=COMPUTE_LOCATION

Substitua:

  • SUBNET_NAME: o nome da sub-rede a que você quer adicionar um intervalo. Ele precisa ser a sub-rede atribuída ao cluster.
  • ADDITIONAL_RANGE: o nome do intervalo de pod a ser adicionado ao cluster. Por exemplo, pod-range-2. Para especificar vários intervalos, separe os nomes por vírgula. Exemplo: pod-range-1, pod-range-2.
  • RANGE: o intervalo de endereços IP a ser adicionado ao cluster.
  • COMPUTE_LOCATION: o local do Compute Engine da sub-rede.

Atribuir intervalos secundários adicionais ao cluster

Crie intervalos secundários adicionais e atribua-os ao cluster. É possível usar o console do Google Cloud ou a Google Cloud CLI:

Console

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

    Acessar o Google Kubernetes Engine

  2. Ao lado do cluster que você quer editar, clique em Ações e, depois, em Editar.

  3. Na seção Rede, ao lado de Intervalos IPv4 do pod de cluster (adicionais), clique em Editar.

  4. Na caixa de diálogo Editar intervalos IPv4 adicionais do pod de cluster, selecione os intervalos CIDR secundários do pod que você quer adicionar ao cluster. Use o mesmo nome de intervalo do pod criado na sub-rede como intervalos secundários adicionais para o cluster.

  5. Clique em Salvar alterações.

gcloud

  1. Atualize o cluster para usar um intervalo de endereços IP adicional:

    gcloud container clusters update CLUSTER_NAME \
        --additional-pod-ipv4-ranges=ADDITIONAL_RANGE \
        --location=COMPUTE_LOCATION
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster. Seu cluster precisa estar executando a versão 1.26.0 ou posterior.
    • ADDITIONAL_RANGE: o nome do intervalo de pod a ser adicionado ao cluster. Use o mesmo nome de intervalo do pod criado na sub-rede como intervalos secundários adicionais para o cluster.
    • COMPUTE_LOCATION: o local do Compute Engine da sub-rede.
  2. Verifique se o novo endereço IP está atribuído ao cluster:

    gcloud container clusters describe CLUSTER_NAME
    

    O resultado será assim:

    ipAllocationPolicy:
    additionalPodRangesConfig:
      podRangeNames:
      - pod-range-1
      - pod-range-2
    clusterIpv4Cidr: 10.10.0.0/23
    clusterIpv4CidrBlock: 10.10.0.0/23
    clusterSecondaryRangeName: cluster-pods
    

Adicionar mais intervalos IPv4 de pod com o GKE Standard

Para clusters do GKE Standard, é possível adicionar mais intervalos IPv4 de pod usando qualquer um dos seguintes métodos:

  • Criar e atribuir intervalos secundários adicionais ao cluster: recomendado para usuários que não precisam controlar os intervalos de endereços IP do pod no nível do pool de nós. Esse método está disponível no GKE versão 1.26.0 ou posterior. Para mais informações, confira como Adicionar mais intervalos IPv4 de pod com o Autopilot do GKE.
  • Crie um pool de nós com um novo intervalo secundário de endereços IP de pod: recomendado para usuários que precisam controlar totalmente os intervalos de endereços IP do pod dos seus pools de nós. Esse método está disponível na versão 1.20.4-gke.500 ou posterior do GKE.
  • Criar um pool de nós usando um endereço IP secundário de pod atual: recomendado para usuários que precisam controlar totalmente os intervalos de endereços IP de pod atuais de pools de nós. Esse método está disponível no GKE versão 1.20.4-gke.500 ou posterior.

Criar um pool de nós com um novo intervalo de IP de pod secundário

Por padrão, o GKE associa um intervalo de pod ao pool de nós. Pode ser o intervalo de endereço IP do pod padrão do cluster ou um dos intervalos de pod adicionais (se houver) associados ao cluster. Com intervalos secundários adicionais, é possível especificar um intervalo de endereços IPv4 de pod durante a criação do pool de nós, e o pool de nós usa esse intervalo em vez do intervalo de endereço IP do pod secundário padrão do cluster.

Nesta seção, você cria um pool de nós com um intervalo de endereços IP do pod secundário.

É possível usar a Google Cloud CLI ou a API GKE.

gcloud

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --create-pod-ipv4-range name=RANGE_NAME,range=RANGE

Substitua:

  • POOL_NAME: o nome do novo pool de nós.
  • CLUSTER_NAME: o nome do cluster.
  • RANGE_NAME: um nome opcional do novo intervalo de endereços IP do pod secundário.
  • RANGE: um intervalo opcional de endereços IP do pod fornecido como uma máscara de rede (/20) ou um intervalo CIDR (10.12.4.0/20). Se você fornecer uma máscara de rede, o GKE aloca um intervalo entre os intervalos disponíveis na rede do cluster. Se você não fornecer um valor para range, o GKE aloca automaticamente uma máscara de rede /14, o tamanho padrão do intervalo de IP secundário da sub-rede para pods.

API

"nodePool": {
  "name": "POOL_NAME",
  ...
  "networkConfig": {
    "createPodRange": true,
    "podRange": "RANGE_NAME",
    "podIpv4CidrBlock": "RANGE"
  }
}

Substitua:

  • POOL_NAME: o nome do novo pool de nós.
  • RANGE_NAME: um nome opcional do novo intervalo de endereços IP do pod secundário.
  • RANGE: um intervalo de endereços IP de pod opcional fornecido como uma máscara de rede (/20) ou intervalo CIDR (10.12.0.0/20). Se uma máscara de rede for especificada, o intervalo de IP será alocado automaticamente do espaço livre na rede do cluster. Se nenhum valor for fornecido, o GKE alocará automaticamente uma máscara de rede /14, o tamanho padrão do intervalo de IP secundário da sub-rede para pods.

Criar um pool de nós usando um intervalo de IP de pod secundário

Nesta seção, você cria um pool de nós com um intervalo de endereços IP do pod secundário atual.

É possível usar a CLI gcloud ou a API GKE.

gcloud

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --pod-ipv4-range RANGE_NAME

Substitua:

  • POOL_NAME: o nome do novo pool de nós.
  • CLUSTER_NAME: o nome do cluster.
  • RANGE_NAME: o nome de um intervalo de endereços IP do pod secundário na sub-rede do cluster.

API

"nodePool": {
  "name": "POOL_NAME",
  ...
  "networkConfig": {
    "podRange": "RANGE_NAME"
  }
}

Substitua:

  • POOL_NAME: o nome do novo pool de nós.
  • RANGE_NAME: o nome de um intervalo de endereços IP do pod secundário na sub-rede do cluster.

Verificar o bloco de CIDR de pod para um pool de nós

Para determinar qual bloco de CIDR de pod é usado para pods em um determinado pool de nós, use o comando a seguir:

gcloud container node-pools describe POOL_NAME \
    --cluster CLUSTER_NAME

A saída será assim:

...
networkConfig:
  podIpv4CidrBlock: 192.168.0.0/18
  podRange: podrange
...

Se o pool de nós estiver usando CIDR não contíguos de vários pods, podRange e podIpv4CidrBlock exibirão os valores configurados para esse pool de nós.

Se o pool de nós não estiver usando CIDR de vários pods não contíguos, podRange e podIpv4CidrBlock exibirão os valores padrão do cluster, clusterSecondaryRangeName e clusterIpv4CidrBlock de IPAllocationPolicy.

Adicionar mais intervalos IPv4 de pod para casos de uso específicos

  • Se você usar o ip-masq-agent configurado com o parâmetro nonMasqueradeCIDRs, atualize o nonMasqueradeCIDRs para incluir todos os intervalos secundários adicionais.
  • Se você usar NetworkPolicy configurado com um ipBlock para especificar o tráfego, será necessário atualizar o valor CIDR para incluir todos os intervalos de CIDR do pod.
  • Para a VPC compartilhada, você precisa predefinir outra conta de serviço.
  • Para adicionar um intervalo secundário de endereço IP de pod ao cluster ou criar um pool de nós com um novo intervalo secundário, é necessário ter o papel de administrador de rede. Um papel de usuário só poderá usar esses recursos se tiver sido criado pelo administrador de rede.
  • Se o projeto tiver mais de um cluster, crie e adicione um intervalo secundário de endereço IP de pod em cada cluster.

Como funciona o CIDR de vários pods descontínuos

Quando você cria um novo pool de nós, por padrão, ele usa o intervalo de endereços IP do pod padrão do cluster, também conhecido como CIDR do cluster. Com esse recurso, é possível especificar um intervalo de endereços IP do pod durante a criação do pool de nós, e o pool usa esse intervalo em vez do intervalo de endereços IP do pod padrão do cluster.

O diagrama a seguir mostra um cluster gerenciado pelo usuário com um bloco CIDR /24 como um intervalo de endereços IP do pod secundário (256 endereços IP) e dois nós que usam /25 Blocos CIDR para endereços IP do pod (128 endereços IP cada). O intervalo de endereços IP do pod secundário está esgotado, e não é possível adicionar outro nó ao cluster. Em vez de excluir e recriar o cluster, use o CIDR de vários pods descontínuos para expandir os endereços IP do pod com blocos CIDR /20. O cluster é expandido para incluir um terceiro nó que usa o bloco CIDR /25 para endereços IP do pod provenientes do bloco /20.

Como adicionar um pool de nós a um cluster com um intervalo de endereços IP de pod secundário esgotado usando o CIDR de vários pods descontínuos
Diagrama: como usar CIDR de vários pods descontínuos

Regra de firewall modificada

Quando o GKE cria um cluster, ele cria uma regra de firewall para ativar a comunicação entre pods, gke-[cluster-name]-[cluster-hash]-all.

Quando você cria ou exclui um pool de nós com CIDR de vários pods não contíguos ativado, o GKE atualiza o valor de origem dessa regra de firewall para todos os CIDRs usados pelo cluster para IPs de pod.

Solução de problemas

É possível ativar os registros de fluxo de VPC para determinar se os pacotes estão sendo enviados para os nós corretamente.

A seguir