Kubernetes (often abbreviated K8s) is an open-source container orchestration platform. It automates deploying, scaling, networking, and healing containerized applications across a cluster of machines, so you describe the desired state and Kubernetes continuously works to make reality match it.
The problem: running containers at scale is hard
You have containers (from Docker), but in production you must also answer:
→ On WHICH machine does each container run? (scheduling)
→ What if a container crashes? (self-healing / restarts)
→ What if a whole node dies? (reschedule elsewhere)
→ How do 50 replicas find and talk to each other? (service discovery)
→ How do I roll out a new version with zero downtime? (rolling updates)
→ How do I scale from 3 to 30 replicas on a traffic spike? (autoscaling)
Doing all this by hand across many servers does not scale.
