# Cómo crear y aplicar un Kubernetes load balancer

Un **Kubernetes load balancer** (balanceador de carga en Kubernetes) distribuye automáticamente el tráfico de red entre varios pods para garantizar una carga equilibrada y una alta disponibilidad. Normalmente se implementa mediante un servicio “LoadBalancer”, que redirige las solicitudes externas a los servicios internos del clúster. De este modo, las aplicaciones permanecen accesibles, estables y escalables.

## ¿Qué es un balanceador de carga en Kubernetes?

Los balanceadores de carga distribuyen la **carga de trabajo** entre distintos servidores o [máquinas virtuales](https://www.ionos.mx/digitalguide/servidores/know-how/maquina-virtual/) de la manera más eficiente posible, ayudando a mejorar el **rendimiento general** del sistema. Al colocarse delante de los servidores, el balanceador de carga evita que una máquina se sobrecargue y garantiza un uso óptimo de los recursos disponibles. Incluso si un servidor falla, el [balanceo de carga](https://www.ionos.mx/digitalguide/servidores/know-how/balanceo-de-carga-conoce-a-fondo-sus-ventajas/) mantiene el sistema en funcionamiento al redirigir de forma inteligente las solicitudes.

En Kubernetes, los balanceadores de carga funcionan de manera similar, aunque con algunas diferencias. En [Kubernetes](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-kubernetes/), es importante distinguir entre dos tipos principales de balanceadores de carga:

- Balanceadores de carga internos de Kubernetes
- Balanceadores de carga externos de Kubernetes

### Balanceadores de carga internos de Kubernetes

Los balanceadores de carga internos en Kubernetes se utilizan para distribuir el tráfico dentro de una **misma red virtual**. Esto significa que solo las aplicaciones que se ejecutan dentro de la misma red que el [clúster de Kubernetes](https://www.ionos.mx/digitalguide/servidores/know-how/cluster-kubernetes/) pueden acceder a estos servicios. No gestionan tráfico procedente del exterior.

### Balanceadores de carga externos de Kubernetes

Los balanceadores de carga externos asignan una [dirección IP](https://www.ionos.mx/digitalguide/servidores/know-how/direccion-ip/) específica o un nombre de dominio (DNS) a un nodo de servicio dentro del clúster, para que pueda recibir [solicitudes HTTP](https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/http-request/) externas. El tipo de servicio **LoadBalancer** está diseñado precisamente para redirigir el tráfico entrante hacia los [pods de Kubernetes](https://www.ionos.mx/digitalguide/servidores/configuracion/kubernetes-pod/) adecuados, garantizando así una **distribución eficiente y automática de las solicitudes**.

Nota Existen distintos **algoritmos de balanceo de carga** que puedes usar en Kubernetes. La elección dependerá de las necesidades de tu aplicación. Cada algoritmo determina cómo se procesará el tráfico entrante y qué criterios se aplicarán al asignar las solicitudes a los pods.

## ¿Cómo funciona un balanceador de carga en Kubernetes?

En Kubernetes, el balanceador de carga tiene la función de distribuir el **tráfico de red entre distintas instancias de un mismo servicio**, es decir, entre los pods. Su objetivo es mantener una utilización equilibrada de los recursos, mejorar la disponibilidad y compensar posibles fallos de componentes individuales.

Desde el punto de vista técnico, el balanceador de carga **recibe las solicitudes entrantes** y determina qué pods están disponibles y funcionando correctamente. Kubernetes realiza un seguimiento continuo de la salud de los pods, excluyendo automáticamente aquellos que estén inactivos o sobrecargados. El balanceador de carga decide dinámicamente a qué pod reenviar cada solicitud según el estado actual del clúster.

Este proceso se realiza de forma transparente para el usuario: la aplicación sigue siendo accesible y con buen rendimiento, incluso cuando algunos pods se reinician, se sustituyen o dejan de estar operativos en segundo plano.

[![Imagen: Esquema del balanceador de carga en un clúster de Kubernetes](https://www.ionos.mx/digitalguide/fileadmin/_processed_/b/5/csm_balanceador-de-carga-kubernetes_33d27d9238.webp "Esquema del balanceador de carga en un clúster de Kubernetes")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Schaubilder/balanceador-de-carga-kubernetes.jpg) El balanceador de carga distribuye el tráfico externo a los pods de un servicio en el clúster de Kubernetes, mostrados en amarillo. ## ¿Para qué sirve un balanceador de carga en Kubernetes?

Un balanceador de carga en Kubernetes **define un servicio que se ejecuta dentro del clúster** y puede accederse desde Internet. Para entenderlo, conviene recordar cómo se estructura Kubernetes: un clúster está compuesto por varios nodos, y cada nodo contiene distintos pods. A cada pod se le asigna una dirección IP interna que no es accesible desde el exterior.

### Disponibilidad de la aplicación mediante una IP fija

Para **hacer accesible una aplicación alojada en pods** a través de una [dirección IP fija](https://www.ionos.mx/digitalguide/servidores/know-how/ip-dedicada/), es necesario definir un servicio de tipo Kubernetes. Además del tipo “LoadBalancer”, existen otros tipos de servicios que se adaptan a distintos escenarios. En todos los casos, los servicios agrupan varios pods en una unidad lógica y especifican cómo se puede acceder a ellos.

### Distribución eficiente del tráfico externo

El balanceador de carga en Kubernetes garantiza una distribución eficiente del tráfico entrante hacia los pods del clúster. De este modo, **los servicios permanecen disponibles y manteniendo un alto rendimiento**. Si un pod deja de funcionar correctamente o presenta errores, el balanceador redirige automáticamente las solicitudes a los pods que siguen activos, asegurando así la **alta disponibilidad** de la aplicación.

### Optimización de la escalabilidad

El uso de un balanceador de carga también influye positivamente en la **escalabilidad**. Kubernetes puede crear o eliminar pods automáticamente según la demanda. Si el tráfico aumenta, el sistema amplía los recursos; si disminuye, los reduce. Así, el clúster se adapta de manera flexible a las necesidades en cada momento.

## Cómo crear un balanceador de carga en Kubernetes

Para crear un balanceador de carga en Kubernetes, el clúster debe ejecutarse en la **[nube](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-el-cloud/)** o en un entorno compatible con balanceadores de carga externos.

En IONOS, al crear un balanceador de carga para un clúster de Kubernetes, se asigna una dirección IP estática a uno de los nodos. Esta IP hace que el servicio sea accesible desde fuera del clúster. El componente Kube-proxy que se ejecuta en el nodo distribuye el tráfico entrante de forma inteligente entre los pods individuales.

Primero debes crear un servicio y definir su tipo como **LoadBalancer**, añadiendo la siguiente línea en el manifiesto del servicio:

```none
type: LoadBalancer
```

Por ejemplo, una configuración típica de balanceador de carga podría ser la siguiente: el servicio agrupa los pods bajo el selector `web-app`. El tráfico entrante en el puerto 8080 de la IP del balanceador se distribuye entre los pods, que ejecutan el servicio en el puerto **80**:

```yaml
apiVersion: v1
kind: Service
metadata:
    name: web-app-service
spec:
    selector:
        app: web-app
    type: LoadBalancer
    loadBalancerIP: 203.0.113.0
    ports:
        - name: http
            port: 8080
            targetPort: 80
            protocol: TCP
```

También puedes crear un balanceador de carga mediante la **línea de comandos de kubectl**. Por ejemplo, el siguiente comando crea y despliega un nuevo servicio llamado `test-service` que funciona como balanceador de carga:

```bash
kubectl expose deployment test --target-port=9376 \
    --name=test-service --type=LoadBalancer
```

Si quieres comprobar la **dirección IP** del servicio recién creado, puedes utilizar el siguiente comando:

```bash
kubectl describe services test-service
```


This is a markdown version of: [https://www.ionos.mx/digitalguide/servidores/know-how/kubernetes-load-balancer/](https://www.ionos.mx/digitalguide/servidores/know-how/kubernetes-load-balancer/) for AI/LLM consumption.