Como adicionar intervalos de endereços IP do pod


Nesta página, mostramos como ativar o CIDR de vários pods não contíguos em clusters do Google Kubernetes Engine (GKE) nativos de VPC.

Com o CIDR de vários pods não contíguos, é possível adicionar intervalos de endereços IP de pods secundários novos ou atuais aos clusters do GKE. Ao criar 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 intervalos de endereços IP 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ços IP do pod padrão do cluster.

Vantagens

  • Você não precisa planejar o crescimento futuro antes de criar clusters, o que resulta em uma alocação de IP mais eficiente.
  • É possível encaixar clusters em espaços de endereço IP fragmentados.
  • É possível realocar endereços IP em resposta às mudanças nas necessidades comerciais.

Limitações

  • O CIDR de vários pods não contíguos está disponível apenas em clusters nativos de VPC.
  • Todos os pools de nós no cluster precisam estar nas versões 1.19.8-gke.1000 a 1.20 ou 1.20.4-gke.500 e posteriores.
  • O CIDR de vários pods não contíguos requer a versão 330 ou posterior do SDK do Cloud.
  • Não é possível alterar o intervalo de IP de pod secundário de um pool de nós depois de criá-lo. No entanto, é possível criar um pool de nós com um novo intervalo e fazer o rodízio das cargas de trabalho no novo pool de nós.
  • O CIDR de vários pods não contíguos não pode ser usado com serviços de vários clusters.

Advertências

  • Se você usar ip-masq-agent configurado com o parâmetro nonMasqueradeCIDRs, deverá atualizar nonMasqueradeCIDRs para incluir todos os intervalos de CIDR de pod.
  • Se você usar NetworkPolicy configurada com ipBlock para especificar o tráfego, precisará atualizar o valor cidr para incluir todos os intervalos de CIDR de pod.

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.

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

Como criar um pool de nós com um novo 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.

Use a ferramenta de linha de comando gcloud ou a API do GKE.

gcloud

gcloud beta 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 de endereços IP de pod opcional fornecido como uma máscara de rede (/20) ou intervalo CIDR (10.12.4.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.

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.

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

Use a ferramenta gcloud ou a API do GKE.

gcloud

gcloud beta 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.

Como 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 beta container node-pools describe POOL_NAME \
  --cluster CLUSTER_NAME

A resposta será semelhante a:

...
network_config:
  pod_ipv4_cidr_block: 192.168.0.0/18
  pod_range: podrange
...

Se o pool de nós estiver usando CIDR de vários pods não contíguos, pod_range e pod_ipv4_cidr_block 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, pod_range e pod_ipv4_cidr_block exibirão os valores padrão do cluster, cluster_secondary_range_name e cluster_ipv4_block de IPAllocationPolicy.

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