Frequently Asked Question
What is Kubernetes and what problem does it solve?
Once your application is a few containers it is easy to run by hand; once it is fifty containers across ten machines, with rolling upgrades, health checks, autoscaling and the occasional node failure, it stops being manageable without help. Kubernetes, written at Google and donated to the Cloud Native Computing Foundation in 2015, is the system that automates that scale-out. You describe the desired state of your application in YAML, "I want three replicas of this image, listening on this port, with this much memory", and Kubernetes continuously reconciles the actual state of the cluster to match. If a node dies, the lost pods are rescheduled elsewhere. If you push a new image, Kubernetes rolls it out gradually and rolls back if health checks fail.
The terminology is dense: pods (groups of co-located containers that share a
network namespace), deployments (managed sets of identical pods), services
(stable virtual IPs for pods), ingresses (HTTP routing into the cluster),
configmaps and secrets, namespaces (administrative partitions),
statefulsets (for databases), and on. Learning all of it is a book in its own
right. For a single laptop, minikube, kind, and k3s let you run a real cluster
for practice; for production, almost every major cloud now offers a managed
Kubernetes service.