Saltar al contenido

Lección 7 de 20 · Lectura y práctica

Configurar un Cluster Local con Minikube o Kind

Tipo de lección: VideoConcepto claveUn cluster de Kubernetes es un conjunto de nodos (máquinas) que ejecutan aplicaciones contenerizadas. Imagina una orquesta sinfónica: cada músico es un nodo, el director es el plano de control,.

Del concepto a la práctica

Taller de esta lección

Un clúster local sirve para comprobar manifiestos y flujo de diagnóstico, pero no demuestra capacidad de producción. La primera decisión operativa es saber a qué contexto apunta kubectl; una aplicación puede parecer ausente simplemente porque se consultó otro clúster.

Ejemplo resuelto

Creas un clúster llamado ml-prueba y verificas nodos con kubectl get nodes. Después seleccionas su contexto y despliegas un Pod de prueba. Si kubectl get pods devuelve recursos de otro proyecto, el problema es el contexto, no el manifiesto.

Pruébalo

  1. Crea un clúster local con el método elegido.

  2. Lista contextos y selecciona el correspondiente.

  3. Comprueba nodos y capacidad antes de desplegar.

  4. Elimina el clúster al terminar para liberar recursos.

Error frecuente: confiar en el nombre visible de una terminal sin revisar el contexto activo. Corrección: muestra el contexto antes de cada práctica destructiva.

Comprueba tu resultado

Registra el nombre del contexto, el estado Ready del nodo y la eliminación final. Después de borrar el clúster, una consulta al contexto debe fallar o indicar que ya no está disponible.

Clúster y distribución de imagen

Minikube tiene varios drivers, incluido Docker; no siempre crea una máquina virtual propia. kind ejecuta nodos como contenedores. Elige un único laboratorio, registra el contexto activo y no elimines un clúster compartido para probar limpieza. En kind, carga una imagen propia con kind load docker-image recomendador:prueba-1 --name ml-prueba. En Minikube usa minikube image load recomendador:prueba-1 para el perfil de práctica elegido. Una imagen construida en el Docker del host no aparece automáticamente en todos los nodos.

El manifiesto debe nombrar exactamente la etiqueta cargada y una política apropiada para el laboratorio, por ejemplo IfNotPresent. Para producción distribuye una imagen inmutable por un registro autorizado y conserva su digest. Descarga instaladores adecuados al sistema y arquitectura desde la documentación oficial; no copies un binario Linux amd64 en un Mac. kind y carga en Minikube.

Secuencia de código, imagen de contenedor, pruebas, registro y despliegue de instancias idénticas.
CursaloMapa de práctica
Del código al despliegue

El código se empaqueta en una imagen y se prueba antes de publicarlo. Esa misma imagen se guarda en un registro y se usa en el despliegue. Comprobar la salud de las instancias permite detectar un fallo sin reconstruir el artefacto.

Ver la infografía en tamaño completo ↗

Tipo de lección: Video

Concepto clave

Un cluster de Kubernetes es un conjunto de nodos (máquinas) que ejecutan aplicaciones contenerizadas. Imagina una orquesta sinfónica: cada músico es un nodo, el director es el plano de control, y las partituras son los manifiestos de Kubernetes. Para practicar sin costos en la nube, usamos herramientas locales como Minikube (una VM ligera) o Kind (Kubernetes en Docker).

Minikube es ideal para principiantes porque simula un cluster completo con una sola máquina virtual. Kind, en cambio, usa contenedores Docker para crear nodos, siendo más rápido y ligero. Ambos permiten desarrollar y probar despliegues de modelos de ML antes de llevarlos a producción. Como científico de datos, dominar esto te da control total sobre tu entorno de inferencia.

Cómo funciona en la práctica

Vamos a configurar un cluster local paso a paso. Primero, instala Docker si no lo tienes (requisito para ambos). Luego, elige Minikube o Kind según tu necesidad: Minikube para un entorno más parecido a producción, Kind para rapidez en desarrollo.

Ejemplo con Minikube: 1) Descarga e instala Minikube desde su sitio oficial. 2) Inicia el cluster con minikube start. 3) Verifica con kubectl get nodes. Para Kind: 1) Instala Kind via package manager. 2) Crea un cluster con kind create cluster. 3) Usa kubectl cluster-info para confirmar. Ambos te darán un cluster listo en minutos.

Código en acción

Aquí un ejemplo real de configuración con Kind, incluyendo un archivo de configuración para personalizar el cluster:

# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

Luego, crea el cluster con este archivo:

# Crear cluster con configuración personalizada
kind create cluster --name ml-cluster --config kind-config.yaml

# Verificar nodos
kubectl get nodes

# Salida esperada:
# NAME                 STATUS   ROLES           AGE   VERSION
# ml-cluster-control-plane   Ready    control-plane   30s   v1.27.3
# ml-cluster-worker          Ready    <none>          28s   v1.27.3
# ml-cluster-worker2         Ready    <none>          28s   v1.27.3

Errores comunes

  • No tener suficiente recursos: Minikube requiere al menos 2GB de RAM. Si falla, ajusta con minikube start --memory=4096.
  • Conflicto de puertos: Kubernetes usa puertos como 6443. Si hay conflictos, cambia el puerto en Kind con configuración o usa minikube start --apiserver-port=6444.
  • Olvidar el contexto de kubectl: Al tener múltiples clusters, kubectl puede apuntar al incorrecto. Usa kubectl config use-context nombre-del-cluster para cambiar.
  • No limpiar clusters viejos: Acumular clusters consume recursos. Borra con kind delete cluster --name ml-cluster o minikube delete.

Checklist de dominio

  1. Instalar Docker y verificar con docker --version.
  2. Elegir entre Minikube o Kind basado en necesidades de proyecto.
  3. Crear un cluster local y verificar con kubectl get nodes.
  4. Configurar kubectl para usar el contexto correcto.
  5. Desplegar una aplicación de prueba (e.g., nginx) en el cluster.
  6. Acceder a logs y pods usando comandos kubectl básicos.
  7. Limpiar recursos después de pruebas con comandos de eliminación.

Desplegar un Modelo de ML Simple en tu Cluster Local

En este ejercicio, crearás un cluster local con Kind y desplegarás un modelo de ML básico usando un Deployment de Kubernetes. Sigue estos pasos:

  1. Instala Kind si no lo tienes: curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64 && chmod +x ./kind && sudo mv ./kind /usr/local/bin/ (ajusta para tu OS).
  2. Crea un cluster llamado ml-practice con un nodo worker: kind create cluster --name ml-practice --config <(echo 'kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n- role: worker').
  3. Verifica que el cluster esté listo: kubectl get nodes.
  4. Crea un archivo model-deployment.yaml con este contenido:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ml-model
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: ml-model
      template:
        metadata:
          labels:
            app: ml-model
        spec:
          containers:
          - name: model-container
            image: scikit-learn-model:latest  # Usa una imagen pre-construida o construye la tuya
            ports:
            - containerPort: 5000
  5. Aplica el deployment: kubectl apply -f model-deployment.yaml.
  6. Expón el deployment con un servicio: kubectl expose deployment ml-model --type=NodePort --port=5000.
  7. Accede al modelo: kubectl get svc ml-model para ver el puerto y prueba con curl o navegador.
  8. Limpia: kind delete cluster --name ml-practice.
Pistas
  • Si la imagen scikit-learn-model:latest no existe, construye una simple con Docker usando un Dockerfile que ejecute un servidor Flask.
  • Usa kubectl describe pod <pod-name> si los pods no se inician para ver errores.
  • Para acceder al servicio, usa minikube service ml-model si estás en Minikube, o obtén la IP con Kind.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Sigue con Containerización y Despliegue de Modelos de ML con Docker y Kubernetes

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.