What is Kubernetes? The Complete Plain-English Guide for Self-Hosters
If you hang around homelab communities or IT discussions long enough, you will inevitably run into Kubernetes (often abbreviated as K8s—the "8" stands for the eight letters between the "K" and the "s").
While Docker revolutionized how we package and run self-hosted applications, Kubernetes takes things a step further. It is the gold standard for container orchestration—a platform designed to manage, scale, and repair automated container fleets across single servers or multi-node clusters.
Whether you're deciding if K8s belongs in your home lab or trying to understand how modern IT production environments work, this guide covers what Kubernetes actually is, how it functions under the hood, and whether you should run it yourself.
The Evolution: Bare-Metal to Containers to Orchestration
To understand why Kubernetes exists, it helps to see how server administration evolved over the last two decades:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Physical App │ │ Virtual Machine │ │ Docker Container│ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │ OS Kernel │ │ Guest OS │ │ App Binaries │ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │ Bare-Metal Host │ │ Hypervisor │ │ Container Engine│ └─────────────────┘ └─────────────────┘ └─────────────────┘ Bare-Metal Era Virtualization Era Container Era
- The Bare-Metal Era: You installed an operating system directly on physical hardware and ran your services on top. If an app crashed or corrupted system libraries, it took down other services on the host. Resource usage was inefficient, and hardware was underutilized.
- The Virtualization Era: Hypervisors (like Proxmox or ESXi) let us run multiple Virtual Machines (VMs) on a single physical server. While this solved isolation, every VM required its own fully inflated operating system, eating up storage, CPU, and RAM.
- The Container Era (Docker): Containers isolate applications at the process level while sharing the host operating system kernel. They are lightweight, start instantly, and use minimal resources.
- The Orchestration Era (Kubernetes): What happens when you move from running 10 Docker containers on one mini-PC to running 100 containers across four separate servers?
- How do containers talk to each other across physical hardware?
- What happens if a physical host machine fails unexpectedly?
- How do you update an app with zero downtime?
That is where Kubernetes comes in. It sits on top of your machines and manages container health, networking, storage, and scaling automatically.
Core Kubernetes Architecture
Kubernetes turns a pool of physical or virtual machines into a single, cohesive computing unit. A Kubernetes cluster consists of two primary layers:
┌────────────────────────────────────────┐
│ CONTROL PLANE (Brain) │
│ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ │ kube-api │ │ etcd │ │ sched │ │
│ └──────────┘ └──────────┘ └────────┘ │
└───────────────────┬────────────────────┘
│
┌───────────────────────┴───────────────────────┐
│ │
▼ ▼
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
│ WORKER NODE 1 │ │ WORKER NODE 2 │
│ ┌─────────┐ ┌──────────────┐ │ │ ┌─────────┐ ┌──────────────┐ │
│ │ kubelet │ │ Containerd │ │ │ │ kubelet │ │ Containerd │ │
│ └─────────┘ └──────────────┘ │ │ └─────────┘ └──────────────┘ │
│ ┌───────────────────────────┐ │ │ ┌───────────────────────────┐ │
│ │ Pod (Your App / Nginx) │ │ │ │ Pod (Your App / Postgres)│ │
│ └───────────────────────────┘ │ │ └───────────────────────────┘ │
└─────────────────────────────────┘ └─────────────────────────────────┘
1. The Control Plane (The Brain)
The Control Plane makes global decisions about the cluster, detects node failures, and schedules workloads:
kube-apiserver: The front door of Kubernetes. Everything (including your command-line interface,kubectl) communicates through this API.etcd: A lightweight, high-availability key-value database that stores the state and configuration of the entire cluster.kube-scheduler: Looks for newly created containers and assigns them to an appropriate worker node based on available CPU and RAM.kube-controller-manager: Monitors the cluster state to ensure reality matches your desired setup (e.g., if a container dies, it tells the system to start a new one).
2. Worker Nodes (The Muscle)
Worker nodes are the physical machines or VMs that run your actual applications:
- Container Runtime: The underlying engine (usually
containerdorCRI-O) that pulls images and runs container processes. kubelet: An agent that runs on every node, ensuring containers are running and healthy as instructed by the Control Plane.kube-proxy: Handles network routing between pods on different nodes and manages external network traffic ingress.
Key Kubernetes Terminology Decoded
If you are coming from standard Docker, the terminology changes slightly:
- Pod: The smallest deployable unit in Kubernetes. A Pod usually wraps a single container (like a web server), though it can hold tightly coupled sidecar containers sharing the same IP and storage volumes.
- Deployment: A blueprint specifying how many replicas of a Pod should run, along with rules for rolling updates and rollbacks.
- Service: An abstraction that defines a stable IP address or DNS name for a set of Pods. Since Pods are ephemeral and change IPs when recreated, Services ensure other apps can always reach them.
- Ingress / Gateway API: The traffic controller (like Nginx Proxy Manager or Traefik) that routes incoming external internet traffic to internal Services based on domain names.
- PersistentVolumeClaim (PVC): A request for persistent storage that attaches to a Pod so your data survives if a container restarts or moves to a different physical machine.
What Makes Kubernetes So Powerful?
Declarative Infrastructure ("Desired State")
In standard script-based administration, you issue step-by-step imperatives: "Download this file, restart that process, attach this drive."
Kubernetes uses Declarative Configuration (typically written in YAML files). You define your Desired State:
"I want 3 instances of Nextcloud running, connected to this persistent storage, auto-restarting if they crash."
Kubernetes continually runs a reconciliation loop. If a physical node dies and takes down one of your Nextcloud instances, Kubernetes notices that current state (2) does not match desired state (3), and automatically spins up a replacement instance on a surviving node within seconds.
Zero-Downtime Rolling Updates
When updating an application, Kubernetes spins up the new version alongside the old version, runs health checks, gracefully shifts web traffic over, and terminates the old version—eliminating deployment downtime.
Docker Compose vs. Kubernetes: Which Do You Need?
| Feature | Docker Compose | Kubernetes (K8s) |
|---|---|---|
| Primary Scope | Single host machine | Multi-node cluster |
| Learning Curve | Gentle (Minutes/Hours) | Steep (Days/Weeks) |
| Node Failover | None (If host dies, apps go down) | Automatic self-healing and rescheduling |
| Auto-Scaling | Manual | Automatic (HPA based on CPU/RAM) |
| Best For | Homelabs, single mini-PCs, hobby projects | High availability, enterprise production, multi-server fleets |
Modern Lightweight Kubernetes for Homelabs
If you decide to experiment with Kubernetes in your home lab, you don't need a massive cluster of servers. Lightweight, resource-efficient distributions run on small mini-PCs, single-board computers, or VMs:
- K3s: Created by Rancher, K3s is a stripped-down, fully compliant Kubernetes distribution packaged as a single binary. It uses minimal RAM (~500MB) and is the most popular choice for home labs.
- MicroK8s: Canonical's zero-ops Kubernetes distribution, installed via a single Snap command on Ubuntu.
- Talos Linux: A minimal, immutable, security-focused Linux distribution built solely to run Kubernetes without extra OS overhead.
- Kind / Minikube: Tools designed to run a multi-node Kubernetes cluster entirely inside Docker containers on your local laptop for testing.
Summary
Kubernetes is the backbone of modern cloud computing. While it introduces significant complexity that a simple home lab may not always require, understanding its core mechanics gives you a massive advantage in modern system administration, DevOps, and self-hosted infrastructure design.