Choose Your Local Cluster: kind vs Kubeadm (Docker Desktop)

2 min

Project projet10-kubernetes-deploiements · When Docker Desktop displays “Create Kubernetes Cluster”, it offers two cluster types: kind or Kubeadm. This document explains the difference and which one to choose for this course.

In one sentence

  • Kubeadm = a 1-node cluster, simple, that shares the Docker engine → your locally built images are immediately usable. ⭐ Recommended for this project.
  • kind (Kubernetes IN Docker) = each node is a container with its own image storage (containerd) → you must load your local images before deploying, but you can simulate several nodes.

Comparison table

CriterionKubeadmkind
MeaningOfficial tool to bootstrap a clusterKubernetes in Docker
Number of nodes1 only (single-node)1 to 10 (multi-node possible)
Where the nodes runDirectly in the Docker Desktop VMEach node = a Docker container
Image storageShared with the Docker engineIsolated (containerd specific to kind)
Local image (docker build)Visible immediately (imagePullPolicy: IfNotPresent)Not visiblekind load docker-image <img> required
Simulate a node failureNo (a single node)Yes (you can stop a node-container)
Speed / lightnessVery fast to startFast, but one extra image-loading step
Ideal forLearning Pods / Deployments / Services without frictionTesting multi-node, scheduling, affinity
ResetCluster resetChanging the number of nodes resets everything

Concrete impact on THIS project

Our project builds an image locally:

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

and deployment.yaml uses:

yaml
image: demo-k8s:1.0
imagePullPolicy: IfNotPresent   # does NOT try to download from a registry

With Kubeadm — nothing more to do

The cluster shares the Docker engine: the image demo-k8s:1.0 is already there.

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

With kind — one extra step (load the image)

Otherwise the Pods stay in ErrImagePull / ImagePullBackOff (the cluster cannot find the image).

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

To redo on EVERY image rebuild with kind. This is the #1 omission that blocks beginners.


Recommendation for the course

Your goalChoose
Discover Pods, Deployments, Services, ConfigMap, scaling, rolling updateKubeadm
Show a multi-node cluster and the distribution of Pods across nodeskind (2 nodes or more)

For this project, check Kubeadm then Create.

Settings of the “Create Kubernetes Cluster” window

  • Cluster Type: Kubeadm.
  • Version: the one proposed (e.g. v1.34.1) is fine.
  • Advanced Settings → Show system containers: leave unchecked (otherwise Kubernetes internal containers will appear in docker ps, which clutters the view).

Check that the cluster is ready

powershell
kubectl config use-context docker-desktop
kubectl get nodes            # must display a Ready node

If you have trouble accessing images or Pods, see the troubleshooting appendix of 02-COMMANDES.md.


Course created by Dr. Haythem REHOUMA — Development and Deployment of Data Solutions