
🌐 También en: English · Deutsch · Français
Si tienes un pequeño homelab con Kubernetes y quieres almacenamiento persistente con redundancia, Longhorn es una opción excelente. 🚀
Longhorn es un sistema de almacenamiento en bloque distribuido, ligero y cloud-native para Kubernetes. Te permite crear volúmenes de alta disponibilidad, replicar datos entre varios nodos y gestionar volúmenes persistentes sin depender de cabinas de almacenamiento externas. Para un homelab o un clúster edge es perfecto, porque se ejecuta íntegramente dentro de Kubernetes y se gestiona fácilmente desde una interfaz web.
Antes de empezar, creé en cada servidor Proxmox una pequeña VM adicional con 50 GB de disco dedicada a los volúmenes de Longhorn. Después ejecuté mi playbook de Ansible para configurar esas tres VM como nodos worker de Kubernetes. 💻
En mi configuración quería un almacenamiento redundante y fiable para cargas pequeñas y entornos de prueba, pero sin saturar los discos limitados de mis VM. La solución óptima sería conectar el almacenamiento de Longhorn a los workers mediante una partición adicional dedicada. Como solo ejecuto pequeñas apps de prueba como WordPress o Nextcloud y no necesito una fiabilidad de nivel de producción, decidí usar la partición raíz para Longhorn, vigilando de cerca el uso del disco en la interfaz de Longhorn para no superar el espacio disponible. 🎯
1. Instalar Helm
Si Helm aún no está instalado en tu sistema, puedes instalarlo con Bash y curl:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm version2. Añadir el repositorio Helm de Longhorn
Añade el repositorio Helm oficial de Longhorn:
helm repo add longhorn https://charts.longhorn.io
helm repo updateAsí podrás descargar e instalar los charts de Longhorn fácilmente.
3. Etiquetar los nodos worker
Antes de la instalación, etiqueta los nodos worker para que Longhorn solo se despliegue en ellos:
kubectl label node vm16 longhorn=true
kubectl label node vm26 longhorn=true
kubectl label node vm36 longhorn=true4. Preparar el chart de Helm en local
Para personalizar la instalación, descarga el chart en local:
helm fetch longhorn/longhorn --untar
cd longhornAsí puedes editar el values.yaml antes de desplegar.
5. Ajustar el values.yaml
Cambios importantes en values.yaml:
- Namespace:
longhorn-system– aísla los recursos de Longhorn. - ReplicaCount: 2 – garantiza la redundancia de los engines de Longhorn.
- Ruta de almacenamiento:
/var/lib/longhorn– para las pruebas se usa la partición raíz; en producción se recomienda un disco dedicado. - NodeSelector:
longhorn=true– garantiza que los pods solo se programen en los nodos etiquetados. - UI NodePort: se deja el valor por defecto – para acceder desde el homelab.
6. Crear el namespace
kubectl create namespace longhorn-system7. Instalar Longhorn con Helm
helm install longhorn ./longhorn --namespace longhorn-system -f values.yamlHelm desplegará Longhorn con la configuración de tu values.yaml personalizado.

8. Comprobar el NodePort de la interfaz
kubectl get svc -n longhorn-systemAccede a la interfaz desde cualquier nodo worker:
http://<worker-node-ip>:309649. Gestionar los límites de disco
Como mis VM no tienen discos adicionales, limité el almacenamiento de Longhorn a una parte del sistema de archivos raíz desde la interfaz de Longhorn. Así evito llenar el disco por accidente. En producción, usa un disco o una partición dedicados para los volúmenes de Longhorn.
10. Actualizar / cambiar valores
helm upgrade longhorn ./longhorn --namespace longhorn-system -f values.yamlAñade --install si es posible que la release aún no exista. Helm la instalará o actualizará sin riesgos.
✅ Resultado
- Longhorn se ejecuta en su propio namespace
longhorn-system - La interfaz es accesible mediante NodePort
- Se respetan la ruta de almacenamiento y los límites de disco
- Los componentes solo se ejecutan en nodos etiquetados
- Las actualizaciones y los cambios de valores funcionan sin reinstalar
Esta configuración es ideal para homelabs pequeños: ofrece volúmenes persistentes de alta disponibilidad en Kubernetes, una interfaz amigable y control total sobre el uso del almacenamiento. 🎉
Y, por último, en mi próximo artículo de WordPress instalaré una app de prueba en la que voy a aprovechar Longhorn con PersistentVolumeClaims (PVC), para demostrar cómo las aplicaciones pueden usar directamente los volúmenes gestionados por Longhorn como almacenamiento persistente. 🖖






