Installation·Certified Kubernetes Administrator
Single-Node kubeadm Cluster Setup
Take one Ubuntu 26.04 machine from nothing to a working Kubernetes cluster with kubeadm: containerd on the systemd cgroup driver, the kernel settings kubelet needs, Calico for pod networking, the control-plane taint removed, and a workload proving DNS and Service routing both work.
Installation and Cluster Builds Guide 7 of 103 Beginner
- OSUbuntu 26.04 LTS
- Kernel7.0.0-29-generic
- Kubernetes1.36.4
- containerd2.2.6
- Calicov3.32.1
- TimeAbout 40 min
- Reviewed21 August 2026
Written against the versions above. Download sizes, image digests, timings and pod name suffixes differ on every run. Patch versions move weekly, so treat these as what was on the machine rather than as requirements.
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| CKA4001 | 192.168.0.191 | Ubuntu 26.04 LTS | Control Plane Node | 2 Core | 4 GB | 50 GB |
Before you start
- An Ubuntu 26.04 machine with at least 2 CPUs and 2 GB of RAM.
kubeadmrefuses to start below that, and on one machine the control plane and your workloads share whatever you give it. - A user with
sudorights, and a hostname unique on the network:kubeadmuses the hostname as the node name. - A fixed address, from a static config or a DHCP reservation. The API server certificate is issued for the address you advertise, so a control plane that moves needs its certificates regenerating.
- Outbound HTTPS to
pkgs.k8s.io,registry.k8s.io,quay.ioandraw.githubusercontent.com. - Know your LAN range before you start. It decides the pod CIDR, and picking one that overlaps is the most common way to end up with a cluster that looks healthy and cannot route.
-
Check the machine meets kubeadm's floor
-
Turn swap off, and keep it off
-
Load the kernel modules and set the sysctls
-
Point containerd at the systemd cgroup driver
-
Add the Kubernetes apt repository
-
Install kubelet, kubeadm and kubectl, then hold them
-
Initialise the control plane
-
Get a kubeconfig, and see the cluster refuse to be Ready
-
Install Calico, and wait for its CRDs before configuring it
-
Remove the control-plane taint
-
Prove it works: DNS and Service routing
-
Clean up the smoke test