Esta página disponibiliza uma visão geral das funções do GKE Dataplane V2 e como ele funciona.
Antes de ler esta página, é preciso entender a rede nos clusters do GKE.
Visão geral do GKE Dataplane V2
O GKE Dataplane V2 é um plano de dados otimizado para a rede do Kubernetes. O GKE Dataplane V2 oferece:
- Experiência do usuário consistente na rede.
- visibilidade em tempo real da atividade da rede;
- arquitetura mais simples que facilita o gerenciamento e a solução de problemas de clusters.
O GKE Dataplane V2 está ativado para todos os novos clusters do Autopilot nas versões 1.22.7-gke.1500 e posteriores, 1.23.4-gke.1500 e posteriores e todas as versões 1.24 e posteriores.
Como o GKE Dataplane V2 funciona
O GKE Dataplane V2 é implementado usando o eBPF.
À medida que os pacotes chegam a um nó do GKE, os programas eBPF instalados no kernel decidem como rotear e processar os pacotes. Ao contrário do processamento de pacotes
com iptables
, os programas eBPF podem usar metadados específicos do Kubernetes no pacote. Isso permite que o GKE Dataplane V2 processe pacotes de rede no kernel com mais eficiência e relate ações anotadas de volta ao espaço do usuário para geração de registros.
O diagrama a seguir mostra o caminho de um pacote ao longo de um nó usando o GKE Dataplane V2:
O GKE implanta o controlador do GKE Dataplane V2 como um DaemonSet chamado anetd
em cada nó no cluster. anetd
interpreta objetos do Kubernetes
e programa topologias de rede no eBPF. Os pods anetd
são executados no
namespace kube-system
.
GKE Dataplane V2 e NetworkPolicy
O GKE Dataplane V2 é implementado usando o Cilium. O plano de dados legado do GKE é implementado usando o Calico.
Ambas as tecnologias gerenciam o NetworkPolicy do Kubernetes.
O Cilium usa o eBPF e a interface de rede de contêiner (CNI, na sigla em inglês) do Calico usa a iptables
no kernel do Linux.
Vantagens do GKE Dataplane V2
Escalonabilidade
O GKE Dataplane V2 tem características de escalonabilidade diferentes do plano de dados legado.
Para versões do GKE em que o GKE Dataplane V2
não usa kube-proxy
e não depende do iptables
para roteamento de serviço, o GKE remove
alguns gargalos relacionados ao iptables
, como o número de Serviços.
O GKE Dataplane V2 depende de mapas eBPF limitados a 64.000 endpoints em todos os serviços.
Segurança
A NetworkPolicy do Kubernetes está sempre ativada em clusters com o GKE Dataplane V2. Não é preciso instalar e gerenciar complementos de software de terceiros, como o Calico, para aplicar a política de rede.
Operações
Quando você cria um cluster com o GKE Dataplane V2, a geração de registros de política de rede é integrada. Configure a CRD da geração de registros no cluster para ver quando as conexões são permitidas e negadas pelos pods.
Consistência
O GKE Dataplane V2 oferece uma experiência de rede consistente.
Para mais informações, consulte Disponibilidade do GKE Dataplane V2.
Especificações técnicas do GKE Dataplane V2
O GKE Dataplane V2 aceita clusters com as seguintes especificações:
Especificação | GKE; | Google Distributed Cloud | Google Distributed Cloud |
---|---|---|---|
Número de nós por cluster | 5.000 | 500 | 500 |
Número de pods por cluster | 50.000 | 15.000 | 27.500 |
Número de serviços do LoadBalancer por cluster | 750 | 500 | 1.000 |
O GKE Dataplane V2 mantém um mapa de serviços para acompanhar quais serviços se referem a quais pods como back-ends. O número de back-ends de pods de cada serviço somado em todos os serviços precisa caber no mapa, que pode conter até 64.000 entradas. Se esse limite for excedido, talvez o cluster não funcione conforme o esperado.
Aumento do limite de nós na versão 1.23
A partir da versão 1.23 do Kubernetes, o limite de 500 nós por cluster do GKE Dataplane V2 foi elevado para 5.000, com as seguintes condições adicionais impostas aos clusters:
- Clusters particulares ou públicos que usam o Private Service Connect. Para verificar se o cluster usa o Private Service Connect, consulte Clusters públicos com o Private Service Connect.
- Somente clusters regionais
- Somente os clusters criados com o GKE versão 1.23 ou posterior têm um limite de 5.000 nós elevados. Para clusters criados com versões anteriores do GKE, pode ser necessário aumentar a cota de tamanho do cluster. Entre em contato com o suporte para receber ajuda.
- Os clusters que usam CRDs do Cilium (CiliumNetworkPolicy e CiliumClusterwideNetworkPolicy) não podem ser escalonados para 5.000 nós.
Serviços LoadBalancer no Google Distributed Cloud
O número de serviços LoadBalancer aceitos no Google Distributed Cloud depende as modo do balanceador de carga que está sendo usado. O Google Distributed Cloud oferece suporte a 500 serviços LoadBalancer ao usar modo de balanceamento de carga em pacote (Seesaw) e 250 ao usar a carga integrada de balanceamento de carga com F5. Para mais informações, consulte Escalonabilidade.
Limitações
O GKE Dataplane V2 tem as seguintes limitações:
- O GKE Dataplane V2 só pode ser ativado ao criar um novo cluster. Os clusters atuais não podem ser atualizados para usar o GKE Dataplane V2.
- Em versões do GKE anteriores à 1.20.12-gke.500, se você ativar o GKE Dataplane V2 com o DNSCache NodeLocal, não será possível configurar pods com
dnsPolicy: ClusterFirstWithHostNet
. seus pods vão passar por erros de resolução de DNS. - A partir da versão 1.21.5-gke.1300 do GKE, o GKE Dataplane V2 não oferece suporte às APIs CRD CiliumNetworkPolicy ou CiliumClusterwideNetworkPolicy. A partir das versões 1.28.6-gke.1095000 e 1.29.1-gke.1016000 do GKE, é possível ativar o CiliumClusterwideNetworkPolicy em clusters novos ou atuais.
- Os balanceadores de carga de rede de passagem internos que foram criados manualmente e associados a um serviço do tipo NodePort não são compatíveis.
- Como o GKE Dataplane V2 otimiza o processamento de pacotes do kernel eBPF usando eBPF, o desempenho do seu pod poderá ser afetado se você tiver cargas de trabalho com um alto desligamento de pods. O foco principal do GKE Dataplane V2 é alcançar o eBPF ideal.
- Há um problema conhecido com serviços de vários clusters com várias portas (TCP/UDP) no GKE Dataplane V2. Para mais informações, consulte Serviços MCS com várias portas.
- O GKE Dataplane V2 usa
cilium
em vez dekube-proxy
para implementar os serviços do Kubernetes. Okube-proxy
é mantido e desenvolvido pela comunidade do Kubernetes. Portanto, é mais provável que novos recursos para serviços sejam implementados emkube-proxy
antes de serem implementados emcilium
para o GKE Dataplane V2. Um exemplo de recurso para serviços que foi implementado primeiro emkube-proxy
é o KEP-1669: endpoints de encerramento de proxy. - Para serviços NodePort que executam a versão 1.25 ou anterior usando intervalos SNAT e
PUPI padrão, adicione o intervalo de PUPI dos pods em
nonMasqueradeCIDRs
no ConfigMapip-masq-agent
para evitar problemas de conectividade. - Em alguns casos, os pods do agente do GKE Dataplane V2 (
anetd
) podem consumir uma quantidade significativa de recursos de CPU, até duas ou três vCPUs por instância. Isso ocorre quando há um grande volume de conexões TCP abertas e fechadas rapidamente no nó. Para atenuar esse problema, recomendamos a implementação de sinais de atividade para chamadas HTTP e o pool de conexões para as cargas de trabalho relevantes. - Os clusters do GKE Dataplane V2 que executam a versão 1.27 ou anterior do plano de controle não são compatíveis com o campo
.spec.internalTrafficPolicy
do serviço. A política de tráfego interno efetiva de um serviço éCluster
. Os back-ends em qualquer nó são considerados como candidatos para resolução de serviço. Para mais informações sobre o campo, consulte Política de tráfego interno do serviço.
GKE Dataplane V2 e kube-proxy
O GKE Dataplane V2 não usa o kube-proxy, exceto nos pools de nós do Windows Server nas versões 1.25 e anteriores do GKE.
Aplicação da política de rede sem o GKE Dataplane V2
Consulte Como usar a aplicação de política de rede para instruções sobre como ativar a aplicação de política de rede em clusters que não usam o GKE Dataplane V2.
A seguir
- Leia Como usar o GKE Dataplane V2.
- Saiba como usar a geração de registros de políticas de rede.