Kubernetes
Notes from Kubernetes the Hard Way
Building a cluster manually — without kubeadm — forces you to understand what each control-plane component actually does: the API server as the single entry point, etcd as the source of truth, the scheduler and controller-manager reconciling desired state.
The exercise is most useful for debugging real clusters later: knowing what a healthy kubelet/API-server handshake looks like makes production incidents much less mysterious.