A reliable kubeadm deployment starts with consistent operating-system settings, a supported container runtime, working name resolution, and a deliberate network plan. The steps below use Ubuntu, containerd, and a standard Container Network Interface (CNI) plugin.
Plan the cluster before installation
- Assign stable hostnames and addresses to every node.
- Confirm that required ports are permitted between control-plane and worker nodes.
- Choose a pod CIDR that does not overlap node, VPN, or datacenter networks.
- Use synchronized time and working DNS on every host.
- Keep the Kubernetes minor version aligned across kubeadm, kubelet, and kubectl.
Prepare every Ubuntu node
Update the operating system, disable swap unless your Kubernetes design explicitly supports it, load the overlay and br_netfilter kernel modules, and enable IPv4 forwarding. Reboot if a kernel update requires it, then verify that each node can resolve and reach the others.
Install and configure containerd
Install containerd from a trusted repository, generate its default configuration, and set SystemdCgroup to true so the runtime and kubelet use the same cgroup driver. Restart and enable the service, then confirm it is active before installing Kubernetes packages.
Install kubeadm, kubelet, and kubectl
Use the current Kubernetes package repository for the minor release you intend to operate. Install kubelet, kubeadm, and kubectl, then hold the packages so routine system upgrades do not create an unsupported version skew. Plan cluster upgrades as controlled maintenance.
Initialize the control plane
Run kubeadm init on the first control-plane node with the selected pod network CIDR and, for highly available designs, a stable control-plane endpoint. When initialization completes, copy the generated admin kubeconfig to the administrator account and save the worker join command securely.
Install pod networking and join workers
Apply one CNI implementation whose configuration matches the chosen pod CIDR. Wait for the networking pods to become ready, then run the kubeadm join command on each worker. Generate a fresh token with kubeadm token create --print-join-command if the original token expires.
Validate the cluster
- Check node readiness and confirm every expected node is present.
- Inspect pods in all namespaces; core DNS and network components should be healthy.
- Create a small deployment and expose it inside the cluster.
- Scale the deployment and verify that pods are scheduled across workers.
- Test DNS resolution and pod-to-pod connectivity before adding production workloads.
Common failure patterns
| Symptom | Likely cause | First check |
|---|---|---|
| Node remains NotReady | CNI missing or unhealthy | Inspect networking pods and kubelet events |
| kubeadm preflight failure | Swap, ports, or stale state | Read the exact preflight result before resetting |
| Pods cannot resolve names | CoreDNS or CNI problem | Check CoreDNS logs and service routing |
| Worker cannot join | Token, discovery hash, firewall, or time skew | Regenerate the join command and test API reachability |
Production readiness
For production, use multiple control-plane nodes, protect etcd backups, define upgrade and certificate-renewal procedures, enforce network policies, restrict administrative credentials, centralize logs and metrics, and test restoration. kubeadm builds the cluster; operational resilience still depends on the surrounding design.
Join the discussion
0 CommentsAsk questions, add context, or share what worked.
More from Melochip Editorial
Learn what Playwright testing is, why modern QA teams use it, how testers can get started, and the major types...
7 min read · Sep 19, 2026
Learn how Kubernetes Deployments and ReplicaSets work with practical YAML, scaling, self-healing, rolling upda...
7 min read · Sep 17, 2026
Learn Kubernetes security best practices with RBAC, Secrets, ServiceAccounts, Pod securityContext, NetworkPoli...
6 min read · Sep 17, 2026Related articles
Troubleshoot Kubernetes issues including Pending Pods, CrashLoopBackOff, ImagePullBackOff, service routing, in...
7 min read · Sep 17, 2026
Learn how Kubernetes Deployments and ReplicaSets work with practical YAML, scaling, self-healing, rolling upda...
7 min read · Sep 17, 2026
Learn Kubernetes security best practices with RBAC, Secrets, ServiceAccounts, Pod securityContext, NetworkPoli...
6 min read · Sep 17, 2026
Learn Kubernetes monitoring and logs with kubectl logs, events, metrics-server, top commands, Prometheus, Graf...
5 min read · Sep 17, 2026Stay in the loop. Get new Melochip articles
Receive Melochip article updates when new articles are available. Explicit opt-in only.
No comments yet. Start the discussion.