Las herramientas de redes de Google Kubernetes Engine (GKE) proporcionan una base potente, escalable y segura para tus aplicaciones en contenedores, creada en la VPC global de Google. Traduce el modelo de redes abstracto de Kubernetes en recursos concretos de alto rendimiento, como balanceadores de cargas globales y redes de VM de alta capacidad de procesamiento.
Este documento y el resto de la documentación están dirigidos a los arquitectos de nube y especialistas en redes que diseñan la arquitectura de red de su organización.
Por qué las redes de Kubernetes son diferentes
Cuando usas Kubernetes para organizar tus aplicaciones, piensas de manera diferente sobre el diseño de red. Con Kubernetes, te enfocas en cómo se comunican los Pods, los Services y los clientes externos, en lugar de administrar las redes de hosts o máquinas virtuales (VM) individuales. Esta abstracción simplifica la implementación y el escalamiento de las aplicaciones, ya que elimina complejidades como la asignación manual de puertos.
Requisitos previos
Antes de aprender sobre las herramientas de redes en GKE, debes comprender lo siguiente:
- Conceptos clave sobre redes en general, Google Cloudy Kubernetes
- Lee Comienza a aprender sobre GKE.
Aspectos básicos de las herramientas de redes y Google Cloud
GKE se basa en principios de redes estándares. Para comprender cómo GKE administra y enruta 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 comprender cómo viajan los datos a través de una red, comienza con las capas de redes. 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 comunes, 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 transmisión (TCP) o Protocolo de datagramas de usuario (UDP): Controla la comunicación de extremo a extremo entre aplicaciones. El Protocolo de Control de Transmisión (TCP) proporciona una entrega confiable, ordenada y con verificación de errores, lo que es esencial para la mayor parte 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 transmisión o los juegos. GKE usa ambos protocolos para la comunicación entre Pods y Services.
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 el tráfico encuentra su camino a través de tu clúster y 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 usan comúnmente los controladores de entrada y los balanceadores de cargas para exponer aplicaciones. El DNS es fundamental para el descubrimiento de servicios en Kubernetes, ya que traduce nombres de servicio legibles para las personas en direcciones IP.
Direccionamiento IP y notación CIDR
Debes comprender la dirección IP y la notación CIDR (enrutamiento entre dominios sin clases), ya que el modelo de redes de Kubernetes usa direcciones IP de forma extensiva para la comunicación entre todos sus componentes. El CIDR es fundamental para planificar la asignación de direcciones IP del clúster dentro de tu red de VPC Google Cloud. Te permite definir bloques de direcciones IP para Pods, Services y nodos. Por ejemplo, asignar 10.10.0.0/16 para tus Pods reserva 65,536 direcciones IP. La planificación adecuada del CIDR ayuda a evitar situaciones en las que te quedas sin direcciones IP a medida que se escala tu clúster.
Utilidades de redes de Linux
GKE usa funciones subyacentes del kernel de Linux para implementar el enrutamiento del tráfico y el balanceo de cargas dentro del clúster. Debes conocer los conceptos y las utilidades fundamentales de administración de red 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 Service y redireccionarlo a uno de los Pods de backend. Los clústeres de GKE modernos que usan GKE Dataplane V2 reemplazan iptables por eBPF para mejorar el rendimiento y la observabilidad.
Comprende el modelo de redes de Kubernetes
El modelo de redes de Kubernetes define cómo se comunican las aplicaciones en contenedores dentro de un clúster. A diferencia de los modelos convencionales que se enfocan en las máquinas virtuales, Kubernetes enfatiza la comunicación entre Pods y basada en Services. Este modelo hace que las redes de aplicaciones sean más predecibles, ya que abstrae la falta de confiabilidad de las direcciones IP dinámicas de los Pods. Debido a que 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 inherentemente inestable. Kubernetes resuelve este problema agrupando los Pods en un Service. Un Service proporciona una dirección IP virtual estable (ClusterIP) y un nombre de DNS coherente al que las aplicaciones pueden conectarse de forma confiable. Este extremo 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 en un clúster de Kubernetes obtiene su propia dirección IP, que comparten todos los contenedores dentro de ese Pod. Esta dirección IP única permite que los Pods actúen como hosts individuales en la red, de manera similar a las máquinas virtuales.
Comunicación plana entre Pods sin NAT: Todos los Pods pueden comunicarse directamente entre sí usando sus direcciones IP, independientemente del nodo en el que se ejecuten. En GKE, esta comunicación directa se logra con clústeres nativos de VPC, en los que las direcciones IP de los Pods son direcciones IP de alias dentro de tu red de VPC. Estas direcciones IP de alias permiten que los Pods se puedan enrutar directamente dentro de la VPC, lo que elimina la necesidad de la traducción de direcciones de red (NAT) y simplifica la comunicación entre nodos.
Los Services proporcionan extremos estables: Debido a que los Pods son efímeros y se pueden volver a crear en cualquier momento con direcciones IP nuevas, la comunicación directa con las direcciones IP de los Pods no es confiable. Los Services de Kubernetes resuelven este problema agrupando un conjunto de Pods y exponiendo una dirección IP estable (
ClusterIP) y un nombre de DNS. 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 de DNS integrado que asigna automáticamente nombres de DNS a los objetos Service. Las aplicaciones pueden usar estos nombres (por ejemplo,
my-service.my-namespace.svc.cluster.local) para ubicar y comunicarse de manera confiable con otros servicios.Balanceo de cargas integrado: Cuando los clientes envían tráfico a la dirección
ClusterIPde un servicio, las reglas de redes en el nodo (programadas porkube-proxyo GKE Dataplane V2) interceptan el tráfico y lo balancean entre todos los Pods en buen estado de ese servicio. Esta distribución se realiza 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 redes convencionales en un conjunto de primitivas más simple y potente para aplicaciones alojadas en contenedores. Al habilitar la comunicación directa entre Pods, los extremos de Service estables y el DNS y el balanceo de cargas integrados, proporciona una base sólida y escalable para las aplicaciones modernas en contenedores.
La relación entre GKE y Google Cloud
Las redes de GKE actúan como puente entre el modelo conceptual de las redes de Kubernetes y la infraestructura física de Google Cloud:
Modelo de redes de Kubernetes: Kubernetes define reglas en las que cada Pod obtiene su propia dirección IP, lo que permite la comunicación directa de Pod a Pod sin necesidad de NAT.
Google Cloud Herramientas de redes: Es la infraestructura subyacente, que incluye la VPC, las subredes, los firewalls y los balanceadores de cargas.
Redes de GKE: Esta capa de conexión implementa el modelo de Kubernetes con la infraestructura de Google Cloud.
Interfaz de red de contenedor (CNI): GKE usa un complemento de CNI en cada nodo para controlar la asignación de direcciones IP de Pod 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 para los rangos de IP de Pods, administrar las reglas de firewall y aprovisionar los balanceadores de cargas según tus implementaciones de Kubernetes.
Por qué Google Cloud los conocimientos de redes son esenciales para GKE
GKE se basa en la infraestructura de redes. Google CloudGKE no crea una capa de red independiente, sino que usa componentes de redes Google Cloud existentes. Por lo tanto, comprender las Google Cloud herramientas de redes es fundamental para diseñar y proteger tus clústeres de GKE.
Estas son las razones por las que los Google Cloud aspectos básicos de las redes son importantes:
Tu clúster se ejecuta en una VPC: Todos los clústeres de GKE operan dentro de una VPC. Todas las direcciones IP (para nodos, Pods y Services) se extraen de los rangos de direcciones IP definidos en tus subredes de VPC. Para asignar direcciones IP de forma adecuada y evitar quedarte sin ellas, necesitas tener conocimientos prácticos sobre el diseño de VPC y subredes. Para obtener más información, consulta la documentación de VPC.
La exposición de aplicaciones usa Google Cloud balanceadores de cargas: Cuando expones aplicaciones fuera del clúster con un objeto Service LoadBalancer o Ingress, GKE aprovisiona un balanceador de cargas Google Cloud integrado. Por lo general, un servicio de LoadBalancer se usa para el tráfico de la capa 4, y un objeto Ingress se usa para el tráfico de HTTP(S) de la capa 7. Comprender cómo operan estos balanceadores de cargas te ayuda a administrar el tráfico externo, configurar verificaciones de estado y solucionar problemas de conectividad de manera eficaz. Para obtener más información, consulta la documentación de Cloud Load Balancing.
La seguridad se aplica a través de Google Cloud reglas de firewall: GKE crea automáticamente algunas reglas de firewall para permitir el tráfico esencial del clúster. Sin embargo, proteger tus cargas de trabajo requiere que definas reglas de firewall de VPC personalizadas. Las configuraciones incorrectas pueden bloquear el tráfico crítico, por lo que es importante comprender cómo funcionan estas reglas. Para obtener más información, consulta la documentación de Cloud Next Generation Firewall.
¿Qué sigue?
- Lee sobre los tres pilares de las herramientas de redes de GKE para profundizar en la arquitectura.
- Obtén información sobre las NetworkPolicies de GKE y las políticas de red de Kubernetes.
- Explora la exposición de aplicaciones con Services y el concepto de Services de Kubernetes.
- Comprende Ingress para GKE y Kubernetes Ingress.
- Obtén más información sobre los clústeres nativos de la VPC.
- Obtén información sobre los beneficios de GKE Dataplane V2.
- Soluciona problemas de redes de GKE.