What is Kubernetes? In short: an open-source platform that automatically runs, scales and keeps your containers alive across multiple servers. It's often written as K8s, because there are 8 letters between the K and the s. In this post we try to explain what Kubernetes does, its core concepts and whether you actually need it, without drowning you in jargon.
What Is Kubernetes Used For?
Say you've packaged your app as a container with Docker. Running one or two containers on a single server is easy. But as things grow, the questions start: Who restarts a container when it crashes? Who adds more copies when traffic spikes? How do you ship a new version without downtime? What happens to the containers on a server that dies?
That's exactly the work Kubernetes takes over. You tell it "always keep 3 copies of this app running", and it constantly works to make that true. If a copy crashes it starts a new one; if a server goes down it moves the containers to other servers. Everything is managed automatically based on the "desired state" you describe.
A bit of history: Kubernetes was built on Google's experience with Borg, the system it used internally for years. It was open-sourced in 2014 and is now developed under the Cloud Native Computing Foundation (CNCF). The name means "helmsman" in Greek, which is why its logo is a ship's wheel.
Core Kubernetes Concepts
Kubernetes comes with alot of new words at first. Here are the ones you'll run into most:
| Concept | What it means |
|---|---|
| Cluster | All the servers Kubernetes manages, together. |
| Node | A single server in the cluster (physical or virtual). |
| Control Plane | The brain of the cluster; decides what runs where and tracks state. |
| Pod | The smallest unit in Kubernetes; runs one or more containers together. |
| Deployment | Defines how many copies of an app run and how it gets updated. |
| Service | Gives pods a stable address and spreads traffic between them. |
| Ingress | Routes incoming HTTP/HTTPS traffic to the right service by domain. |
| Namespace | Splits a cluster into logical sections (e.g. test and prod). |
| ConfigMap / Secret | Keeps settings and sensitive data like passwords separate from the app. |
| PersistentVolume | Persistent disk space that survives pod deletion (for databases). |
How Does Kubernetes Work?
Kubernetes is built around "desired state". You write down what you want in YAML files, for example a deployment like this:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:1.27
ports:
- containerPort: 80
When you hand this file to the cluster with kubectl apply -f web.yaml, the Control Plane gets to work: it picks suitable nodes, starts 3 pods and then keeps checking. If the actual state drifts from the desired state (a pod crashed, a node went offline), it closes the gap on its own. You don't have to babysit anything.
The Difference Between Docker and Kubernetes
This is one of the most common mix-ups. The two aren't really competitors; they work together:
| Docker | Kubernetes | |
|---|---|---|
| What it does | Builds and runs containers | Manages many containers across multiple servers |
| Scale | Usually a single server | Multiple servers (a cluster) |
| Crashed container | Limited to restart policies | Restarts automatically, moves to another node if needed |
| Scaling | Manual | Automatic (load-based with HPA) |
| Updates | Manual | Zero-downtime rolling updates and rollbacks |
| Learning curve | Easy | Steeper |
So you build your container images with Docker, and run those images in production with Kubernetes.
Kubernetes vs Docker Compose vs Docker Swarm
| Docker Compose | Docker Swarm | Kubernetes | |
|---|---|---|---|
| Use case | Single server, development and small projects | Small to mid-size clusters | Any scale, small to very large |
| Setup difficulty | Very easy | Easy | Medium to hard (easy with a ready-made setup) |
| Autoscaling | No | Limited | Yes |
| Self-healing | Limited | Yes | Yes, advanced |
| Ecosystem | Small | Small, stagnant | Huge (Helm, ArgoCD, Prometheus...) |
| Good for | Developers, single-server apps | Simple distributed setups | Microservices, growing teams, production |
Pros and Cons of Kubernetes
Pros
- Self-healing: Crashed pods are restarted automatically.
- Autoscaling: Copies go up when load rises and down when it drops.
- Zero-downtime updates: New versions roll out gradually and can be rolled back with one command.
- Portability: The same YAML files run on your own servers or with another provider.
- Huge ecosystem: With tools like Helm, ArgoCD, Prometheus and cert-manager there's a ready solution for almost everything.
Cons
- Learning curve: There are many concepts, and the first weeks can be tiring.
- Setup and maintenance: Building a cluster from scratch and handling certificates and upgrades takes effort.
- Overkill for small projects: Running Kubernetes for a single website can be like using a sledgehammer to crack a nut.
When Should You Move to Kubernetes?
Kubernetes is probably for you if:
- Your app is made up of multiple services (microservices),
- Your traffic fluctuates and you need autoscaling,
- You release often and want zero-downtime deployments,
- You want to automate your workflow with CI/CD and GitOps.
For a single WordPress site or a small API, a Docker-ready virtual server running Docker Compose is usually more than enough.
Where Can You Run Kubernetes?
| Self-managed | Managed Kubernetes at large clouds | Single node Kubernetes server | |
|---|---|---|---|
| Setup | On you (kubeadm, k3s, RKE2...) | On the provider | Delivered ready |
| Cost | Server cost + effort | Control plane + workers + traffic fees | Fixed monthly price |
| High availability | Depends on design | Yes | No (single server) |
| Good for | Experienced teams | Large, critical workloads | Learning, testing, staging, small–mid prod |
If you want to learn Kubernetes or set up a test/staging environment, the fastest way is to start with a ready-made cluster. VECDC Kubernetes Server packages come with Kubernetes pre-installed, start at $6/month, and thanks to automated setup you have your kubeconfig in about 5 minutes. If you need a multi-node, production-ready cluster, our Kubernetes consulting team can design it with you.
First Steps: A Few Basic kubectl Commands
Once you're connected to a cluster, these are the commands you'll use most:
kubectl get nodes # list the nodes in the cluster
kubectl get pods -A # pods in all namespaces
kubectl apply -f web.yaml # create/update resources from a YAML file
kubectl logs deploy/web # show the app's logs
kubectl scale deploy/web --replicas=5 # scale to 5 copies
kubectl rollout undo deploy/web # roll back the last update
Frequently Asked Questions
Is Kubernetes free?
Yes, Kubernetes is open source and free. What you pay for is the servers you run it on and any managed service fees.
Do I need to know Docker to learn Kubernetes?
It isn't required, but it helps a lot. Understanding containers and how to write a Dockerfile makes Kubernetes concepts click much faster.
Can Kubernetes run on a single server?
Yes. In a single node setup the control plane and worker run on the same server. It's a cost-effective option for learning, testing, staging and small-to-mid workloads, but since it's one server it doesn't provide hardware-level high availability.
What does K8s mean?
K8s is short for Kubernetes: the 8 letters between the K and the s are replaced by the number 8.
In Short
Kubernetes is a platform that automatically runs, scales and keeps your containers alive across multiple servers. It takes a while to learn, but on growing projects it seriously cuts down operational work. The nice part is you don't need big infrastructure to start; you can begin learning on a single server. If anything is unclear, drop us a message, were happy to help.