kubeadm (with Docker) Playground
A single-machine playground to experiment with kubeadm, using Docker as the container runtime.

- eth0
- /
- oci://ghcr.io/sagikazarmark/iximiuz-labs/playgrounds/kubeadm-docker/dev-machine:live@sha256:361aa783599893229cc9e5e43e537dc6bfb24f1709a56fd9a0fb7eacee89dfa1
- eth0
- /
- oci://ghcr.io/sagikazarmark/iximiuz-labs/playgrounds/kubeadm-docker:live@sha256:84fd333c3218c445aa1a8b56f6edebeec43ccc7bfbd906ce804d039d3ab85c07
๐ง System Components
kubelet: The primary node agent that runs on each node- Container Runtime: Docker (with cri-dockerd)
- Networking:
- CNI plugins: Container Network Interface plugins
- Flannel: Network overlay for pod-to-pod communication
- Canal: Calico for network policy and Flannel
๐ ๏ธ Tools
kubeadm: Cluster lifecycle management and bootstrappingkubectl(alias:k): Kubernetes cluster management and debuggingkrew:kubectlplugin manager for extending functionality
๐ฏ Getting Started
Quick Setup
If you want to quickly set up a working cluster, use the automated script:
/opt/lab/init.sh --remove-taint
Available options
| Option | Default | Description |
|---|---|---|
--remove-taint | false | Remove the NoSchedule taint that may prevent pods from being scheduled to this node. |
--cni | flannel | Network add-on to install. Valid values: none, flannel, canal |
--no-load-images | false | Do not load the images from local cache. |
โ ๏ธ When none is selected as the network addon, the initialization script will skip installing any CNI plugin.
On the dev-machine, run the following command to configure kubectl:
/opt/lab/configure.sh
๐ Learn More
๐ก For more information, check out the kubeadm playground.
- CRI-Dockerd: Kubernetes reunited with an old friend (Docker) (Blog post by James Spurin)
- cri-dockerd
๐งฉ Related Content
๐ Tutorials
๐งช Playgrounds
- Kubernetes Playgrounds (official)
- kubeadm
Happy learning! ๐
A real VM, not a container
Get root on a VM with its own kernel, so Docker, Kubernetes, and systemd just work.
Read the docs โ
SSH from browser or CLI
Use the built-in web terminal, or connect with labctl ssh, plain ssh, scp, or rsync.
Read the docs โ
Drive it with AI
Let Claude, Codex, or any MCP client start this playground and run commands in it.
Read the docs โ
Expose HTTP(S) ports
Give any web app running inside the VM a public URL - for yourself or to share with others.
Read the docs โ
Share terminals
Invite others into your terminal session, or open it yourself from another device.
Read the docs โ
Customize with init scripts
Add shell scripts that run at boot to install packages, clone repos, or seed test data.
Read the docs โ
Private networking
VMs reach the internet via NAT with no public IP; several VMs share bridge networks.
Read the docs โ
Ephemeral or persistent
By default, VMs are destroyed when the session ends; enable persistence to keep the disks for next time.
Read the docs โ
Built-in container registry
A private registry.iximiuz.com for every playground to share images across services and VMs.
Read the docs โ