Desplegar Ollama Kubernetes: Guía IA Self-Hosted
Tabla de contenidos
Parte 1 de 4. Parte 1 | Parte 2 | Parte 3 | Parte 4
He dejado de contar cuántas veces he escuchado a un CTO preguntar: ¿realmente tenemos que enviar estos datos a OpenAI? Cuando despliegas Ollama en Kubernetes, la respuesta es no. Tienes un stack de IA self-hosted completo que mantiene tus datos on-premise, reduce costos de inferencia y se integra con tus herramientas de plataforma existentes.
Ollama es una herramienta de código abierto que simplifica ejecutar large language models (LLMs) localmente al agrupar gestión de modelos, servicio de inferencia y una API REST en un solo binario. Kubernetes es la plataforma estándar de orquestación de contenedores para automatizar el despliegue, escalado y gestión de aplicaciones containerizadas. La IA self-hosted significa ejecutar inferencia en hardware que controlas (on-premise, nube privada o nodos GPU dedicados), sin depender de APIs de terceros como OpenAI o Anthropic. La inferencia con GPU usa unidades de procesamiento gráfico NVIDIA para acelerar cargas de trabajo de LLMs, ofreciendo respuestas 10-50x más rápidas que solo con CPU.
Soy Administrador Certificado de Kubernetes con experiencia ejecutando este mismo setup de Ollama K8s en clusters que van desde homelab con RTX hasta pools multi-nodo de A100. Al final, tendrás una instancia de Ollama aislada por namespace con programación GPU, almacenamiento persistente y exposición por ingress.
Nota de versión: Estas instrucciones aplican a Ollama 0.5.x y Kubernetes 1.28+. Los manifiestos YAML usan versiones de API estables.
Referencia Rápida
| Comando / Valor | Qué Hace |
|---|---|
helm install gpu-operator nvidia/gpu-operator --namespace gpu-operator --create-namespace | Instala NVIDIA GPU Operator para programación de nodos GPU |
kubectl label nodes <node> gpu-type=nvidia accelerator=nvidia-gpu | Etiqueta nodos GPU para afinidad de pods de Ollama |
ollama/ollama:0.5.7 | Tag de imagen de Ollama recomendado |
100Gi PVC en StorageClass fast-ssd | Almacenamiento persistente mínimo para modelos |
nvidia.com/gpu: "1" | Solicitud de recurso GPU para el contenedor Ollama |
OLLAMA_KEEP_ALIVE: "30m" | Mantiene modelos cargados en VRAM por 30 minutos |
strategy: Recreate | Estrategia de Deployment requerida para PVCs ReadWriteOnce |
Puerto 11434 | Endpoint HTTP API por defecto de Ollama |
¿Qué es Ollama y Por Qué Desplegarlo en Kubernetes?
Ollama es una herramienta open-source para ejecutar modelos de lenguaje grandes localmente. Agrupa gestión de modelos, servicio de inferencia y una API REST en un solo binario, como Docker para LLMs. Ejecutas ollama pull llama3.2 y segundos después consultas un endpoint local compatible con OpenAI.
Ejecutar Ollama en una sola VM funciona para desarrollo. En producción necesitas programación, aislamiento de recursos y failover. Cuando despliegas Ollama en Kubernetes, obtienes programación de cargas GPU, resource quotas que evitan que descargas de modelos consuman todo el cluster, e ingress sin load balancers adicionales. El resultado es una plataforma de IA self-hosted que se comporta como cualquier otro microservicio.
Para equipos ya en Kubernetes, un despliegue Ollama K8s elimina la necesidad de VMs separadas para inferencia de IA. Reutilizas monitoreo, logging y seguridad existentes mientras mantienes datos sensibles dentro de tu red.
Prerrequisitos y Requisitos del Cluster
Antes de desplegar Ollama en Kubernetes, verifica tu ambiente:
| Requisito | Mínimo | Recomendado | Comando de Verificación |
|---|---|---|---|
| Kubernetes | v1.28 | v1.30+ | kubectl version --short |
| kubectl | v1.28 | v1.30+ | kubectl version --client |
| GPU NVIDIA | 1x RTX 3090 (24 GB) | 1x A100 (40/80 GB) | nvidia-smi en el nodo |
| SO del Nodo | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | lsb_release -a |
| Helm | v3.12+ | v3.14+ | helm version |
| Runtime de contenedores | containerd 1.7+ | containerd 1.7+ | kubectl get nodes -o wide |
Crítico: NVIDIA Device Plugin
Ollama requiere GPUs NVIDIA para rendimiento aceptable. Los nodos deben tener:
- Drivers NVIDIA instalados en el host
- NVIDIA Device Plugin for Kubernetes como DaemonSet
nvidia-container-toolkitconfigurado para tu runtime
La ruta más fácil es el NVIDIA GPU Operator, que automatiza los tres:
helm install gpu-operator nvidia/gpu-operator \ --namespace gpu-operator \ --create-namespace \ --waitVerifica que los nodos GPU sean programables:
kubectl get nodes -o json | jq '.items[].status.capacity | select(."nvidia.com/gpu")'# Salida esperada: nvidia.com/gpu: "1" (o más)Advertencia: Sin el device plugin, Kubernetes programa tu pod en un nodo GPU pero el contenedor no verá la GPU. Ollama cae a inferencia por CPU, 10-50x más lenta.
FAQ
¿Qué es Ollama en Kubernetes?
Ollama en Kubernetes es un patrón de despliegue donde el servidor de inferencia Ollama se ejecuta como workload containerizado dentro de un cluster Kubernetes. Esto proporciona programación GPU, almacenamiento persistente vía PVCs, exposición por ingress e integración con monitoreo y seguridad existentes.
¿Necesito una GPU para ejecutar Ollama en Kubernetes?
Técnicamente no, pero prácticamente sí para cualquier carga real. Un modelo de 7B parámetros corre 10-20x más lento en CPU. Sin GPU, los tiempos de inferencia pasan de milisegundos a segundos por token. Para desarrollo con modelos 1-3B, solo CPU funciona. Pero no esperes tiempos de respuesta de producción.
¿Cuál es la diferencia entre ejecutar Ollama en una VM versus Kubernetes?
Una VM es más simple al inicio pero más difícil de operar a escala. Kubernetes te da programación GPU automatizada, resource quotas, health checks con liveness y readiness probes, e integración directa con ingress. La desventaja es la complejidad operacional. Kubernetes requiere habilidades de ingeniería de plataforma para depurar problemas de programación GPU o PVC. Cubro esto en la Parte 4.
¿Qué versión del NVIDIA GPU Operator necesito?
Usa la última estable del repositorio Helm de NVIDIA. A marzo 2026, la versión 24.9+ funciona con Kubernetes 1.28+. El operator despliega automáticamente el device plugin, container toolkit y driver installer como DaemonSet.
¿Cuánto almacenamiento necesito para modelos de Ollama?
Empieza con 100 GB en StorageClass respaldado por SSD. Un modelo Llama 3.1 70B cuantizado ocupa ~39 GB. Cargar modelos desde disco magnético es extremadamente lento. Usa siempre SSD o NVMe para PVCs de Ollama. La Parte 4 tiene tablas detalladas de tamaños.
Siguientes Pasos
Tu cluster tiene el GPU Operator instalado y nodos etiquetados para GPUs. En la Parte 2 cubro el diseño completo de arquitectura: aislamiento de namespace, resource quotas y configuración de afinidad GPU.
Partes de esta serie: Parte 2 →