Aprender los conceptos básicos de las redes de GKE

La red de Google Kubernetes Engine (GKE) proporciona una base potente, escalable y segura para tus aplicaciones en contenedores, basada en la VPC global de Google. Traduce el modelo de red abstracto de Kubernetes en recursos concretos de alto rendimiento, como balanceadores de carga globales y redes de máquinas virtuales de alto rendimiento.

Este documento y el resto de la documentación están dirigidos a arquitectos de la nube y especialistas en redes que diseñan la arquitectura de red de su organización.

Por qué es diferente la red de Kubernetes

Cuando usas Kubernetes para orquestar tus aplicaciones, tienes una perspectiva diferente sobre el diseño de la red. Con Kubernetes, te centras en cómo se comunican los pods, los servicios y los clientes externos, en lugar de gestionar la red de hosts o máquinas virtuales (VM) individuales. Esta abstracción simplifica el despliegue y el escalado de aplicaciones al eliminar complejidades como la asignación manual de puertos.

Requisitos previos

Antes de obtener información sobre las redes en GKE, debes conocer lo siguiente:

Conceptos básicos de las redes principales Google Cloud

GKE se basa en principios de redes estándar. Para entender cómo gestiona y enruta GKE el tráfico dentro de los clústeres y entre ellos, debes conocer los siguientes conceptos básicos de redes.

Capas y protocolos de redes

Para saber cómo se transfieren los datos a través de una red, empieza por las capas de red. GKE usa ampliamente conceptos de las capas de transporte, Internet y aplicación de la pila de red. Debes conocer sus funciones básicas y los protocolos habituales, como HTTP, DNS y el conjunto de protocolos TCP/IP. Para obtener más información, consulta el modelo OSI.

  • Capa de transporte: protocolo de control de la transmisión (TCP) o protocolo de datagramas de usuario (UDP): gestiona la comunicación de extremo a extremo entre aplicaciones. El protocolo de control de la transmisión (TCP) proporciona una entrega fiable, ordenada y con comprobación de errores, lo que es esencial para la mayoría del tráfico de aplicaciones. El protocolo de datagramas de usuario (UDP) ofrece una comunicación más rápida y sin conexión, que se suele usar para la reproducción en streaming o los juegos. GKE usa ambos protocolos para la comunicación entre pods y servicios.

  • Capa de Internet: protocolo de Internet (IP): direcciona y enruta paquetes a través de diferentes redes. Cada pod y nodo de GKE obtiene una dirección IP, y el enrutamiento de direcciones IP determina cómo se desplaza el tráfico por tu clúster y tu red de VPC.

  • Capa de aplicación: protocolo de transferencia de hipertexto (HTTP) y sistema de nombres de dominio (DNS): en esta capa, las aplicaciones interactúan con la red. HTTP y HTTPS son fundamentales para la comunicación web y los controladores de entrada y los balanceadores de carga los usan habitualmente para exponer aplicaciones. El DNS es fundamental para el descubrimiento de servicios en Kubernetes, ya que traduce los nombres de servicio legibles por humanos en direcciones IP.

Direcciones IP y notación CIDR

Debes conocer el direccionamiento IP y la notación CIDR (enrutamiento de interdominios sin clases), ya que el modelo de red de Kubernetes usa direcciones IP de forma exhaustiva para la comunicación entre todos sus componentes. CIDR es fundamental para planificar la asignación de direcciones IP de tu clúster en tu Google Cloudred de VPC. Te permite definir bloques de direcciones IP para pods, servicios y nodos. Por ejemplo, si asignas 10.10.0.0/16 a tus pods,se reservarán 65.536 direcciones IP. Una planificación adecuada de CIDR ayuda a evitar situaciones en las que te quedes sin direcciones IP a medida que se escale el clúster.

Utilidades de redes de Linux

GKE usa las funciones subyacentes del kernel de Linux para implementar el enrutamiento del tráfico y el balanceo de carga en el clúster. Debes estar familiarizado con los conceptos y las utilidades fundamentales de gestión de redes de Linux, como las tablas de enrutamiento y iptables. Tradicionalmente, kube-proxy, un componente clave de Kubernetes en cada nodo, programa estas utilidades para interceptar el tráfico destinado a un servicio y redirigirlo a uno de los pods backend. Los clústeres de GKE modernos que usan GKE Dataplane V2 sustituyen iptables por eBPF para mejorar el rendimiento y la observabilidad.

Información sobre el modelo de red de Kubernetes

El modelo de red de Kubernetes define cómo se comunican las aplicaciones en contenedores dentro de un clúster. A diferencia de los modelos convencionales que se centran en las máquinas virtuales, Kubernetes hace hincapié en la comunicación entre pods y entre servicios. Este modelo hace que la red de aplicaciones sea más predecible al abstraer la falta de fiabilidad de las direcciones IP de los pods dinámicos. Como los pods son efímeros y se pueden volver a crear en cualquier momento con una nueva dirección IP, la comunicación directa con las direcciones IP de los pods es inestable por naturaleza. Kubernetes resuelve este problema agrupando los pods en un servicio. Un servicio proporciona una dirección IP virtual estable (ClusterIP) y un nombre de DNS coherente al que las aplicaciones pueden conectarse de forma fiable. Este endpoint estable, combinado con una red plana que permite que todos los pods se comuniquen directamente sin necesidad de NAT, crea una base sólida para las aplicaciones modernas en contenedores.

Principios clave del modelo de redes de Kubernetes

  • Cada pod tiene una dirección IP única: cada pod de un clúster de Kubernetes tiene su propia dirección IP, que comparten todos los contenedores de ese pod. Esta dirección IP única permite que los pods actúen como hosts individuales en la red, de forma similar a las máquinas virtuales.

  • Comunicación directa entre pods sin NAT: todos los pods pueden comunicarse directamente entre sí mediante sus direcciones IP, independientemente del nodo en el que se ejecuten. En GKE, esta comunicación directa se consigue mediante clústeres nativos de VPC, en los que las direcciones IP de los pods son direcciones IP con alias de tu red de VPC. Estas direcciones IP de alias permiten que los pods se puedan enrutar directamente en la VPC, lo que elimina la necesidad de usar la traducción de direcciones de red (NAT) y simplifica la comunicación entre nodos.

  • Los servicios proporcionan endpoints estables: como los pods son efímeros y se pueden volver a crear en cualquier momento con nuevas direcciones IP, la comunicación directa con las direcciones IP de los pods no es fiable. Los servicios de Kubernetes resuelven este problema agrupando un conjunto de pods y exponiendo una dirección IP (ClusterIP) y un nombre de DNS estables. Esta abstracción de problemas permite un acceso coherente a un conjunto dinámico de pods.

  • Descubrimiento de servicios integrado con DNS: Kubernetes incluye un servicio DNS integrado que asigna automáticamente nombres DNS a los servicios. Las aplicaciones pueden usar estos nombres (por ejemplo, my-service.my-namespace.svc.cluster.local) para localizar otros servicios y comunicarse con ellos de forma fiable.

  • Balanceo de carga integrado: cuando los clientes envían tráfico a la dirección ClusterIP de un servicio, las reglas de red del nodo (programadas por kube-proxy o GKE Dataplane V2) interceptan el tráfico y lo balancean entre todos los pods en buen estado de ese servicio. Esta distribución se produce en la fuente, lo que la hace muy eficiente y ayuda a garantizar una alta disponibilidad.

En resumen, el modelo de redes de Kubernetes abstrae muchas complejidades de las redes convencionales en un conjunto de primitivas más sencillo y potente para aplicaciones en contenedores. Al habilitar la comunicación directa entre pods, los endpoints de servicio estables y el DNS y el balanceo de carga integrados, proporciona una base sólida y escalable para las aplicaciones modernas en contenedores.

Relación entre GKE y Google Cloud

La red de GKE actúa como puente entre el modelo conceptual de la red de Kubernetes y la infraestructura física de Google Cloud:

  • Modelo de red de Kubernetes: Kubernetes define reglas según las cuales cada pod obtiene su propia dirección IP, lo que permite la comunicación directa entre pods sin necesidad de NAT.

  • Google Cloud Redes: es la infraestructura subyacente, que incluye VPC, subredes, cortafuegos y balanceadores de carga.

  • Redes de GKE: esta capa de conexión implementa el modelo de Kubernetes mediante la infraestructura de Google Cloud.

  • Interfaz de red de contenedores (CNI): GKE usa un complemento de CNI en cada nodo para gestionar la asignación de direcciones IP de los pods y conectar los pods a la red del nodo.

  • Plano de control de GKE: estos componentes interactúan conGoogle Cloud para configurar automáticamente las rutas de VPC de los intervalos de IPs de los pods, gestionar las reglas de cortafuegos y aprovisionar balanceadores de carga en función de tus despliegues de Kubernetes.

En el siguiente diagrama se muestra el flujo del tráfico de entrada y salida hacia y desde los clústeres de GKE que están en una VPC y detrás de un cortafuegos en la nube. El tráfico de entrada incluye el tráfico balanceado de componentes como el proxy SSL, el proxy TCP o el balanceo de carga HTTP(S). El tráfico de salida incluye destinos como redes externas, usuarios y balanceo de carga de proxy TCP.
Imagen 1. La red de GKE se integra con Google Cloud componentes como VPC, Cloud Load Balancing y Cloud Firewall para proporcionar un entorno seguro y escalable.

Por qué Google Cloud es esencial tener conocimientos sobre redes para usar GKE

GKE se basa en la infraestructura de redes. Google Cloud GKE no crea una capa de red independiente, sino que usa los componentes de red Google Cloud . Por lo tanto, es fundamental conocer las redes para diseñar y proteger tus clústeres de GKE. Google Cloud

Estos son los motivos por los que los Google Cloud conceptos básicos de las redes son importantes:

  • Tu clúster se ejecuta en una VPC: todos los clústeres de GKE operan en una VPC. Todas las direcciones IP (de nodos, pods y servicios) se obtienen de los intervalos de direcciones IP definidos en las subredes de tu VPC. Para asignar correctamente las direcciones IP y evitar quedarte sin ellas, debes tener conocimientos prácticos sobre el diseño de VPCs y subredes. Para obtener más información, consulta la documentación de VPC.

  • La exposición de aplicaciones usa Google Cloud balanceadores de carga: cuando expones aplicaciones fuera del clúster mediante un servicio LoadBalancer o Ingress, GKE aprovisiona un Google Cloud balanceador de carga Google Cloud integrado. Un servicio LoadBalancer se suele usar para el tráfico de la capa 4, mientras que un objeto Ingress se usa para el tráfico HTTP(S) de la capa 7. Si sabes cómo funcionan estos balanceadores de carga, podrás gestionar el tráfico externo, configurar comprobaciones de estado y solucionar problemas de conectividad de forma eficaz. Para obtener más información, consulta la documentación de Cloud Load Balancing.

  • La seguridad se aplica mediante Google Cloud reglas de cortafuegos: GKE crea automáticamente algunas reglas de cortafuegos para permitir el tráfico esencial del clúster. Sin embargo, para proteger tus cargas de trabajo, debes definir reglas de cortafuegos de VPC personalizadas. Las configuraciones incorrectas pueden bloquear el tráfico crítico, por lo que es importante entender cómo funcionan estas reglas. Para obtener más información, consulta la documentación de Cloud Next Generation Firewall.

Siguientes pasos