Cómo Crear tu Primer Cluster de Kubernetes: Guía Extendida para principiantes

Introducción

Si te has preguntado cómo funcionan servicios como Netflix, Spotify o tu banca online, la respuesta está en Kubernetes. Es el sistema que permite ejecutar miles de aplicaciones de forma automática, escalable y sin caídas. Lo mejor: puedes montar tu propio cluster en casa para aprender, experimentar o alojar tus servicios.

¿Qué es Kubernetes y por qué importa?

Kubernetes (K8s) es un orquestador de contenedores. Imagina un director de orquesta: tú indicas qué aplicaciones ejecutar y él decide dónde ponerlas, cómo conectarlas y qué hacer si fallan.

Ventajas clave:

  • Alta disponibilidad: Si un servidor falla, las apps migran automáticamente
  • Escalado automático: Aumenta recursos cuando hay más usuarios
  • Portabilidad: Funciona igual en tu portátil que en AWS o Google Cloud
  • DevOps: Herramienta fundamental en el sector tecnológico

Conceptos fundamentales

Arquitectura

  • Control Plane: API server, etcd (base de datos), scheduler, controller-manager
  • Worker Nodes: kubelet, kube-proxy, container runtime (containerd)

Objetos principales

  • Pod: Grupo de contenedores con almacenamiento y red compartidos
  • Deployment: Gestiona réplicas de pods, rolling updates, rollback
  • Service: Abstracción de red para acceder a pods
  • ConfigMap/Secret: Configuración y credenciales externas
  • Ingress: Enrutamiento HTTP/HTTPS con reglas de host y path

1. Minikube: Tu primera experiencia

Minikube crea un cluster Kubernetes de un nodo en tu máquina local. Es perfecto para aprender kubectl sin hardware adicional.

Requisitos

  • 2 CPUs virtuales
  • 2GB RAM libres
  • 20GB de disco
  • Docker, VirtualBox o VMware instalado

Instalación paso a paso

# Descargar Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# Instalar
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# Iniciar cluster con Docker
minikube start --driver=docker

# Verificar
kubectl get nodes

Comandos útiles

# Dashboard web
minikube dashboard

# SSH al nodo
minikube ssh

# Montar directorio local
minikube mount /home/usuario/data:/data

# Tunel para LoadBalancer
minikube tunnel

# Detener cluster
minikube stop

# Eliminar cluster
minikube delete

Addons esenciales

minikube addons enable dashboard      # UI web
minikube addons enable ingress        # Controlador Ingress
minikube addons enable metrics-server # Métricas
minikube addons enable registry       # Registro Docker local

Perfiles múltiples

# Crear perfil separado
minikube start -p cluster2

# Cambiar entre perfiles
minikube profile cluster2

Ideal para: Aprender kubectl, desarrollo local, pruebas rápidas
Limitación: Un solo nodo, no simula producción real

2. k3s: Producción real en hardware modesto

k3s es una distribución ultraligera por Rancher. Elimina componentes innecesarios y funciona desde una Raspberry Pi hasta servidores enterprise.

¿Por qué k3s?

  • Binario único de <100MB
  • Instalación en un comando
  • Funciona en ARM (Raspberry Pi) y x86
  • Incluye kubectl, containerd, flannel
  • Perfecto para homelabs y edge computing

Instalación single-node

# Instalar servidor
curl -sfL https://get.k3s.io | sh -

# Configurar kubectl
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config

# Verificar
kubectl get nodes

Cluster multi-nodo (HA)

Para alta disponibilidad necesitas 3 nodos de control plane:

NODO 1 (inicializa el cluster):

curl -sfL https://get.k3s.io | sh -s - server \
  --cluster-init \
  --tls-san 192.168.1.100

# Obtener token
sudo cat /var/lib/rancher/k3s/server/node-token

NODOS 2 y 3 (se unen al cluster):

curl -sfL https://get.k3s.io | sh -s - server \
  --server https://192.168.1.100:6443 \
  --token TOKEN_AQUI \
  --tls-san 192.168.1.100

Añadir workers

curl -sfL https://get.k3s.io | K3S_URL=https://192.168.1.100:6443 \
  K3S_TOKEN=TOKEN_AQUI sh -

Desinstalar k3s

# En servidor
/usr/local/bin/k3s-uninstall.sh

# En agente (worker)
/usr/local/bin/k3s-agent-uninstall.sh

3. k3sup: Despliegue automatizado

k3sup (pronunciado «ketchup») automatiza la instalación de k3s en cualquier servidor con SSH. Ideal para cloud, VPS o máquinas remotas.

Instalación

# Instalar k3sup
curl -sLS https://get.k3sup.dev | sh
sudo install k3sup /usr/local/bin/

# Crear cluster en servidor remoto
k3sup install --ip 203.0.113.10 --user ubuntu

# Configurar kubectl automáticamente
export KUBECONFIG=$HOME/.kube/config

Unir nodos adicionales

# Unir worker
k3sup join --ip 203.0.113.11 \
  --server-ip 203.0.113.10 \
  --user ubuntu

Ventaja: Configura kubectl automáticamente en tu máquina local

4. k3s + Proxmox: Producción profesional en casa

Para un entorno profesional en casa, virtualiza con Proxmox VE y monta un cluster k3s de alta disponibilidad.

Arquitectura recomendada

RolCantidadCPURAMDisco
Control Plane324GB50GB
Workers324GB100GB
Rancher (opcional)124GB50GB

Pasos en Proxmox

  1. Crear plantilla cloud-init: Ubuntu Server 22.04 con usuario SSH
  2. Clonar VMs: 6 clones de la plantilla (3 CP + 3 workers)
  3. Configurar red: VLAN o bridge para comunicación entre nodos
  4. Instalar k3s en modo HA: –cluster-init en el primer CP
  5. Configurar kube-vip: IP virtual flotante para alta disponibilidad

Instalar Rancher (gestión visual)

# Añadir repositorio Helm
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
helm repo update

# Instalar cert-manager (requisito)
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace

# Instalar Rancher
helm install rancher rancher-latest/rancher \
  --namespace cattle-system \
  --create-namespace \
  --set hostname=rancher.tudominio.com \
  --set bootstrapPassword=admin

Rancher proporciona interfaz web para gestionar múltiples clusters, desplegar apps desde catálogos y configurar backups.

Comparativa: ¿Qué elegir?

OpciónDificultadHardwareUso ideal
Minikube⭐ Fácil1 máquinaAprender kubectl
k3s single⭐⭐ Medio1 máquinaHomelab básico
k3s HA⭐⭐⭐ Difícil6+ máquinasProducción casa
k3sup⭐⭐ MedioCloud/VPSCluster remoto
Proxmox+Rancher⭐⭐⭐⭐ Avanzado6+ VMsInfraestructura completa

Primeros pasos tras crear el cluster

# Ver nodos del cluster
kubectl get nodes -o wide

# Ver todos los pods en ejecución
kubectl get pods --all-namespaces

# Desplegar aplicación de prueba
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=LoadBalancer

# Ver el servicio
kubectl get services

# Escalar a 3 réplicas
kubectl scale deployment nginx --replicas=3

# Ver logs de un pod
kubectl logs <nombre-pod>

# Entrar a un pod
kubectl exec -it <nombre-pod> -- /bin/bash

Errores comunes de principiantes

  • No copiar kubeconfig: Ejecuta los comandos para copiar k3s.yaml a ~/.kube/config
  • Mezclar versiones: Todos los nodos deben usar la misma versión de k3s
  • Olvidar firewall: Abre puertos 6443, 10250, 2379, 2380 entre nodos
  • Recursos insuficientes: Kubernetes necesita RAM. Mínimo 2GB por nodo
  • Sin IP estática: Los nodos deben tener IPs fijas o reservas DHCP
  • No configurar kube-vip: En HA, sin IP virtual el endpoint falla si el primer nodo cae

Conclusión

Crear tu primer cluster de Kubernetes es más accesible de lo que parece. Mi recomendación según tu situación:

  • Nunca usaste Kubernetes: Empieza con Minikube en tu portátil
  • Tienes una Raspberry Pi: Monta k3s single-node
  • Tienes un mini PC o NAS potente: Virtualiza con Proxmox y monta cluster HA
  • Quieres aprender DevOps: k3sup en VPS cloud para práctica remota

El conocimiento de Kubernetes es una de las habilidades más demandadas y mejor pagadas en tecnología. Montar tu propio cluster te da experiencia práctica que no obtienes solo con cursos teóricos.

¿Ya tienes un cluster funcionando? Cuéntanos en los comentarios qué opción elegiste y qué estás ejecutando en él.


¿Te interesa aprender más sobre homelab y Kubernetes? Explora nuestra sección de Homelab para más guías y tutoriales.

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*