¿Qué es Kubernetes Balancer de carga??
Los equilibradores de carga distribuyen el tráfico entrante en un grupo de hosts para garantizar cargas de trabajo óptimas y alta disponibilidad. Debido a su diseño subyacente, la arquitectura distribuida de un clúster de Kubernetes se basa en múltiples instancias de servicios, que plantea desafíos en ausencia de asignación de carga apropiada.
Un equilibrador de carga es un controlador de tráfico que enruta las solicitudes del cliente a los nodos que pueden servirlos de manera rápida y eficiente. El equilibrador de carga redistribuye la carga de trabajo a través de los nodos restantes cuando uno de los hosts falla. Cuando un nuevo nodo ingresa a un clúster, por otro lado, el servicio comienza automáticamente a enviar solicitudes a las cápsulas asociadas con él.
Un servicio de equilibrio de carga en un clúster Kubernetes hace lo siguiente:
Cómo agregar un equilibrador de carga a un clúster de Kubernetes?
Se puede agregar un equilibrador de carga a un clúster de Kubernetes de dos maneras:
Mediante el uso de un archivo de configuración:
El equilibrador de carga se habilita especificando LoadBalancer en el campo Tipo del archivo de configuración del servicio. El proveedor de servicios en la nube administra y guía este equilibrador de carga, que envía tráfico a las vainas de fondo. El archivo de configuración del servicio debe parecerse a lo siguiente:
Los usuarios pueden asignar una dirección IP al equilibrador de carga dependiendo del proveedor de la nube. La etiqueta LoadBalancerIP especificada por el usuario se puede usar para configurar esto. Si el usuario no proporciona una dirección IP, el equilibrador de carga se asigna una dirección IP efímera. Si el usuario especifica una dirección IP que el proveedor de la nube no es compatible, no se tiene en cuenta.
El.estado.Se debe utilizar la propiedad LoadBalancer si el usuario desea agregar más información al servicio de equilibrio de carga. Vea la imagen a continuación para configurar la dirección IP de entrada.
estado:Usando kubectl:
El parámetro -Type = LoadBalancer: el parámetro también se puede usar para construir un equilibrador de carga con el comando Kubectl Expose.
El comando anterior crea el nuevo servicio y conecta el nuevo POD a un puerto específico.
¿Qué son los equilibradores de carga de recolección de basura??
Cuando se destruye un servicio de tipo LoadBalancer, los recursos de equilibrio de carga asociados en el proveedor de la nube deben limpiarse lo antes posible. Sin embargo, es bien sabido que los recursos en la nube pueden quedarse huérfanos si el servicio relacionado se elimina en una variedad de situaciones. Para evitar que esto ocurra, se desarrolló la protección del finalizador para los bobalos de carga de servicio.
Si un servicio es del tipo LoadBalancer, el controlador de servicio agregará un finalizador llamado Servicio.Kubernetes.IO/Load-Balancer-Cleanup. El finalizador se borrará después de que el recurso del equilibrador de carga ya se haya limpiado. Incluso en casos extremos, como cuando el controlador de servicio se bloquea, esto evita que los recursos del equilibrador de carga colgante.
Diferentes formas de configurar el equilibrador de carga en Kubernetes
Para manejar el tráfico externo a los pods, están disponibles los métodos y algoritmos de equilibrio de carga de Kubernetes.
Roble redondo
Un enfoque de Round Robin distribuye nuevas conexiones a servidores calificados en orden secuencial. Esta técnica es estática, lo que significa que no tiene en cuenta las velocidades o las preocupaciones de rendimiento específicas del servidor, por lo tanto, un servidor lento y un servidor de mejor rendimiento recibirán la misma cantidad de conexiones. Como resultado, el equilibrio de carga de round robin no siempre es la mejor opción para el tráfico de producción y es más adecuado para pruebas de carga simples.
Kube-Proxy L4 Round Robin
El Kube-Proxy recopila y ruta todas las solicitudes entregadas al servicio de Kubernetes.
Debido a que es un proceso y no un proxy, utiliza una IP virtual para el servicio. Luego agrega arquitectura y complejidad al enrutamiento. Cada solicitud se suma a la latencia, y el problema empeora a medida que crece el número de servicios.
L7 Round Robin
A veces, el enrutamiento del tráfico directamente a Pods evita el Kube-Proxy. Esto se puede lograr con una puerta de enlace de la API de Kubernetes que emplea un proxy L7 para manejar las solicitudes entre las vainas de Kubernetes disponibles.
Hash de hash/anillo consistente
El Balancer de carga de Kubernetes utiliza un hash basado en una clave definida para distribuir nuevas conexiones a través de los servidores utilizando técnicas de hashing consistentes. Esta estrategia es mejor para manejar grandes servidores de caché con contenido dinámico.
Debido a que la tabla hash completa no necesita ser recalculada cada vez que se agrega o retira un servidor, este enfoque es consistente.
Mercado servidores
En lugar de asignar todas las solicitudes entre todos los servidores, la técnica de una menor cantidad de servidor clasifica la menor cantidad de servidores obligatorios para cumplir con la carga actual del cliente. Los servidores excesivos se pueden rechazar o eliminar por el momento.
Esta técnica funciona mediante el seguimiento de las variaciones en la latencia de respuesta cuando la carga varía según la capacidad del servidor.
Mínimo conexiones
Este algoritmo de equilibrio de carga en Kubernetes enruta las solicitudes del cliente al servidor de aplicaciones con la menor cantidad de conexiones activas en el momento de la solicitud. Este método utiliza la carga de conexión activa a la cuenta ya que un servidor de aplicaciones puede sobrecargar debido a conexiones de mayor vida si los servidores de aplicaciones tienen requisitos iguales.
Conclusión
Este artículo tuvo como objetivo brindar a los lectores una comprensión integral del equilibrio de carga de Kubernetes, cubriendo su arquitectura y numerosos métodos de aprovisionamiento para un clúster de Kubernetes. El equilibrio de carga es una parte importante de ejecutar un clúster de Kubernetes efectivo y es uno de los principales trabajos de un administrador de Kubernetes. Las tareas pueden estar programadas de manera eficiente en las vainas y nodos de clúster utilizando un equilibrador de carga suministrado de manera óptima, lo que permite una alta disponibilidad, recuperación rápida y baja latencia para aplicaciones contenedores que operan en Kubernetes.