Skip to main content

Command Palette

Search for a command to run...

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

Updated
3 min read
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

  • containerd as the container runtime

  • Calico 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.