Elegir su cluster local: kind vs Kubeadm (Docker Desktop)

3 min

Proyecto projet10-kubernetes-deploiements · Cuando Docker Desktop muestra « Create Kubernetes Cluster », propone dos tipos de clúster: kind o Kubeadm. Este documento explica la diferencia y cuál elegir para este curso.

En una frase

  • Kubeadm = un clúster de 1 nodo, simple, que comparte el motor Docker → tus imágenes construidas en local son utilizables de inmediato. ⭐ Recomendado para este proyecto.
  • kind (Kubernetes IN Docker) = cada nodo es un contenedor con su propio almacén de imágenes (containerd) → hay que cargar las imágenes locales antes de desplegar, pero se pueden simular varios nodos.

Tabla comparativa

CriterioKubeadmkind
SignificadoHerramienta oficial para arrancar un clústerKubernetes in Docker
Número de nodos1 solo (single-node)1 a 10 (multi-nodo posible)
Dónde corren los nodosDirectamente en la VM de Docker DesktopCada nodo = un contenedor Docker
Almacén de imágenesCompartido con el motor DockerAislado (containerd propio de kind)
Imagen local (docker build)Visible enseguida (imagePullPolicy: IfNotPresent)No visiblekind load docker-image <img> obligatorio
Simular un fallo de nodoNo (un solo nodo) (se puede parar un contenedor-nodo)
Velocidad / ligerezaArranque muy rápidoRápido, pero con un paso extra de carga de imagen
Ideal paraAprender Pods / Deployments / Services sin fricciónProbar el multi-nodo, el scheduling, la afinidad
ReinicioReset del clústerCambiar el número de nodos reinicia todo

Impacto concreto en ESTE proyecto

Nuestro proyecto construye una imagen en local:

powershell
docker build -t demo-k8s:1.0 ./app

y el deployment.yaml usa:

yaml
image: demo-k8s:1.0
imagePullPolicy: IfNotPresent   # NO intenta descargar desde un registro

Con Kubeadm — no hay nada más que hacer

El clúster comparte el motor Docker: la imagen demo-k8s:1.0 ya está ahí.

powershell
docker build -t demo-k8s:1.0 ./app
kubectl apply -f k8s/

Con kind — un paso extra (cargar la imagen)

Si no, los Pods se quedan en ErrImagePull / ImagePullBackOff (el clúster no encuentra la imagen).

powershell
docker build -t demo-k8s:1.0 ./app
kind load docker-image demo-k8s:1.0    # <-- indispensable con kind
kubectl apply -f k8s/

Hay que repetirlo en CADA reconstrucción de imagen con kind. Es el olvido n.º 1 que bloquea a los principiantes.


Recomendación para el curso

Tu objetivoElige
Descubrir Pods, Deployments, Services, ConfigMap, scaling, rolling updateKubeadm
Mostrar un clúster multi-nodo y el reparto de Pods entre nodoskind (2 nodos o más)

Para este proyecto, marca Kubeadm y luego Create.

Ajustes de la ventana « Create Kubernetes Cluster »

  • Cluster Type: Kubeadm.
  • Version: la propuesta (p. ej. v1.34.1) sirve.
  • Advanced Settings → Show system containers: déjalo desmarcado (si no, los contenedores internos de Kubernetes aparecerán en docker ps y saturan la vista).

Comprobar que el clúster está listo

powershell
kubectl config use-context docker-desktop
kubectl get nodes            # debe mostrar un nodo  Ready

Si hay un problema de acceso a las imágenes o a los Pods, ver el anexo de diagnóstico de 02-COMMANDES.md.


Curso creado por el Dr. Haythem REHOUMA — Desarrollo y despliegue de soluciones de datos