Installing Kubernetes the Hard Way
Luke Hebert
- 2 minutes read - 338 wordsBuilding a Kubernetes cluster the hard way means setting up every component by hand: etcd, kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, kube-proxy, and a CNI plugin. No kubeadm, no minikube, just the raw pieces. This approach gives you a deep understanding of how Kubernetes actually works under the hood and it will better prepare you not only for the exam but day to day work with kubernetes.
What Is “The Hard Way”?
Most people install Kubernetes using tools like kubeadm, minikube, or managed services. Those tools abstract away a lot of the complexity, which is great for getting started quickly. But if you want to truly understand how Kubernetes fits together, there is no better way than to build it yourself, piece by piece.
Installing Kubernetes the hard way means manually provisioning the control plane and worker nodes, generating your own certificates, and wiring together each component by hand. It is more work, but the payoff is a much deeper understanding of the system.
Components You Will Set Up
A Kubernetes cluster involves the following core components:
- etcd - The distributed key-value store that holds all cluster state
- kube-apiserver - The front-end for the Kubernetes control plane
- kube-controller-manager - Runs the controller managers (node, job, endpoint, and more)
- kube-scheduler - Assigns pods to nodes
- kubelet - The node agent that ensures containers are running
- kube-proxy - Manages network rules for service discovery and load balancing
- CNI Plugin (e.g., Flannel or Calico) - Provides the pod networking layer
What Is Covered
The guide and video series walk you through the full process:
- Provisioning the machines (typically one control plane node and one or more worker nodes)
- Installing prerequisites (etcd, kubectl, kubelet, kube-proxy binaries)
- Generating TLS certificates with cfssl
- Bootstrapping the control plane (etcd, kube-apiserver, kube-controller-manager, kube-scheduler)
- Bootstrapping the worker nodes
- Installing a CNI plugin (Flannel)
- Verifying the cluster is healthy
- Accessing the cluster with kubectl
Resources
An optional video series on this topic is available on KodeKloud’s YouTube channel:
https://www.youtube.com/watch?v=uUupRagM7m0&list=PL2We04F3Y_41jYdadX55fdJplDvgNGENo
The Git repository for this tutorial can be found here: https://github.com/mmumshad/kubernetes-the-hard-way