This is the mainstream way to run Kubernetes "with Docker" on Ubuntu in 2026: containerd as the runtime (the same engine Docker uses under the hood), your Docker-built images running unchanged. Here's a clean kubeadm node bring-up on Ubuntu 24.04 (Noble) with the sharp edges called out.

Run everything below as root or with sudo. This sets up a single control-plane node; join workers with the kubeadm join command printed at the end.

1. Kernel prerequisites

Kubernetes needs bridged traffic to hit iptables and IP forwarding on:

cat <<'EOF' | sudo tee /etc/modules-load.d/k8s.conf