Part 0: Before You Begin – What You Need to Build a Kubernetes Cluster with kubeadm

Why this guide exists
There are plenty of Kubernetes tutorials online, but most of them fall into one of two categories:
they either skip important details, or they assume a lot of prior knowledge.
This series is different.
The goal of this guide is to walk through everything required to build a working, stable Kubernetes cluster using kubeadm, starting from Linux machines and ending with a usable platform. The focus is on clarity, correctness, and avoiding common pitfalls.
If you follow this guide step by step, you should be able to build a Kubernetes cluster without unpleasant surprises.
Who this guide is for
This guide is for:
Readers who want to understand and build Kubernetes properly
Beginners who are comfortable with Linux and want to learn Kubernetes from the ground up
Experienced engineers who want a clear, opinionated reference
This guide is not:
A cloud-managed Kubernetes tutorial
A comparison of different Kubernetes installers
A theoretical deep dive into Kubernetes internals
What this guide will build
By the end of this series, you will have:
A Kubernetes cluster bootstrapped using kubeadm
containerdas the container runtimeCalico for cluster networking
Persistent storage using Longhorn
Object storage using MinIO
Identity management using Keycloak
Kafka running on Kubernetes using Strimzi
Each component will be added gradually, with validation steps along the way.
Knowledge prerequisites
You do not need prior Kubernetes experience, but you should be comfortable with:
Using the Linux command line
Editing configuration files
Basic networking concepts (IP addresses, DNS, ports)
Running commands as root or with sudo
Infrastructure prerequisites
Before starting, make sure you have:
Nodes
Linux machines (RHEL / Rocky / Alma / CentOS Stream–like)
amd64 architecture
At least:
2 CPU cores per node
4–8 GB RAM per node
Static IP addresses
Unique and resolvable hostnames
Cluster topology
At least:
1 control-plane node
1 worker node
All nodes on the same network
No NAT between nodes
Storage prerequisites (Optional if you understand your machines)
LVMs configured on all nodes
A volume group with sufficient free space
XFS filesystem support
The guide will use separate storage for:
Container runtime data
Persistent application workloads
Network assumptions
This guide assumes:
Node-to-node network connectivity
Working DNS resolution between nodes
A trusted internal network
For simplicity and clarity, firewalls are disabled during the setup. Hardening and security considerations are outside the scope of the initial setup and can be addressed later.
Internet access and environment
The main flow of this guide assumes:
- Internet access for downloading binaries and manifests
Private registries, air-gapped environments, and self-signed certificates will be covered separately as optional topics.
How to use this guide
Follow the articles in order
Do not skip verification steps
Each part builds on the previous one
If something does not work, go back and verify the earlier steps before proceeding.
What’s next
In Part 1, we will prepare the Linux nodes for Kubernetes by setting up storage, disabling swap, configuring time synchronization, and making the necessary system-level changes.






