Clusters nativos de VPC (original) (raw)


Nesta página, você encontra uma visão geral dos clusters nativos de VPC no Google Kubernetes Engine (GKE).

Esta página é destinada a arquitetos de nuvem e 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, consulteTarefas e funções de usuário comuns do GKE Enterprise.

Visão geral

No GKE, os clusters podem ser diferenciados de acordo com a maneira como direcionam o tráfego de um pod para outro.

Um cluster que usaintervalos de endereços IP de alias é chamado de_cluster nativo de VPC_.

Um cluster que usa rotas estáticas personalizadas em uma rede VPC é chamado de cluster baseado em rotas.

Prática recomendada:

Planeje e projete a configuração do cluster com os arquitetos de rede, administradores de rede ou qualquer outra equipe de engenheiros de rede responsáveis por definir, implementar e manter a arquitetura de rede da sua organização.

Benefícios dos clusters nativos de VPC

Os clusters nativos de VPC têm vários benefícios:

Modo de rede padrão do cluster

Nativo de VPC é o modo de rede padrão para todos os clusters nas versões 1.21.0-gke.1500 e posteriores do GKE. Para versões anteriores, o modo de rede padrão do cluster depende de como o cluster é criado.

A tabela a seguir lista o modo de rede padrão do cluster para versões de cluster do GKE e métodos de criação de cluster.

Versões do GKE Método de criação do cluster Modo de rede do cluster
Todas as versões Console do Google Cloud Cluster nativo de VPC
1.21.0-gke.1500 e posterior API Kubernetes Engine ou Google Cloud CLI Cluster nativo de VPC

Também é possível criar um cluster baseado em rotas especificando a sinalização --no-enable-ip-alias ao criar o cluster.

Intervalos de endereços IP para clusters nativos de VPC

Ao criar um cluster nativo de VPC, você especifica uma sub-rede em uma rede VPC. O cluster usa os seguintes intervalos de endereços IP de sub-rede:

Alocação de endereços IPv4

Os clusters nativos de VPC alocam endereços IPv4 para nós, pods e serviços usando intervalos distintos na sub-rede especificada, da seguinte maneira.

Alocação de endereços IPv6 (rede de pilha dupla)

A tabela a seguir mostra um resumo dos intervalos de endereços IP para nós, pods e serviços:

Intervalo Explicação Exemplo
Nós Endereços IP de nós são atribuídos a partir do intervalo de endereços de IP primário da sub-rede associada ao seu cluster. Os endereços IP dos nós e o tamanho do intervalo de endereços IP secundários da sub-rede para pods limitam o número de nós que um cluster pode suportar. Consulte intervalos de limite de nós para ver mais informações. Se você planeja criar um cluster de 900 nós, o intervalo de endereços de IP primário da sub-rede do cluster precisa ser de pelo menos /22 (2(32-22) = 210 = 1.024 endereços). Desses 1.024 endereços, 1.020 são utilizáveis porquequatro endereços IP estão reservados em todos os intervalos de endereços de IP primários. Consulte Intervalo de endereços de IP primários de sub-rede eIntervalo secundário de endereços de IP de sub-redes para pods para ver mais informações.
Pods Os endereços de IP do pod são obtidos do intervalo de endereços de IP secundários da sub-rede do cluster para pods. A menos que você defina um número máximo de pods por nó, o GKE aloca um /24 intervalo de IP de alias com (256 endereços) para cada nó dos pods executados nele. Em cada nó, esses 256 endereços de IP de alias são usados para dar suporte a até 110 pods. Para um cluster de 900 nós dando suporte a até 110 pods por nó, você precisa de 900 × 256 = 230.400 endereços de IP para pods. (Cada nó recebe um intervalo de IP do alias com tamanho da máscara de rede de /24.) Esse cluster requer uma sub-rede com intervalo de IP secundário para pods com uma máscara de sub-rede não maior que /14. Esse intervalo de IP secundário fornece 2(32-14) = 218 = 262.144 endereços IP para pods. Consulte Intervalo de endereços de IP secundários da sub-rede para pods para ver mais informações.
Serviços Endereços de serviço (IP de cluster) são obtidos do intervalo de endereços de IP secundário da sub-rede do cluster para Serviços. Certifique-se de que esse intervalo seja grande o suficiente para fornecer endereços para todos os Serviços do Kubernetes hospedados no seu cluster. Em clusters do Autopilot do GKE que executam a versão 1.27 e mais recentes, e clusters do GKE Standard que executam a versão 1.29 e mais recentes, o GKE atribui endereços IP para serviços do GKE de um intervalo gerenciado pelo GKE: 34.118.224.0/20 por padrão. Isso elimina a necessidade de especificar seu próprio intervalo de endereços IP para serviços. Para detalhes, consulte Intervalo de endereços IP secundário da sub-rede para Serviços. Para um cluster que executa até 3.000 Serviços, você precisa de 3.000 endereços de IP de cluster. Você precisa de um intervalo secundário de tamanho /20 ou maior. O intervalo A /20 de endereços de IP resulta em 2 (32-20) = 2 12 = 4.096 endereços de IP. Consulte Intervalo secundário de endereços de IP da sub-rede para Serviços para ver mais informações.

Endereços IP internos

Os endereços IP que você usa para as sub-redes do cluster nativo de VPC precisam vir de um intervalo de sub-rede válido. Os intervalos válidos incluem endereços IP particulares (RFC 1918 e outros) e endereços IP públicos utilizados de forma particular. ConsulteIntervalos válidos eIntervalos restritos na documentação da VPC para mais informações sobre intervalos de sub-rede válidos.

ConsulteComo usar intervalos de endereços IP particulares não RFC 1918para instruções sobre como ativar o uso desses intervalos.

ConsulteAtivar intervalos de endereços IP públicos usados de modo particularpara instruções sobre o uso desses intervalos.

Métodos de atribuição de intervalo secundário

É possível atribuir intervalos de endereços IP de pod e intervalos de endereços de serviço (ClusterIP) a um cluster nativo de VPC. Esses intervalos de endereços IP podem ser gerenciados pelo GKE ou gerenciados pelo usuário.

Você precisa entender os seguintes termos-chave para entender os métodos de atribuição de intervalo secundário.

Atribuição: a atribuição de intervalos de endereços IP refere-se ao processo de alocação de um intervalo de sub-rede específico para um cluster nativo de VPC. Isso estabelece um pool de endereços IP que os componentes podem usar no cluster, como pods e serviços.

Gerenciamento: gerenciar o intervalo de endereços IP refere-se às operações CRUD contínuas (criação, atualização, exclusão, leitura) no cluster, pool de nós ou pod, relacionadas à intervalos de sub-rede e alocação de recursos no cluster nativo de VPC.

Intervalos secundários gerenciados pelo GKE (padrão)

Para clusters do GKE Autopilot que executam a versão 1.27 e mais recentes e clusters do GKE Standard que executam as versões 1.29 e mais recentes, o GKE atribui endereços IP para serviços de um intervalo gerenciado pelo GKE por padrão: 34.118.224.0/20. Isso elimina a necessidade de especificar seu próprio intervalo de endereços IP para serviços. As seguintes considerações se aplicam:

Gerenciado pelo usuário

Para controle total sobre a alocação de endereços IP, gerencie manualmente as sub-redes do cluster nativo de VPC.

É possível criar os intervalos de endereços IP secundários da sub-rede e, em seguida, criar um cluster que use esses intervalos. Durante a criação do cluster, especifique o nome do intervalo de sub-rede para pods e serviços. Se você criar manualmente os intervalos secundários, é necessário gerenciá-los manualmente.

O menor intervalo de endereços IP que pode ser criado sem usar o CIDR descontínuo de vários podsé /28, mas esse intervalo só permite criar um nó com no máximo 8 pods. Use um intervalo grande o suficiente para o número máximo de nós necessários.

O intervalo mínimo utilizável depende do número máximo de pods por nó.

Consulte a tabela em Como otimizar a alocação de endereços IP para ver o intervalo utilizável mínimo de CIDR para diferentes valores de pods máximos por nó.

Se você esgotar seu intervalo de endereços IP para pods, será necessário realizar uma das ações a seguir:

Diferenças de clusters baseados em rotas

O esquema de alocação para endereços de Pod e Serviço (IP do cluster) é diferente do esquema usado por um cluster baseado em rotas. Em vez de especificar um único CIDR para pods e serviços juntos, escolha ou crie dois intervalos de endereços IP secundários na sub-rede do cluster: um para pods e outro para serviços.

Considerações sobre VPC compartilhada

Ao criar um cluster nativo VPC em um ambiente de VPC compartilhada, um proprietário, editor ou Identity and Access Management (IAM) principal com papel de administrador de rede no projeto de host da VPC compartilhada precisa criar sub-redes e intervalos secundários de IP manualmente. Um administrador de projeto de serviços que cria um cluster precisa ter permissão de nível de sub-rede para a sub-rede no projeto host da rede de VPC compartilhada.

Em um ambiente de VPC compartilhada, os intervalos de endereços IP secundários não podem ser gerenciados pelo GKE. Um administrador de rede no projeto de host da VPC compartilhada precisa criar a sub-rede e intervalos de endereços IP secundários antes de criar o cluster. Para ver um exemplo de como configurar um cluster nativo de VPC em uma rede VPC compartilhada, consulte Configurando clusters com VPC compartilhada.

Planejamento de intervalo de endereços IP

Use as informações nas seções a seguir para calcular os tamanhos dos intervalos de endereços IP primário e secundário da sub-rede usada pelo cluster.

Intervalo do endereço IP primário da sub-rede

Considere as seguintes condições ao planejar o intervalo de endereços IP do nó principal:

A tabela a seguir mostra o número máximo de nós que podem ser criados considerando o tamanho do intervalo de endereços IP primário da sub-rede e a configuração do cluster:

Intervalo de IP primário da sub-rede Cenário 1 Cenário 2
/29 Tamanho mínimo do intervalo de IP primário de uma sub-rede 4 nós 3 nós
/28 12 nós 11 nós
/27 28 nós 27 nós
/26 60 nós 59 nós
/25 124 nós 123 nós
/24 252 nós 251 nós
/23 508 nós 507 nós
/22 1.020 nós 1.019 nós
/21 2.044 nós 2.043 nós
/20 Tamanho padrão do intervalo de IP primário de uma sub-rede em redes de modo automático 4.092 nós 4.091 nós
/19 8.188 nós 8.187 nós
/8 Tamanho máximo do intervalo de IP primário de uma sub-rede 16.777.212 nós 16.777.211 nós

Expanda o intervalo de endereços IP primário

Se você ficar sem endereços IP no intervalo de endereços IP principal, será possívelExpanda o intervalo de endereços IP primárioa qualquer momento, mesmo quando os recursos do Google Cloud, como balanceadores de carga e grupos de endpoints de rede, usarem a sub-rede.

Antes de expandir o intervalo de endereços IP primário, considere o seguinte:

Fórmulas úteis

É possível usar as seguintes fórmulas para:

Em clusters do Private Service Connect que não usam a flag private-endpoint-subnetwork, é possível usar as fórmulas anteriores, mas reduzir o valor de N em 1.

Intervalo do endereço IP secundário da sub-rede para pods

Planeje cuidadosamente seu intervalo de endereços IP secundário para pods.

A tabela a seguir mostra o número máximo de nós e pods que podem ser criados em todos os clusters que usam a sub-rede, considerando o tamanho do intervalo de endereços IP secundário usado pelos pods.

Esta tabela pressupõe que onúmero máximo de pods por nóé 110, que é a densidade padrão dos pods.

Intervalo secundário de IP da sub-rede para pods Máximo de endereços de IP de pod Máximo de nós Máximo de pods
/24 é o menor intervalo de IP de pod possível quando o método de atribuição do intervalo secundário é gerenciado pelo usuário 256 endereços 1 nó Autopilot: 32 pods Standard: 110 pods
/23 só é possível quando o método de atribuição do intervalo secundário é gerenciado pelo usuário 512 endereços 2 nós Autopilot: 64 pods Standard: 220 pods
/22 só é possível quando o método de atribuição do intervalo secundário é gerenciado pelo usuário 1.024 endereços 4 nós Autopilot: 128 pods Standard: 440 pods
/21 é o menor intervalo de IP do pod possível quando o método de atribuição do intervalo secundário é gerenciado pelo GKE 2.048 endereços 8 nós Autopilot: 256 pods Standard: 880 pods
/20 4.096 endereços 16 nós Autopilot: 512 pods Standard: 1.760 pods
/19 8.192 endereços 32 nós Autopilot: 1.024 pods Standard: 3.520 pods
/18 16.384 endereços 64 nós Autopilot: 2.048 pods Standard: 7.040 pods
/17 32.768 endereços 128 nós Autopilot: 4.096 pods Standard: 14.080 pods
/16 65.536 endereços 256 nós Autopilot: 8.192 pods Standard: 28.160 pods
/15 131.072 endereços 512 nós Autopilot: 16.384 pods Standard: 56.320 pods
/14 é o tamanho padrão do intervalo de endereços IP secundários da sub-rede para pods quando o método de atribuição de intervalo secundário é gerenciado pelo GKE 262.144 endereços 1.024 nós Autopilot: 32.768 pods Standard: 112.640 pods
/13 524.288 endereços 2.048 nós Autopilot: 65.536 pods Standard: 225.280 pods
/12 1.048.576 endereços 4.096 nós Autopilot: 131.072 pods Standard: 450.560 pods
/11 2.097.152 endereços 8.192 nós Autopilot: 262.144 pods Standard: 901.120 pods
/10 4.194.304 endereços 16.384 nós Autopilot: 524.288 pods Standard: 1.802.240 pods
/9 O maior intervalo possível de endereços de pod 8.388.608 endereços 32.768 nós Autopilot: 1.048.576 pods Standard: 3.604.480 pods

Se você alterou o número máximo de pods por nó, é possível usar as seguintes fórmulas para calcular o número máximo de nós e pods a que um intervalo de endereços IP secundário de uma sub-rede para pods pode suportar:

  1. Calcule o tamanho da máscara de rede do intervalo de pod de cada nó, M.
    M = 31 - ⌈log2(Q)⌉ em que:
    • Q é o número de pods por nó;
    • ⌈⌉ é a função teto (mínimo de número inteiro), o que significa arredondar para o próximo número inteiro
    • Por exemplo, se Q for 110, M = 24
  2. Calcule o número máximo de nós, N, que o intervalo de endereços IP secundário da sub-rede para pods pode suportar:
    N = 2(M - S) em que:
    • M é o tamanho da máscara de rede do intervalo de endereços IP do alias de cada nó para pods, calculado na primeira etapa.
    • S é o tamanho da máscara de sub-rede do intervalo de endereços IP secundário da sub-rede.
    • Por exemplo, se M for 24 e S for 20, então N = 16
  3. Calcule o número máximo de pods, P, que o intervalo de endereços IP secundário da sub-rede para pods pode suportar:
    P = N × Q em que:
    • N é o número máximo de nós, calculado na etapa anterior;
    • Q é o número de pods por nó.
    • Por exemplo, se N for 16 e Q for 110, então P = 1760

É possível adicionar mais endereços IP para pods usando o CIDR de vários pods descontínuos.

Intervalo do endereço de IP secundário da sub-rede para Serviços

Planeje cuidadosamente seu intervalo de endereços IP secundário para Serviços. Como esse também é um intervalo de endereços IP secundário da sub-rede, esse intervalo não pode ser alterado depois da criação do cluster.

Se você usar serviços de vários clusters, o objeto ServiceImport usará endereços IP do intervalo de endereços IP secundários para serviços.

Em clusters do Autopilot do GKE que executam a versão 1.27 e mais recentes e clusters do GKE Standard que executam as versões 1.29 e mais recentes, o GKE atribui endereços IP para serviços de um intervalo gerenciado pelo GKE por padrão: 34.118.224.0/20. Isso elimina a necessidade de especificar seu próprio intervalo de endereços IP para serviços. As seguintes considerações se aplicam:

A tabela a seguir mostra o número máximo de Serviços que podem ser criados em um único cluster usando a sub-rede, considerando o tamanho do intervalo de endereços de IP secundário da sub-rede para Serviços.

Intervalo de IP secundário para Serviços Número máximo de Serviços
/28 é o menor intervalo de endereços do serviço possívelquando o método de atribuição do intervalo secundário é gerenciado pelo usuário 16 serviços
/27 é o menor intervalo de endereços do serviço possívelquando o método de atribuição do intervalo secundário é gerenciado pelo GKE 32 Serviços
/26 64 Serviços
/25 128 Serviços
/24 256 Serviços
/23 512 Serviços
/22 1.024 Serviços
/21 2.048 Serviços
/20 É o tamanho padrão para o intervalo de IP secundário da sub-rede para serviços quando o método de atribuição de intervalo secundário é gerenciado pelo GKE 4.096 Serviços
/19 8.192 Serviços
/18 16.384 Serviços
/17 32.768 Serviços
/16 O maior intervalo de endereços de Serviço possível 65.536 Serviços

Compartilhamento de intervalos de endereços IP entre clusters do GKE

É possível compartilhar o intervalo primário, o intervalo de endereços IP secundário para pods e o intervalo de endereços IP secundário para Serviços entre clusters na mesma sub-rede.

Esse comportamento está disponível para clusters Padrão e Autopilot.

Convém compartilhar intervalos de endereços IP se você tem uma equipe centralizada que gerencia a infraestrutura dos clusters. É possível reduzir a sobrecarga criando três intervalos para pods, Serviços e nós e reutilizando ou compartilhando-os, especialmente em um modelo de VPC compartilhada. Além disso, os administradores de rede podem gerenciar endereços IP mais facilmente, já que não precisam criar sub-redes específicas para cada cluster.

Compartilhamento do intervalo de endereços IP primário para nós

Se você criar mais de um cluster na sub-rede, o intervalo de endereços IP primário para nós será compartilhado por padrão.

O compartilhamento do endereço IP principal para nós tem estas limitações:

Quando você compartilha o intervalo secundário para pods, cada pod ainda recebe um endereço IP exclusivo.

O compartilhamento do intervalo de endereços IP secundário para pods tem estas limitações:

Dois ou mais clusters podem usar simultaneamente o mesmo intervalo de endereços IPv4 secundário da sub-rede para serviços quando você usa intervalos secundários gerenciados pelo usuário.

Para configurar dois ou mais clusters para compartilhar um intervalo de endereços IPv4 secundário comum da sub-rede para serviços, use o mesmo intervalo de endereços IPv4 secundário da sub-rede ao criar cada cluster. Não é necessário um sinalizador de configuração separado para compartilhar um intervalo de endereços IPv4 comum para serviços.

Ao compartilhar um intervalo de endereços IPv4 comum para serviços, cada cluster usa o intervalo de endereços IPv4 secundário da sub-rede para serviços internamente. Os endereços IP para serviços são programados no nó de cada cluster, mas não são atribuídos à interface de rede de nenhum nó. Os endereços IP de serviço não podem ser roteados na rede VPC do cluster. Os endereços IP de serviço só podem ser usados por pods de cliente no mesmo cluster do serviço.

Quando um pod envia um pacote para um endereço IP de serviço, a configuração iptables ou eBPF no nó executa a conversão de endereços de rede (NAT, na sigla em inglês) de destino, alterando o endereço IP de destino do pacote do endereço IP de serviço para um endereço IP de pod de serviço. O pacote é roteado com base no endereço IP do pod de destino.

O compartilhamento do intervalo de endereços IP secundário para Serviços oferece estes benefícios:

O compartilhamento do intervalo de endereços IP secundário para Serviços tem estas limitações:

^gke-.*-services-[abcdef0-9]{8}  

Intervalos de limitação de nós

O número máximo de pods e serviços para um determinado cluster do GKE é limitado pelo tamanho dos intervalos secundários do cluster. O número máximo de nós no cluster é limitado pelo tamanho do intervalo de endereços de IP primários da sub-rede do cluster e do intervalo de endereços do pod do cluster.

A mensagem de erro a seguir indica que o intervalo de endereços IP principal da sub-rede ou o intervalo de endereços IP do pod do cluster (o intervalo de endereços IP secundário da sub-rede para pods) foi esgotado:

Instance [node name] creation failed: IP space of [cluster subnet] is
exhausted

Adicione mais endereços IP para nós expandindo a sub-rede principal ou adicione novos endereços IP para pods usando CIDR de vários pods descontínuos. Para mais informações, consulte Não há espaço de endereço IP livre suficiente para pods.

Rede de pilha dupla IPv4/IPv6

Com a rede de pilha dupla IPv4/IPv6, é possível definir como o GKE aloca endereços IP (ipFamilies) para os seguintes objetos:

Na versão 1.24 do GKE ou posterior, é possível ativar a rede de pilha dupla para novos clusters do GKE em redes VPC independentes e compartilhadas. Também é possível aplicar políticas de rede com rede de pilha dupla ativada.

Benefícios

A rede de pilha dupla oferece os seguintes benefícios:

Disponibilidade

A rede de pilha dupla com o GKE tem as seguintes restrições:

Considere as restrições anteriores antes de criar um cluster com rede de pilha dupla. Para mais informações, saiba como criar um cluster nativo de VPC com rede de pilha dupla.

Atribuição de endereços IPv6 públicos e privados

A tabela a seguir traz um resumo de endereços IPv6 público e particular com comportamento e configurações de rede de pilha dupla:

Sinalização ipv6-access-type Atribuição de endereços IP Intervalo da sub-rede
EXTERNAL O GKE atribui endereços IPv6 externos que são roteáveis para a Internet. De 2600:1900/28
INTERNAL O GKE atribui endereços IPv6 internos que não são roteáveis para a Internet. Clusters com tipo de acesso IPv6 INTERNAL não podem acessar a Internet por endereços IPv6. No entanto, o Cloud NAT não é compatível com endereços IPv6. A partir de fd20::/20, que é um subconjunto do intervalo geral de ULA: fc00::/7.

Para saber mais, consulte como usar uma rede de pilha dupla em um cluster nativo de VPC.

Arquitetura

Um cluster com rede de pilha dupla IPv4/IPv6 tem os seguintes intervalos alocados:

O diagrama a seguir mostra como o Google Cloud e o GKE alocam endereços IPv6:

No diagrama, o intervalo principal da sub-rede VPC é 2600:1900:0:1::/64 e o intervalo reservado para os serviços do GKE é 2600:2D00:0:4::0:0/64. Cada nó no cluster tem um intervalo/96 para o intervalo de endereços IP do nó principal e um intervalo/112 para o intervalo de endereços IP do pod. O cluster também tem um intervalo de endereços IP secundário de/112 serviços.

Serviços

É possível criar um serviço de pilha dupla IPv4/IPv6 do tipo ClusterIP ou NodePort. Os novos clusters do GKE que executam a versão 1.29 ou mais recente são compatíveis com serviços de pilha dupla do tipoLoadBalancer.

É possível expor uma implantação com um serviço do tipo ClusterIP, NodePort ou LoadBalancer. Para cada um desses tipos de serviço, é possível definir os campos ipFamilies e ipFamilyPolicy como IPv4, IPv6 ou como um serviço de pilha dupla. Para mais informações, consulte um exemplo de como configurar uma implantação.

A seguir