Series1 partВиталий Лещенко

Kubernetes for beginners

A series for those who already know Linux and networking and want to understand how Kubernetes works: what happens between kubectl apply and a running container, who decides which node it runs on and how, where a pod gets its address and how a packet reaches it from outside, where the data lives and what happens when a node disappears.

The series has three principles.

First: for every component, not only why it is needed but how it works. Which objects appear in the API, which controller reacts to them, which rules appear on the node, what lies in etcd. That is why almost every part has kubectl, crictl and nft output and a walk-through of what it says.

Second: your own cluster, not a cloud one. The lab cluster is installed with kubeadm on three Ubuntu Server virtual machines: this way you can see the control plane, the certificates and etcd that the cloud hides. Every object is described by a YAML manifest and applied with kubectl; Kustomize and Helm come only once the manifests are clear.

Third: best practices, not "it works anyway". Where a default setting or a popular recipe from the internet is better not repeated, there is an explanation of why, and how to do it right.

The order: first the foundation (architecture, the API, installing the cluster, images), then workloads, configuration and scheduling, networking bottom-up — from a pod's address to Ingress and certificates, storage with separate parts on NFS and SMB, packaging, security, observability, cluster maintenance, a hybrid cluster with Windows workers and finally GitOps. Protocols covered in the Networking for beginners series are not explained again: where they come up, there is a link and the gist in two sentences. A highly available control plane and publishing services over BGP are in the Highly available Kubernetes on BGP series.

  1. Part 1

    Why Kubernetes

    Why you need an orchestrator: desired state and the reconciliation loop, declarative vs imperative management, and what Kubernetes does not do.

The series is not finished: the next parts are on their way.