Adicionar sub-redes a clusters


Nesta página, mostramos como atribuir sub-redes adicionais a um cluster nativo de VPC. Com as sub-redes adicionais atribuídas a um cluster, é possível criar pools de nós em que os endereços IPv4 para nós e pods vêm dos intervalos de sub-redes adicionais.

Esta página é destinada a especialistas em redes que projetam e arquitetam a rede para a organização. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE Enterprise.

Visão geral

Ao criar um cluster nativo de VPC do GKE, você seleciona uma sub-rede padrão para ele. A sub-rede padrão do cluster fornece endereços IPv4 para nós, pods e serviços, conforme descrito em Intervalos de endereços IP para clusters nativos de VPC.

É possível atribuir até oito sub-redes adicionais a um cluster nativo de VPC, permitindo um crescimento significativo do cluster. Cada sub-rede adicional recém-atribuída é chamada de sub-rede não padrão.

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 gcloud CLI anteriormente, instale a versão mais recente executando gcloud components update.

Requisitos e limitações

Esta seção descreve os requisitos e as limitações que se aplicam ao atribuir e usar sub-redes adicionais a um cluster. Você precisa atender a todos os requisitos antes de atribuir sub-redes adicionais.

  • Verifique se o cluster do GKE é nativo de VPC e executa a versão 1.30.3-gke.1211000 ou mais recente do GKE. Os clusters baseados em rotas e os clusters em redes legadas não aceitam sub-redes adicionais.
  • É possível atribuir até oito sub-redes adicionais por cluster.
  • As sub-redes adicionais fornecem apenas endereços IPv4 para nós e pods. Não é possível usar sub-redes adicionais para fornecer endereços IPv6 para nós ou pods.
  • Somente os novos pools de nós podem usar as sub-redes adicionais, não os pools de nós atuais. Quando você cria um pool de nós e várias sub-redes não padrão estão disponíveis, o GKE seleciona a melhor sub-rede para o pool de nós com base nos requisitos de endereços IP e na disponibilidade de endereços IP em todas as sub-redes do cluster.
  • Os intervalos de endereços IPv4 secundários da sub-rede em uma sub-rede não padrão só podem ser usados por um único cluster.
  • Se você usar o suporte a várias redes para pods, os intervalos de endereços IPv4 principais e de pods de uma sub-rede adicional não podem se sobrepor a nenhum intervalo de CIDR configurado na sua configuração de várias redes. As sub-redes adicionais que você configura se aplicam apenas à rede padrão. Essa limitação significa que qualquer interface de rede adicional nos nós e pods não pode usar os endereços IP fornecidos por essas sub-redes adicionais.
  • Se o pool de endereços IP na sub-rede padrão estiver esgotado, não será possível escalonar automaticamente o cluster mesmo que você use sub-redes adicionais.

Requisitos do balanceador de carga para clusters com sub-redes adicionais

Nesta seção, descrevemos os requisitos do balanceador de carga que se aplicam quando você usa sub-redes adicionais no cluster. Esses requisitos se aplicam sempre que você cria um Entrada externo, um gateway externo ou um serviço LoadBalancer externo.

  • Para usar um serviço externo Entrada, Gateway ou LoadBalancer em um cluster com sub-redes adicionais, o cluster precisa executar a versão 1.33.2-gke.4780000 ou mais recente do GKE.
  • Objetos de entrada externos que usam o controlador de entrada do GKE precisam usar o balanceamento de carga nativo de contêiner.
  • Ative a criação de subconjuntos do GKE para serviços LoadBalancer internos. A criação de subconjuntos do GKE afeta apenas os serviços LoadBalancer internos novos. Portanto, é necessário excluir e recriar todos os serviços atuais no cluster depois de ativar a criação de subconjuntos do GKE.
  • Para criar um balanceador de carga de rede de passagem externa baseado em serviço de back-end, os novos serviços LoadBalancer externos precisam incluir a anotação cloud.google.com/l4-rbs: "enabled". Essa anotação afeta apenas novos serviços LoadBalancer externos e não se aplica aos serviços LoadBalancer externos atuais. Exclua e recrie todos os serviços LoadBalancer externos que foram criados sem a anotação cloud.google.com/l4-rbs: "enabled".

    O tipo de back-end usado (back-ends de NEG GCE_VM_IP ou back-ends de grupo de instâncias) depende da versão do GKE quando você cria o serviço LoadBalancer externo. Para mais informações, consulte Agrupamento de nós.

Adicionar uma nova sub-rede com um intervalo de endereços IPv4 de pod

  1. Crie uma sub-rede e adicione um intervalo de endereços IPv4 secundário a ela. A sub-rede precisa estar na mesma região e rede VPC que o cluster:

       gcloud compute networks subnets create SUBNET_NAME \
         --network=NETWORK \
         --region=REGION \
         --range=PRIMARY_RANGE \
         --add-secondary-ranges=POD_RANGE_NAME=SECONDARY_RANGE
    

    Substitua:

    • SUBNET_NAME: o nome da nova sub-rede;
    • NETWORK: o nome da rede VPC que contém a nova sub-rede.
    • REGION: a região onde a sub-rede está localizada.
    • PRIMARY_RANGE: o intervalo IPv4 principal da nova sub-rede, em notação CIDR. Para mais informações, consulte Intervalos de sub-rede IPv4.
    • POD_RANGE_NAME: um nome para o intervalo secundário.
    • SECONDARY_RANGE: o intervalo IPv4 secundário na notação CIDR. Para intervalos válidos, consulte Intervalos de sub-rede IPv4.

    Para mais informações, consulte Trabalhar com sub-redes.

  2. Atualize o cluster para usar a sub-rede adicional com a CLI gcloud:

       gcloud container clusters update CLUSTER_NAME \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster atual.
    • SUBNET_NAME: o nome da nova sub-rede que você criou.
    • POD_RANGE_NAME: o nome do intervalo de endereços IPv4 secundário da sub-rede que você quer usar para o intervalo de endereços IPv4 do pod.

Adicionar uma nova sub-rede com vários intervalos de endereços IPv4 de pods

  1. Crie uma sub-rede na mesma região e rede VPC do cluster. Defina o intervalo de endereços IPv4 principal da sub-rede como um intervalo de endereços IPv4 adicional para nós.

  2. Para cada intervalo de endereços IPv4 de pod adicional necessário, adicione um novo intervalo de endereços IPv4 secundário da sub-rede à sub-rede criada na etapa anterior.

  3. Atualize o cluster para usar a sub-rede adicional com a CLI gcloud. O exemplo a seguir adiciona uma sub-rede com dois intervalos de endereços IPv4 secundários de sub-rede para pods.

       gcloud container clusters update CLUSTER_NAME \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_1 \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_2
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster atual.
    • SUBNET_NAME: o nome da nova sub-rede que você criou.
    • POD_RANGE_NAME_1 e POD_RANGE_NAME_2: os nomes dos intervalos de endereços IPv4 secundários da sub-rede que você quer usar para os intervalos de endereços IPv4 do pod.

Verificar as sub-redes

Por cluster: para conferir os detalhes de todas as sub-redes associadas a um cluster, execute o seguinte comando:

   gcloud container clusters describe CLUSTER_NAME

Substitua CLUSTER_NAME pelo nome do cluster.

O resultado será assim:

ipAllocationPolicy:
  additionalIPRangesConfig:
  - podIpv4RangeNames:
    - pod-range-1
    subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets

Por pool de nós: para conferir os detalhes de todas as sub-redes associadas a um pool de nós, execute o seguinte comando:

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

Substitua:

  • POOL_NAME: o nome do pool de nós.
  • CLUSTER_NAME: o nome do cluster.

O resultado será assim:

name: pool-1
networkConfig:
  podRange: pod-range-1
  subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets

Remover uma sub-rede não padrão

Remover uma sub-rede não padrão de um cluster instrui o cluster a não usar mais os intervalos da sub-rede em nenhum dos pools de nós do cluster. A remoção tem os seguintes efeitos:

  • O intervalo de endereços IPv4 principal da sub-rede não padrão não pode ser usado para intervalos de endereços IPv4 de nós.
  • Os intervalos de IPv4 secundários da sub-rede não padrão não podem ser usados para intervalos de IPv4 do pod.

Antes de remover uma sub-rede não padrão, exclua todos os pools de nós que a usam.

Para remover uma sub-rede não padrão do cluster, execute o seguinte comando:

   gcloud container clusters update CLUSTER_NAME \
     --remove-additional-ip-ranges= subnetwork=SUBNET_NAME

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • SUBNET_NAME: o nome da sub-rede que você quer remover do cluster.

Depois de remover uma sub-rede não padrão do cluster, é possível excluir a sub-rede não padrão.

Remover um intervalo IPv4 secundário de uma sub-rede não padrão

Quando você remove um intervalo IPv4 secundário de sub-rede não padrão de um cluster, o GKE instrui o cluster a não usar esse intervalo para intervalos IPv4 de pod em nenhum pool de nós. Se o intervalo IPv4 secundário da sub-rede não padrão que você remover for o único intervalo da sub-rede não padrão usado por este cluster, o GKE também vai instruir o cluster a parar de usar o endereço IPv4 principal da sub-rede para endereços IPv4 de nós.

Antes de remover um intervalo IPv4 secundário de sub-rede não padrão, exclua todos os pools de nós que usam o intervalo para endereços IPv4 do pod.

Para remover um intervalo IPv4 secundário de uma sub-rede não padrão do cluster, execute o comando a seguir:

   gcloud container clusters update CLUSTER_NAME \
     --remove-additional-ip-ranges=\
       subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • SUBNET_NAME: o nome da sub-rede não padrão.
  • POD_RANGE_NAME: o nome do intervalo de endereços IPv4 secundário não padrão da sub-rede que você quer remover do cluster.

Depois de remover um intervalo IPv4 secundário de sub-rede não padrão do cluster, você pode excluir o intervalo IPv4 secundário de sub-rede não padrão.

A seguir