En esta página, se ofrece una descripción general de lo que hace GKE Dataplane V2 y cómo funciona.
Antes de leer este documento, asegúrate de conocer las herramientas de redes dentro de los clústeres de GKE.
Descripción general de GKE Dataplane V2
GKE Dataplane V2 es un plano de datos optimizado para las herramientas de redes de Kubernetes. GKE Dataplane V2 proporciona lo siguiente:
- Una experiencia del usuario coherente para las herramientas de redes
- Visibilidad en tiempo real de la actividad de red.
- Una arquitectura más simple que facilita la administración y la solución de problemas de los clústeres.
GKE Dataplane V2 está habilitado de forma predeterminada para todos los clústeres nuevos de Autopilot.
Cómo funciona GKE Dataplane V2
GKE Dataplane V2 se implementa mediante eBPF.
A medida que los paquetes llegan a un nodo de GKE, los programas de eBPF instalados en el kernel deciden cómo enrutar y procesar los paquetes. A diferencia del procesamiento de paquetes con iptables
, los programas de eBPF pueden usar metadatos específicos de Kubernetes en el paquete. Esto permite que GKE Dataplane V2 procese paquetes de red en el kernel de manera más eficiente y, luego, informe acciones anotadas al espacio del usuario para el registro.
En el siguiente diagrama, se muestra la ruta de un paquete a través de un nodo con GKE Dataplane V2:
GKE implementa el controlador de GKE Dataplane V2 como un
DaemonSet
llamado anetd
en cada nodo del clúster. anetd
interpreta los objetos de Kubernetes y programa las topologías de red en eBPF. Los Pods anetd
se ejecutan en el espacio de nombres kube-system
.
GKE Dataplane V2 y NetworkPolicy
GKE Dataplane V2 se implementa con Cilium. El plano de datos heredado para GKE se implementa mediante Calico.
Ambas tecnologías administran NetworkPolicy de Kubernetes.
Cilium usa eBPF y la interfaz de red de contenedor (CNI) Calico usa iptables
en el kernel de Linux.
Ventajas de GKE Dataplane V2
Escalabilidad
GKE Dataplane V2 tiene características de escalabilidad diferentes a la de los planos de datos heredados.
Para las versiones de GKE en las que GKE Dataplane V2 no usa kube-proxy y no se basa en iptables
para el enrutamiento de servicios, GKE quita algunos cuellos de botella relacionados con iptables
, como la cantidad de servicios.
GKE Dataplane V2 se basa en mapas de eBPF que están limitados a 64,000 extremos en todos los servicios.
Seguridad
La política de red de Kubernetes siempre está activada en clústeres con GKE Dataplane V2. No es necesario que instales y administres complementos de software de terceros, como Calico, para aplicar la política de red.
Operaciones
Cuando creas un clúster con GKE Dataplane V2, el registro de políticas de red está integrado. Configura la CRD de registro en tu clúster para ver cuándo los Pods permiten y rechazan las conexiones.
Coherencia
GKE Dataplane V2 proporciona una experiencia de red coherente.
Para obtener más información, consulta Disponibilidad de GKE Dataplane V2.
Especificaciones técnicas de GKE Dataplane V2
GKE Dataplane V2 admite clústeres con las siguientes especificaciones:
Especificación | GKE | Google Distributed Cloud | Google Distributed Cloud |
---|---|---|---|
Cantidad de nodos por clúster | 5,000 | 500 | 500 |
Cantidad de Pods por clúster | 50,000 | 15,000 | 27,500 |
Cantidad de Services LoadBalancer por clúster | 750 | 500 | 1,000 |
GKE Dataplane V2 mantiene un mapa de Services para hacer un seguimiento de qué Services hacen referencia a qué Pods como sus backends. La cantidad de backends de Pods para cada Service sumado en todos los Services debe caber en el mapa de Services, que puede contener hasta 64,000 entradas. Si se excede este límite, es posible que tu clúster no funcione según lo previsto.
Aumento del límite de nodos en la versión 1.23
A partir de la versión 1.23 de Kubernetes, el límite de 500 nodos por clúster de GKE Dataplane V2 se aumentó a 5,000, con las siguientes condiciones adicionales impuestas a los clústeres:
- Clústeres privados o públicos que usan Private Service Connect Para verificar si tu clúster usa Private Service Connect, consulta Clústeres públicos con Private Service Connect.
- Solo clústeres regionales
- Solo los clústeres que se crearon con la versión 1.23 o posterior de GKE tienen un límite de 5,000 nodos elevados. Los clústeres que se crearon con versiones anteriores de GKE pueden requerir elevar una cuota de tamaño del clúster. Comunícate con el equipo de asistencia para recibir ayuda.
- Los clústeres que usan CRD de Cilium (CiliumNetworkPolicy y CiliumClusterwideNetworkPolicy) no pueden escalar a 5,000 nodos.
Objetos Service LoadBalancer en Google Distributed Cloud
La cantidad de objetos Service LoadBalancer compatibles con Google Distributed Cloud depende del modo de balanceador de cargas que se usa. Google Distributed Cloud admite 500 objetos Service LoadBalancer cuando se usa el modo de balanceo de cargas agrupado (Seesaw) y 250 cuando se usa el modo de balanceo de cargas integrado con F5. Para obtener más información, consulta Escalabilidad.
Limitaciones
GKE Dataplane V2 tiene las siguientes limitaciones:
- GKE Dataplane V2 solo se puede habilitar cuando se crea un clúster nuevo. Los clústeres existentes no pueden actualizarse para usar GKE Dataplane V2.
- En las versiones de GKE anteriores a 1.20.12-gke.500, si habilitas GKE Dataplane V2 con NodeLocal DNSCache, no puedes configurar Pods con
dnsPolicy: ClusterFirstWithHostNet
, o tus Pods experimentarán errores de resolución de DNS. - A partir de la versión 1.21.5-gke.1300 de GKE, GKE Dataplane V2 no es compatible con las APIs de CRD de CiliumNetworkPolicy o CiliumClusterwideNetworkPolicy. A partir de las versiones 1.28.6-gke.1095000 y 1.29.1-gke.1016000 de GKE, puedes habilitar CiliumClusterwideNetworkPolicy en clústeres nuevos o existentes.
- No se admiten los balanceadores de cargas de red de transferencia internos creados de forma manual asociados con un Service de tipo NodePort.
- Debido a que GKE Dataplane V2 optimiza el procesamiento de paquetes del kernel de eBPF a través de eBPF, el rendimiento de tu Pod podría verse afectado si tienes cargas de trabajo con una alta deserción de Pods. El enfoque principal de GKE Dataplane V2 es lograr un eBPF óptimo.
- GKE Dataplane V2 usa
cilium
en lugar dekube-proxy
para implementar lo objetos Service de Kubernetes. La comunidad de Kubernetes mantiene y desarrollakube-proxy
, por lo que es más probable que las funciones nuevas de los objetos Service se implementen enkube-proxy
antes de que se implementen encilium
para GKE Dataplane V2. Un ejemplo de una función de Services que se implementó por primera vez enkube-proxy
es KEP-1669: extremos de finalización del proxy. - Para los Services de NodePort que ejecutan la versión 1.25 o anteriores con rangos de SNAT y PUPI predeterminados, debes agregar el rango de PUPI de los Pods en
nonMasqueradeCIDRs
en elip-masq-agent
ConfigMap para evitar problemas de conectividad. - En algunos casos, los Pods del agente de GKE Dataplane V2 (
anetd
) pueden consumir una cantidad significativa de recursos de CPU, hasta dos o tres CPU virtuales por instancia. Esto ocurre cuando hay un gran volumen de conexiones TCP que se abren y cierran con rapidez en el nodo. Para mitigar este problema, recomendamos implementar mensajes keep-alive para llamadas HTTP y agrupación de conexiones en las cargas de trabajo relevantes. - Los clústeres de GKE Dataplane V2 que ejecutan la versión 1.27 o anterior del plano de control no
son compatibles con el campo
.spec.internalTrafficPolicy
del Service. La política de tráfico interno vigente para un Service esCluster
. Los backends en cualquier nodo se consideran como candidatos para la resolución del Service. Para obtener más información sobre el campo, consulta Política de tráfico interno del Service.
GKE Dataplane V2 y kube-proxy
GKE Dataplane V2 no usa kube-proxy.
Aplicación de la política de red sin GKE Dataplane V2
Consulta Usa la aplicación de la política de red para obtener instrucciones sobre cómo habilitar la aplicación de la política de red en clústeres que no usan GKE Dataplane V2.
¿Qué sigue?
- Lee Usa GKE Dataplane V2.
- Obtén más información para usar el registro de políticas de red.