Kubernetes, la herramienta de orquestación de contenedores, es una gracia salvadora en el contexto de los microservicios. En resumen, muchas empresas han adoptado los microservicios para gestionar proyectos. Es decir, ahora las empresas tienen que lidiar con cientos de pequeños contenedores en varias plataformas.
Si la red no se gestiona y equilibra adecuadamente, las cargas de datos pueden crear un enorme cuello de botella en el rendimiento. Además, si no se lleva a cabo el equilibrio de datos, los usuarios finales tienen menos recursos para ejecutar las máquinas virtuales y los contenedores. Sin embargo, cuando se gestiona adecuadamente la escalabilidad y la disponibilidad, los cuellos de botella y las limitaciones de recursos dejan de ser una amenaza.
Para utilizar Kubernetes de forma eficiente, hay que utilizar el equilibrio de carga. El equilibrio de carga evita a los usuarios la molestia de tener que lidiar con servicios y aplicaciones que no responden. También actúa como un facilitador invisible entre un grupo de servidores y un cliente, lo que ayuda a garantizar que las solicitudes de conexión no se pierdan.
Para empezar, vamos a profundizar en los fundamentos del equilibrio de carga.
¿Qué es el equilibrio de carga de Kubernetes?
Los sitios web y las aplicaciones empresariales tienen que hacer frente a un gran número de consultas en horas punta. Además, para satisfacer esta demanda, las empresas reparten la carga de trabajo entre muchos servidores. Además de ahorrar costes, también permite una distribución uniforme de la carga entre todos los servidores. Este equilibrio de la carga evita que un solo servidor se bloquee. Debido a las exigencias empresariales y a las necesidades de los usuarios, todas las aplicaciones modernas no pueden funcionar sin él.
Los servidores pueden estar en las instalaciones, en la nube o en un centro de datos. Pueden ser virtuales, físicos o formar parte de soluciones híbridas. Para ello, el equilibrio de carga debe funcionar en muchas plataformas diferentes. En cualquier caso, hay que conseguir el mayor rendimiento con el menor tiempo de respuesta.
Una forma de ver el equilibrio de carga es considerar el proceso como un «policía de tráfico». En esta analogía, el «policía de tráfico» dirige las solicitudes y los datos entrantes a través de todos los servidores. En este caso, el «policía» se asegura de que ningún servidor esté sobrecargado y pone orden en una situación caótica. Si, por alguna razón, un servidor se cae, el equilibrador de carga redirige el tráfico automáticamente. Cuando se añade un nuevo servidor al conjunto de servidores, el equilibrador de carga asigna automáticamente sus recursos. Con este fin, los equilibradores de carga automáticos garantizan que su sistema mantenga una alta disponibilidad durante las actualizaciones y las tareas de mantenimiento del sistema.
Ahora que ya conoces los fundamentos del balanceo de carga, veamos sus ventajas.
Beneficios del equilibrio de carga
El balanceo de carga proporciona una alta disponibilidad a su negocio junto con muchas otras ventajas de valor añadido:
- Apoyo al tráfico durante las horas punta: cuando las transacciones se disparan, el equilibrio de carga proporciona una respuesta rápida y de alta calidad a la demanda.
- Desplazamiento del tráfico durante los lanzamientos canarios: a medida que se lanzan nuevos desarrollos, el tráfico se redirige a través de la red para compensar cuellos de botella de recursos específicos.
- Lanzamientos azules o verdes: a medida que se ejecutan diferentes versiones de una aplicación en dos entornos distintos, el equilibrio de carga ayuda a reducir la ralentización de todo el sistema.
- Migración de la infraestructura: a medida que se producen transiciones de plataforma, el equilibrio de carga ayuda a garantizar una alta disponibilidad.
- Análisis predictivo: a medida que el tráfico de usuarios cambia, se puede supervisar y realizar cambios proactivos en la rutina para adaptarse a él.
- Flexibilidad de las tareas de mantenimiento: a medida que se producen las interrupciones, se reducen los cortes al dirigir a los usuarios a los servidores en línea.
- Ya he explicado cómo puede utilizar el equilibrio de carga para ayudar a su empresa. Ahora, aprenderás cómo se puede aplicar el equilibrio de carga al modelo de red de Kubernetes.
Entendiendo el modelo de red Kubernetes
En esta sección, le ayudaré a entender cómo funciona el equilibrio de carga con una solución Kubernetes. Aprenderás todos los términos principales utilizados en la red Kubernetes para ayudarte a entender cómo funciona todo.
Equilibrio de carga en Kubernetes
Algo llamado «servicios» juega un papel importante en el equilibrio de carga. En resumen, un servicio es un grupo de pods bajo un nombre común. Al agrupar los objetos de esta manera, el sistema puede identificar fácilmente los grupos de pods y permite la selección por parte de otros componentes.
Kubernetes asigna un ClusterIP a cada servicio creado. Se trata de una dirección IP accesible sólo dentro de un clúster K8s. Permite vincular otros contenedores dentro del cluster con estos pods. Los servicios pueden ir más allá del uso interno. De hecho, los servicios pueden ser accesibles a clientes externos si es necesario.
Equilibrio de carga en conexiones externas
LoadBalancer, Ingress y NodePorts son diferentes formas de exponer los servicios al mundo. En efecto, le permiten traer tráfico externo a su cluster. La forma estándar de exponer directamente un servicio a Internet es a través de un servicio LoadBalancer. En este caso, el tráfico en el nodo especificado se reenvía al servicio sin ningún tipo de filtrado o enrutamiento. Esto permite enviar cualquier tipo de tráfico, como TCP, gRPC, HTTP, UDP, etc., hacia él. En otras palabras, el LoadBalancer proporciona un punto final estable al que puede acceder el tráfico externo.
Enrutamiento inteligente de Ingress
Ingress, a diferencia del LoadBalancer, no es un tipo de servicio. En su lugar, Ingress actúa como un «enrutador inteligente» frente a múltiples enrutadores. Este enrutador inteligente funciona mediante un controlador, que incluye un recurso Ingress y un demonio. Tanto el recurso como el demonio utilizan un pod especializado de Kubernetes que ayuda a los pods del proyecto a comunicarse con los clientes externos. En esencia, el recurso Ingress es un conjunto de reglas que gobiernan el tráfico. Es decir, Ingress decide qué conexiones entrantes pueden llegar a qué servicios. El demonio aplica estas reglas durante el tiempo de ejecución y especifica los requisitos de conexión.
Reglas personalizadas de ingress y cumplimiento
El recurso ingress permite añadir reglas de equilibrio de carga más detalladas si es necesario. Hacerlo le ayuda a adaptarse a proveedores específicos o a requisitos normativos. Las reglas personalizadas le permiten controlar el equilibrio de carga específicamente para sus necesidades. En este caso, significa que puede atender a las necesidades de la aplicación y a las condiciones del tiempo de ejecución.
Ahora que comprende bien cómo funciona el equilibrio de carga en Kubernetes, repasemos los términos clave utilizados en las redes de Kubernetes.
Términos clave de la red Kubernetes
Cuando se trabaja con un sistema complejo como K8s, puede resultar abrumador rápidamente. Para ayudarte a entender y mantenerte al día con las frases y términos desconocidos, he añadido aquí los términos clave que necesitas conocer. Verás muchos de estos términos al hablar de las estructuras de red de K8s, así que asegúrate de conocer bien cada uno de ellos.