K3s Kubernetes ligero: despliegue rápido de clúster para homelab y edge
Si quieres Kubernetes sin el peso operativo de un control plane completo, K3s es una de las opciones más prácticas. Es ligero, rápido de desplegar y compatible con el ecosistema estándar de Kubernetes.
Este tutorial muestra una base funcional con un nodo servidor y workers opcionales, ideal para laboratorio doméstico, sucursales o edge computing.
Requisitos previos
- Host Linux (Ubuntu, Debian o RHEL)
- Mínimo 2 vCPU y 2–4 GB RAM por nodo
- Puertos de clúster abiertos en firewall
- Hostname estable y sincronización horaria
1) Instala el primer nodo (server)
curl -sfL https://get.k3s.io | sh -
Comprueba el estado:
sudo systemctl status k3s
sudo k3s kubectl get nodes -o wide
K3s instala acceso a kubectl a través del wrapper k3s.
2) Guarda kubeconfig para uso normal
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown "$(id -u):$(id -g)" ~/.kube/config
Si vas a administrar remotamente, reemplaza 127.0.0.1 en el kubeconfig por la IP o DNS del servidor.
3) Une un worker (opcional)
En el servidor obtén el token:
sudo cat /var/lib/rancher/k3s/server/node-token
En el nodo worker:
curl -sfL https://get.k3s.io | \
K3S_URL=https://<SERVER_IP>:6443 \
K3S_TOKEN=<NODE_TOKEN> sh -
Valida la unión:
sudo k3s kubectl get nodes
4) Despliega una carga de prueba
sudo k3s kubectl create deployment hello-nginx --image=nginx:stable
sudo k3s kubectl expose deployment hello-nginx --type=ClusterIP --port=80
sudo k3s kubectl get pods,svc -o wide
Para validación externa rápida en homelab, puedes usar NodePort o Ingress según tu diseño.
5) Base operativa recomendada
Observabilidad mínima
Como punto de partida:
- Métricas básicas de nodos y pods
- Acceso a logs de contenedores
- Alertas de disco y memoria
Plan de actualizaciones
Aunque K3s simplifica upgrades, conviene un proceso:
- Snapshot o backup
- Actualizar primero un nodo no crítico
- Validar cargas y red
- Continuar con el resto
Estrategia de backup
- Respalda
/etc/rancher/k3s/ - Guarda snapshots del datastore
- Prueba el procedimiento de restore periódicamente
Problemas frecuentes
Nodos no se unen
Verifica:
K3S_URLconhttps://- Puerto 6443 accesible
- Token correcto
- Hora sincronizada entre nodos
Pods en estado Pending
Normalmente falta de recursos o taints:
sudo k3s kubectl describe pod <pod-name>
sudo k3s kubectl describe node <node-name>
DNS interno con fallos
Comprueba CoreDNS:
sudo k3s kubectl -n kube-system get pods | grep coredns
Conclusión
K3s es ideal cuando necesitas capacidades Kubernetes con menos fricción operativa. Para homelab, entornos de pruebas y edge, ofrece una relación excelente entre rapidez de despliegue y control.
Empieza con un clúster simple y fiable, luego añade ingress, storage classes, políticas de seguridad y monitorización según crezca tu carga.