Contenido del curso

DeepSeek rodando en tu cluster Kubernetes

Resumen

¿Te has preguntado cómo se ejecutan modelos como ChatGPT, Claude o Groq detrás de cámaras? Muchos de estos modelos LLM pueden correr directamente en clusters de Kubernetes, y eso abre un abanico enorme de casos de uso para inteligencia artificial, edge computing e IoT. Aquí vas a ver cómo desplegar un modelo DeepSeek en tu propio cluster Minikube paso a paso.

¿Qué es la arquitectura cloud edge y por qué importa para Kubernetes?

La internet moderna funciona en capas. Tienes la capa cloud, donde viven los proveedores tradicionales como AWS, GCP o Azure, y tienes una capa intermedia llamada edge, compuesta por servidores muy cercanos al usuario final [3:30].

Esa cercanía no es un detalle menor. Reduce la latencia de cada solicitud y permite que dispositivos con requisitos críticos respondan en tiempo casi real.

¿Qué es edge computing en Kubernetes? Es la práctica de desplegar clusters o servicios de Kubernetes en servidores ubicados cerca del usuario final, en lugar de centralizarlos en la nube, para reducir la latencia y mejorar la respuesta.

¿Qué dispositivos se benefician del edge?

Los casos más conocidos viven en industrias donde cada milisegundo cuenta o donde la conexión a la nube central no siempre es viable [4:25]:

  • Vehículos autónomos que necesitan respuestas inmediatas.
  • Aplicaciones IoT en agricultura o monitoreo de agua y electricidad.
  • Retail y e-commerce con tiendas inteligentes tipo Amazon Go.
  • Dispositivos inteligentes distribuidos geográficamente.

Entre las ventajas que aporta el edge están la reducción de latencia, la portabilidad de aplicaciones y una gestión centralizada desde kubectl.

¿Qué herramientas potencian Kubernetes para IA y edge?

Existe un ecosistema específico para llevar Kubernetes a entornos ligeros y a cargas de trabajo de inteligencia artificial. Cada herramienta cumple un rol distinto.

Para edge tienes kubeedge, una versión más liviana de Kubernetes pensada para servidores periféricos, y k3s, compatible con Linux y popular incluso en placas Raspberry Pi [5:30].

Para IA y machine learning destacan tres nombres: Kubeflow, que permite armar pipelines completos de ML, el NVIDIA GPU Operator, que orquesta el uso de GPUs dentro del cluster, y Argo Workflows para flujos de entrenamiento e inferencia [6:00].

¿Por qué Kubernetes acelera el entrenamiento de modelos LLM?

Los LLMs requieren GPUs y muchísima escalabilidad. Kubernetes resuelve eso porque su plano de control orquesta los recursos de forma automática. Puedes entrenar el modelo, generar inferencia en tiempo real y desplegarlo todo dentro del mismo ecosistema.

¿Se pueden entrenar LLMs en Kubernetes? Sí. Kubernetes permite entrenar, desplegar y servir modelos LLM en el mismo cluster usando herramientas como Kubeflow para los pipelines y el NVIDIA GPU Operator para gestionar las GPUs.

¿Cómo desplegar DeepSeek en Minikube paso a paso?

En la carpeta 22 del repositorio del curso encontrarás tres recursos clave: un deployment del servidor sin optimizar, uno optimizado para GPU y un deployment de la interfaz de usuario [8:00].

El servidor sin optimizar incluye un Persistent Volume Claim de 3 GB, una imagen del contenedor Ollama en su versión más reciente, requests de 1 CPU y 2 GB de memoria, y limits de 2 CPU y 4 GB. Como argumento, arranca el servidor Ollama y hace pull del modelo DeepSeek R1 con 1.5 mil millones de parámetros.

¿Qué cambia en la versión optimizada para GPU?

La versión optimizada agrega tres piezas que solo tienen sentido cuando hay hardware especializado [9:30]:

  • Afinidades de nodo que exigen hardware tipo GPU, modelo NVIDIA A100 y un mínimo de dos GPUs.
  • Tolerancias que rechazan los pods que no requieran GPU para no desperdiciar recursos.
  • Una sección de resources específica para nvidia.com/gpu con request de 1 GPU y limit de 2 GPUs.

Esta combinación garantiza que los pods que necesitan GPU aterricen en los nodos correctos y puedan escalar entre valores mínimos y máximos con un HPA o VPA.

¿Cómo aplicar los manifiestos en Minikube?

Como Minikube local no tiene GPU, trabajas solo con el deployment sin optimizar. El flujo es directo:

  1. Crear el namespace con kubectl create namespace deepseek.
  2. Aplicar el servidor con kubectl apply -f server-deployment.yaml.
  3. Aplicar la UI con kubectl apply -f deepseek-ui-deployment.yaml.
  4. Configurar /etc/hosts apuntando a running-deepseek.local.
  5. Levantar el túnel con minikube tunnel.

La UI usa la imagen de Open WebUI de Ollama y se conecta al servidor DeepSeek mediante una variable de entorno que apunta a la API interna [13:00].

¿Cómo probar el modelo DeepSeek desplegado?

Antes de abrir la interfaz, puedes validar que la API responde con un port forward simple. Redirige el puerto 35000 al puerto 11434 del servicio deepseek-server y lanza un curl preguntando, por ejemplo, qué es una tolerancia en Kubernetes [15:00].

DeepSeek usa una cadena de pensamiento o chain of thought: muestra todo el razonamiento interno antes de entregar la respuesta final depurada. Eso explica por qué la salida del curl es tan extensa.

Luego accedes a running-deepseek.local desde el navegador, creas una cuenta de prueba, seleccionas el modelo DeepSeek-R1 1.5B de 1 GB y empiezas a hacer consultas. En paralelo puedes ver los logs del pod con kubectl logs -n deepseek para observar cómo se procesa cada solicitud en tiempo real.

Al ser un modelo pequeño corriendo en CPU local, las respuestas tardan más y son menos precisas que un modelo grande en producción. Pero el ejercicio demuestra algo poderoso: tu propio LLM viviendo en tu cluster, listo para escalar cuando muevas la carga a un cluster con GPUs reales en Azure, GCP o AWS.

¿Ya conocías esta forma de ejecutar modelos LLM en Kubernetes? Cuéntame en los comentarios qué modelo te gustaría desplegar primero.