What is Kubernetes? How it works, in plain terms
What is Kubernetes? It's free, open source software that runs and manages containerized apps across a group of machines called a cluster. You tell Kubernetes what you want running, and it starts the containers, restarts them when they fail and spreads traffic between them.

The short version
- Kubernetes is a platform for running containers in production. The project describes it as "a portable, extensible, open source platform for managing containerized workloads and services."
- A cluster has a control plane, which makes decisions, and worker nodes, which run your containers inside units called Pods.
- You describe the state you want, such as "3 copies of this app," and Kubernetes keeps working to make the cluster match it.
- Docker builds and runs containers. Kubernetes manages containers across many machines, and images built with Docker run on it.
- Amazon, Google and Microsoft all sell managed Kubernetes services: Amazon EKS, Google Kubernetes Engine and Azure Kubernetes Service.
What is Kubernetes used for?
Kubernetes exists to keep containerized apps running. A container bundles an app with everything it needs, so it runs the same way on a laptop as on a server. The Kubernetes documentation explains why that isn't enough on its own: in production, "if a container goes down, another container needs to start." Kubernetes handles that kind of work automatically. The project says it "takes care of scaling and failover for your application, provides deployment patterns, and more."
Kubernetes isn't tied to one cloud. The documentation says containers are portable across clouds and run on-premises as well as on major public clouds. If you're new to the cloud side, start with our guide to what cloud computing is.
What does Kubernetes do?
The Kubernetes overview lists the main jobs it does for you:
- Service discovery and load balancing. Kubernetes can expose a container using a DNS name or its own IP address. When traffic is high, it spreads requests across containers.
- Automated rollouts and rollbacks. You describe the desired state, and Kubernetes changes the actual state to match "at a controlled rate."
- Automatic bin packing. You tell it how much CPU and memory each container needs, and it fits containers onto your nodes to make the best use of them.
- Self-healing. It restarts containers that fail, replaces containers and kills containers that don't respond to your health check. It doesn't send traffic to containers until they're ready.
- Secrets and configuration. It stores sensitive information such as passwords, OAuth tokens and SSH keys, and lets you update them without rebuilding container images.
- Batch jobs and scaling. It can run batch and CI workloads, and scale an app up or down with a command, a UI or automatically based on CPU usage.
The project is also clear about what Kubernetes isn't. It "is not a traditional, all-inclusive PaaS." It doesn't build your app or deploy source code. It also doesn't include databases or message buses as built-in services. Those can run on Kubernetes, but you choose and add them.
How does Kubernetes work?
Kubernetes works on a desired-state model. Instead of running a script of steps, you describe the result you want and send it to the cluster. The documentation says Kubernetes is made up of "independent, composable control processes that continuously drive the current state towards the provided desired state."
Say you ask for 3 copies of a web app. If one crashes, the cluster now has 2 running copies and wants 3, so Kubernetes starts another.
The project calls kubectl "the primary CLI for Kubernetes." You can use it to deploy applications, inspect and manage cluster resources and view logs.
Kubernetes architecture: clusters, nodes and Pods
Cluster
A Kubernetes cluster "consists of a control plane plus a set of worker machines, called nodes, that run containerized applications." Every cluster needs at least 1 worker node to run Pods. In production, the control plane usually runs across multiple computers and a cluster usually has multiple nodes, which the documentation says provides fault tolerance and high availability.
Control plane
The control plane manages the overall state of the cluster. Its main components are:
- kube-apiserver, which exposes the Kubernetes API.
- etcd, a key-value store that holds all of the API server's data.
- kube-scheduler, which finds Pods that haven't been placed yet and assigns each one to a suitable node.
- kube-controller-manager, which runs the controllers that do the work of matching the desired state.
- cloud-controller-manager, an optional piece that connects the cluster to a cloud provider.
Nodes
A node "may be a virtual or physical machine, depending on the cluster." Each one runs the kubelet, which makes sure Pods and their containers are running; a container runtime, which actually runs the containers; and usually kube-proxy, which maintains network rules for Services.
Pods
The documentation says Pods "are the smallest deployable units of computing that you can create and manage in Kubernetes." Each Pod holds 1 or more containers that share storage and network resources. The documentation says 1 container per Pod is the most common setup, and in that case "you can think of a Pod as a wrapper around a single container."
Deployments and Services
You rarely create Pods one at a time. A Deployment "manages a set of Pods to run an application workload" and handles updates for them. A Service exposes an app running in 1 or more Pods behind a single endpoint, so other apps can reach it even as individual Pods come and go.
Kubernetes vs Docker
They do different jobs. Docker's documentation calls Docker "an open platform for developing, shipping, and running applications." You use it to build container images and run containers. Kubernetes runs and manages containers across a whole cluster of machines.
| Docker | Kubernetes | |
|---|---|---|
| Main job | Build images and run containers | Run and manage containers across a cluster |
| Unit it works with | Container and image | Pod, which wraps 1 or more containers |
The Kubernetes project says early versions "only worked with a specific container runtime: Docker Engine." Kubernetes later added support for other runtimes through a standard called the Container Runtime Interface (CRI), and Kubernetes 1.24 removed dockershim, the built-in code that connected it to Docker Engine.
That change didn't make Docker useless for Kubernetes. The project says images built with docker build work with all CRI runtimes, and that if you use Docker on your own PC to develop or test containers, "nothing changes." For clusters that still need Docker Engine, Mirantis and Docker committed to maintaining an adapter called cri-dockerd.
Where Kubernetes came from
Kubernetes started at Google, and the name comes from Greek for helmsman or pilot. The project says Kubernetes combines over 15 years of Google's experience running production workloads at scale with ideas from the community. Google says Kubernetes draws on years of running production workloads on Borg, its in-house cluster management system.
According to the Kubernetes project, the first commit was pushed to GitHub on June 6, 2014, and version 1.0 followed on July 21, 2015. Alongside 1.0, Google announced it would donate Kubernetes to the newly formed Cloud Native Computing Foundation (CNCF), part of the Linux Foundation.
Managed Kubernetes: EKS, GKE and AKS
Instead of running the control plane yourself, you can have a cloud provider run it. Amazon, Google and Microsoft each offer a managed service, and each has a mode that also manages the worker nodes:
- Amazon EKS. AWS says it manages the Kubernetes control plane when you create an EKS cluster. EKS Auto Mode extends that to the nodes, including provisioning, scaling and operating system patching. AWS says EKS is certified Kubernetes-conformant.
- Google Kubernetes Engine (GKE). Google calls GKE "a managed implementation of the Kubernetes open source container orchestration platform." In Autopilot mode, Google manages the nodes and you pay only for the compute resources your running Pods request. In Standard mode, you pay for all resources on your nodes.
- Azure Kubernetes Service (AKS). Microsoft says Azure creates and configures the control plane "at no cost" and you pay for the nodes that run your apps. AKS Automatic handles node management, scaling, security, monitoring and upgrades, while AKS Standard gives you full control over configuration and node pools.
Kubernetes isn't the only way to run apps in the cloud. If you'd rather not manage clusters at all, our guide to serverless computing covers another option.
How to try Kubernetes
You don't need a cloud account to learn Kubernetes. The project points to 2 tools that run a cluster on your own computer:
- kind runs Kubernetes locally and needs Docker or Podman installed.
- minikube runs a local cluster on Windows, macOS and Linux PCs.
Install kubectl alongside either one to send commands to the cluster.
Frequently asked questions
Is Kubernetes free?
Yes. Kubernetes is open source and released under the Apache License 2.0, so you can download and run it without paying for the software. You still pay for the machines it runs on, and managed services such as EKS, GKE and AKS charge for compute and, depending on the service and tier, for cluster management.
Can Kubernetes run without Docker?
Yes. Kubernetes runs containers through any runtime that supports the Container Runtime Interface, and since version 1.24 it no longer includes the dockershim code for Docker Engine. Images built with Docker still run on those other runtimes.
Can Kubernetes run on Windows?
Partly. The control plane runs only on Linux, but worker nodes can run Windows or Linux. The Kubernetes documentation says Windows nodes are supported on Windows Server 2022 or Windows Server 2025. For learning on a Windows PC, minikube runs a local cluster.
What is a Kubernetes cluster?
It's the full set of machines Kubernetes manages. The control plane makes decisions and manages the cluster, and the worker nodes run your containers in Pods. Every cluster needs at least 1 worker node.
Why is Kubernetes called K8s?
K8s is an abbreviation of Kubernetes. The 8 stands for the 8 letters between the "K" and the "s."
More in Cloud
- IaaS vs PaaS vs SaaS: what's the difference?
- What is a virtual machine? VMs explained simply
- What is cloud computing? A plain explanation
- What is serverless? Serverless computing in plain terms