Programming Β· DevOps Β· orchestration
What is Kubernetes?
Once you package an app into a container, a new problem appears: who starts it, restarts it when it crashes, runs more copies under load, and connects them all together β across dozens of machines? That job is orchestration, and Kubernetes is the system most teams use to do it. This guide explains what Kubernetes is, the concepts that matter, how it relates to Docker, and when you actually need it.
The short definition
Kubernetes is an open-source platform for running and coordinating containers across a group of machines. You tell it the desired state β "run five copies of this app, keep them healthy, expose them on this address" β and Kubernetes works continuously to make reality match that description: placing containers on machines, restarting failed ones, scaling up and down, and routing traffic to them. It's often shortened to K8s (K, eight letters, s).
The problem it solves
Running one container by hand is easy. Running hundreds, reliably, is not. Machines fail, traffic spikes, new versions need rolling out without downtime, and containers must find and talk to each other. Doing all that manually is error-prone and doesn't sleep. Kubernetes turns it into a declarative system: you describe what you want, and the platform's control loop keeps enforcing it β replacing a crashed container or rescheduling work off a dead machine without anyone paging an engineer at 3 a.m.

The core concepts
- Cluster β the whole system: a set of machines Kubernetes manages as one. It has a control plane (the brain that makes decisions) and worker nodes (where your containers actually run).
- Node β a single machine (physical or virtual) in the cluster that runs containers.
- Pod β the smallest unit Kubernetes runs: one or more tightly-coupled containers sharing storage and a network address. You usually run many identical pods of an app.
- Deployment β a declaration of the desired state for your pods: which image, how many replicas, and how to roll out updates. Kubernetes makes the live state match it.
- Service β a stable network address and load balancer for a set of pods, so other parts of the system can reach them even as individual pods come and go.
How it works, briefly
You submit a description of what you want β usually a YAML file defining a deployment and a service. The control plane records this desired state and schedules pods onto nodes that have room. A control loop then constantly compares desired versus actual state: if a pod dies or a node fails, Kubernetes notices and recreates the missing pods elsewhere. Scaling is the same idea β change "5 replicas" to "20" and the scheduler fills the gap. This self-healing, declarative model is the heart of why Kubernetes is trusted with production systems.
Kubernetes vs Docker
They're complementary, not rivals. Docker builds and runs an individual container on one machine. Kubernetes orchestrates many containers across many machines β scheduling, scaling, healing and networking them. Docker packages and runs a container; Kubernetes manages a fleet of them. Kubernetes runs containers built to the open standards Docker popularised, so the two sit at different layers of the same stack rather than competing.
Do you actually need it?
Honestly, often not β at least not yet. Kubernetes shines when you run many services, need high availability, and have the team to operate it. For a single app or a small project, it's usually overkill: a single server, a managed container service, or a platform-as-a-service will be simpler and cheaper. The cost of Kubernetes is real complexity β networking, storage, security and upgrades all take expertise. Adopt it when the scale justifies the overhead, not because it's fashionable.
Managed vs self-hosted
You can run Kubernetes yourself, but most teams use a managed service where a cloud provider operates the control plane for you, so you only manage your workloads. That removes a large chunk of the operational burden and is the sensible default for most projects that genuinely need orchestration.
Somewhere to run your containers
Kubernetes (and Docker) need machines to run on. A VPS or cloud server gives you full control of the runtime to deploy containers, a cluster, or a single app. Infomaniak β a Swiss, privacy-respecting provider β offers VPS and cloud servers for exactly this.
See Infomaniak Cloud βAffiliate link β it supports these free guides.
Containers usually expose an API and talk to each other over protocols like gRPC or REST. Browse more clear explainers in our guides index.
Frequently asked questions
What is Kubernetes in simple terms?
Kubernetes is software that runs and manages containers across a group of machines for you. You describe the state you want β how many copies of an app to run and how to reach them β and Kubernetes keeps reality matching that, restarting failed containers, scaling them, and routing traffic automatically.
What is the difference between Docker and Kubernetes?
Docker builds and runs an individual container on one machine. Kubernetes orchestrates many containers across many machines β scheduling, scaling, restarting and networking them. Docker handles a single container; Kubernetes manages a fleet. They are complementary: Kubernetes runs containers built to the standards Docker popularised.
What is a pod in Kubernetes?
A pod is the smallest unit Kubernetes runs: one or more closely-related containers that share storage and a network address. Applications typically run as many identical pods, which Kubernetes can scale up or down and replace automatically if one fails.
Do I need Kubernetes for a small project?
Usually not. Kubernetes is built for running many services at scale with high availability, and it adds real operational complexity. For a single app or small project, a single server, a managed container service, or a platform-as-a-service is simpler and cheaper. Adopt Kubernetes when your scale justifies the overhead.