Originally published on lavkesh.com

Kubernetes began as Google's internal container orchestration system called Borg. They open-sourced it in 2014, and it's now the standard for running containerized workloads at scale. If you're running Docker containers in production, you likely need Kubernetes.

Kubernetes automates deployment, scaling, and management of containerized applications. You describe the desired state, and Kubernetes makes it happen and keeps it that way. If a container crashes, Kubernetes restarts it. If traffic spikes, it spins up more replicas. This means you stop managing servers manually.

A Kubernetes cluster has two main parts: the control plane and worker nodes. The control plane is the brain. It runs the API server, scheduler, controller manager, and etcd. The API server is the entry point for all cluster operations. etcd is a distributed key-value store that holds the cluster's state. The scheduler assigns workloads to nodes. The controller manager keeps the actual state matching the desired state.

Worker nodes are where your containers actually run. Each node runs kubelet, which communicates with the control plane, kube-proxy, which handles network routing, and a container runtime like containerd.