Acerca del balanceo de carga en GKE


En esta página se ofrece una descripción general de cómo crea y gestiona Google Kubernetes Engine (GKE) Cloud Load Balancing. En esta página se da por hecho que conoces los siguientes conceptos:

  • Tipos de Google Cloud balanceadores de carga
  • Diferencias entre los balanceadores de carga de capa 4 (balanceadores de carga de red) y de capa 7 (balanceadores de carga de aplicaciones)

Esta página está dirigida a arquitectos de nube y especialistas en redes que diseñan y definen la arquitectura de la red de su organización. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE Enterprise. Google Cloud

Cómo crea GKE los balanceadores de carga

Para que tus aplicaciones sean accesibles desde fuera del clúster (usuarios externos) o desde dentro de tu red privada (usuarios internos), puedes exponerlas aprovisionando balanceadores de carga mediante las APIs Gateway, Ingress y Service. También puedes crear los componentes del balanceador de carga tú mismo, mientras que GKE gestiona los grupos de puntos de conexión de red (NEGs) que conectan tu balanceador de carga con los pods de tu clúster.

Pasarela

El controlador de GKE Gateway es la implementación de Google de la API Gateway de Kubernetes para el balanceo de carga en Cloud. Gateway API es un proyecto de código abierto cuyo objetivo es estandarizar la forma en que los service meshes y los controladores de entrada exponen las aplicaciones en Kubernetes. Está diseñado para ser un sucesor más expresivo, flexible y extensible del recurso Ingress.

El controlador de Gateway de GKE se usa para configurar balanceadores de carga de aplicaciones de capa 7 que exponen el tráfico HTTP(S) a las aplicaciones que se ejecutan en el clúster.

Práctica recomendada:

Usa la API Gateway para implementar tu balanceador de carga.

Entrada

El controlador de Ingress de GKE es la implementación de Google de la API Ingress. La API Ingress te permite gestionar el acceso externo a los servicios que se ejecutan en un clúster. Cuando creas un recurso Ingress en GKE, el controlador configura automáticamente un balanceador de carga de aplicación de capa 7 que permite que el tráfico HTTP o HTTPS llegue a tus aplicaciones que se ejecutan en el clúster.

GKE Gateway es la opción recomendada para las nuevas implementaciones y las aplicaciones que requieren gestión avanzada del tráfico, compatibilidad con varios protocolos o una mejor arquitectura multiinquilino. Sin embargo, GKE Ingress es una opción viable para escenarios de enrutamiento HTTP o HTTPS más sencillos, especialmente para configuraciones en las que las ventajas de migrar a la API Gateway aún no superan el esfuerzo que supone.

Servicios de tipo LoadBalancer

La API Service te permite exponer aplicaciones que se ejecutan como pods en tu clúster al tráfico externo o interno. Cuando creas un servicio de tipo LoadBalancer, GKE crea automáticamente un balanceador de carga de red de transferencia de capa 4 (TCP/UDP) basado en los parámetros del manifiesto de tu servicio.

En los balanceadores de carga de red de tipo Passthrough, cuando el tráfico llega a tus VMs de backend, las direcciones IP de origen y destino originales, el protocolo de comunicación (como TCP o UDP) y los números de puerto (si el protocolo los usa) siguen siendo los mismos. Esto significa que el tráfico se transfiere directamente a las VMs o los pods de backend y que el balanceador de carga no finaliza las conexiones. Los servicios de backend gestionan la finalización de las conexiones y se aseguran de que el tráfico fluya sin problemas del cliente al servicio.

Balanceo de carga ponderado

Si has configurado un servicio LoadBalancer externo al que pueden acceder los clientes que no están en tu red de VPC y las VMs, puedes habilitar el balanceo de carga ponderado. Google Cloud El balanceo de carga ponderado distribuye el tráfico en función del número de pods de servicio de cada nodo de GKE, de forma que los nodos que tienen más pods de servicio reciben una mayor proporción de tráfico en comparación con los nodos que tienen menos pods.

NEG independientes

Otro método para gestionar los balanceadores de carga en GKE es crear los componentes del balanceador de carga y dejar que GKE gestione los NEG. Este tipo de balanceador de carga se denomina balanceador de carga de red de proxy. Los NEGs son una forma de representar grupos de puntos finales de backend (por ejemplo, pods) para el balanceo de carga.

Este tipo de balanceador de carga está diseñado solo para el tráfico TCP. Los balanceadores de carga de red de proxy distribuyen el tráfico TCP a los backends de tu red de VPC o de otros entornos de nube. El tráfico se termina en la capa de balanceo de carga. A continuación, el balanceador de carga reenvía el tráfico estableciendo nuevas conexiones TCP con el backend disponible más cercano.

¿Qué es el balanceo de carga nativo de contenedores?

El balanceo de carga nativo de contenedores es la práctica de distribuir el tráfico de forma uniforme directamente a las direcciones IP de los pods individuales (en lugar de a los nodos) mediante los GCE_VM_IP_PORTNEGs. GCE_VM_IP_PORT Las NEGs te permiten especificar endpoints de backend mediante la dirección IP interna principal de una máquina virtual (VM) de Compute Engine o una dirección IP de uno de los intervalos de IP de alias configurados de la VM.

El balanceo de carga nativo de contenedores se usa en todos los balanceadores de carga de capa 7 gestionados por GKE, incluidos Gateway e Ingress, así como los NEGs independientes. Los servicios LoadBalancer no usan el balanceo de carga nativo de contenedores. Sin embargo, puedes conseguir una función similar habilitando el balanceo de carga ponderado.

El balanceo de carga nativo de contenedores ofrece varias ventajas, como un mejor rendimiento de la red y comprobaciones de estado más eficaces, ya que se dirige directamente a los pods. Para obtener más información, consulta Balanceo de carga nativo del contenedor.

Tablas de resumen

Consulta las siguientes tablas para planificar la configuración del balanceo de carga.

Elegir un tipo de balanceador de carga

En la siguiente tabla se muestra el tipo de balanceador de carga que se crea para un recurso determinado (Gateway, Ingress o servicio LoadBalancer):

Recurso de Kubernetes Tipo de balanceador de carga creado
Balanceador de carga de aplicación Balanceador de carga de red de paso a través
Pasarela
Entrada
Servicio LoadBalancer

Elegir un método para crear un balanceador de carga

En la siguiente tabla se muestran las opciones de GKE para crear el balanceador de carga que elijas:

Tipo de balanceador de carga Métodos para crear el balanceador de carga elegido
Pasarela Entrada Servicio LoadBalancer NEG independientes
Balanceador de carga de aplicación externo global
Balanceador de carga de aplicación externo clásico
Balanceador de carga de aplicación externo regional
Balanceador de carga de aplicación interno regional
Balanceador de carga de aplicación interno entre regiones
Balanceador de carga de red de proxy
(todos los tipos)
Balanceador de carga de red de paso a través
(interno y externo)

Siguientes pasos