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:

  1. Snapshot o backup
  2. Actualizar primero un nodo no crítico
  3. Validar cargas y red
  4. 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_URL con https://
  • 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.