Home › Guides › What Is Kubernetes
Tech Explained · 2026What Is Kubernetes? Plain-English Definition, How It Works and Where You Will Use It in 2026
Kubernetes is an open source system that runs containers across a pool of machines for you. You write down the state you want, and Kubernetes keeps reality matching that description by scheduling, restarting, replacing and scaling containers on its own. Released as v1.37 in August 2026, it now runs in production at 82% of container-using organisations.
- Kubernetes is a control loop, not a deploy tool. You record the state you want; controllers spend the rest of their lives closing the gap between that and what is running.
- Docker and Kubernetes are layers, not rivals. Docker builds and runs one container on one machine. Kubernetes runs thousands across many machines and decides which machine.
- v1.37 shipped on 26 August 2026. With a 15 week release cycle and support for only the three newest minor versions, every cluster you own needs upgrading roughly three times a year.
-
A real cluster on your laptop costs nothing. One
kind create clustercommand gives you a working API server in about a minute. - It is the wrong answer for small systems. Under roughly five services with one release a week, ECS Fargate or a plain virtual machine will serve you better and cost you fewer weekends.
- The control plane fee is the cheapest line item. Amazon EKS bills $0.10 per hour per cluster, around $73 a month. Your engineers cost more than that in a morning.
- Six objects carry your first year. Pod, Deployment, Service, Ingress, ConfigMap and Secret. You can ignore most of the API until something forces you to care.
Your deploy script works perfectly until the night it doesn't. A disk fills on the box running your payments service, the process dies at 2:40am, the restart loop in your shell script gives up after three tries, and nobody finds out until a customer calls at nine. The postmortem says add monitoring. What it should say is that a human wrote down how to start the service once, and nothing was left watching to make sure it stayed started. That gap is the exact hole Kubernetes was built to fill, and understanding it is more useful than memorising any amount of YAML.
How Kubernetes Works: The Control Loop Behind Every Deployment
You hand Kubernetes a file. The file says: run four copies of this image, give each 256Mi of memory, expose port 8080, and restart anything that dies. Kubernetes writes that into etcd, its internal database, and then never stops comparing it against what is actually running on your machines.
That comparison is the entire product. A controller reads the desired state, reads the observed state, and acts on the difference. Three replicas running when four are wanted, so create one. A node stops sending heartbeats, so declare its pods lost and place replacements elsewhere. A new image tag appears in the Deployment, so start pods with the new image and retire the old ones only once the new ones report healthy. This loop runs continuously, several times a second, for as long as the cluster exists.
The consequence is worth sitting with: kubectl apply is not a deploy command. It is an edit to a database record. The deploy happens afterwards, as a side effect, because controllers noticed the record changed. Once that clicks, half of Kubernetes stops being mysterious, because you stop asking what a command does and start asking which controller is going to react to it.
The six steps of a single deploy
- You run
kubectl apply -f app.yaml. The file travels to the API server, the only component anything is allowed to talk to. - The API server validates it and stores it in etcd. At this point your deploy is recorded but nothing is running.
- The scheduler notices pods with no node assigned and picks a node for each one based on free CPU, free memory and any rules you set.
- Controllers in the controller manager notice other gaps: too few replicas, an endpoint list that no longer matches, a node gone quiet.
- The kubelet on each chosen node pulls the image and asks the container runtime, usually containerd, to start the containers.
- The kubelet reports back what is actually running. That report becomes the observed state the loop compares against next time, and the cycle closes.
The Kubernetes control loop, one deploy end to end
Every arrow is a fact being recorded or a gap being closed. No component gives orders to another directly.
Component roles follow the Kubernetes architecture documentation, checked 12 September 2026.
Nothing in that loop is clever. The intelligence is in the refusal to be imperative. Your shell script knew how to start a service once; Kubernetes knows what started means and keeps checking.
Kubernetes vs Docker: What Each One Actually Does
This is the comparison that trips up almost everyone, partly because the two are taught in the same week and partly because people say Kubernetes replaced Docker, which is true of exactly one component and false of everything else.
Docker does two jobs: it builds images from a Dockerfile, and it runs containers on the machine in front of you. Kubernetes does neither. It never builds an image, and it does not run containers itself. It decides which machine should run which container, asks that machine's container runtime to do it, and then watches forever. The piece that did get replaced is the glue: Kubernetes removed the dockershim adapter in v1.24, so clusters now speak to containerd or CRI-O directly instead of going through the Docker daemon. Your docker build habit is untouched.
| Question | Docker | Kubernetes |
|---|---|---|
| What is it | A tool to build images and run containers | A system that schedules and supervises containers across machines |
| Unit you work with | A container | A Pod, which is one or more containers sharing a network address |
| Machines it spans | One | One to several thousand |
| Restarts a crashed process | Yes, with a restart policy you set per container | Yes, and it also replaces the whole pod if the machine dies |
| Scaling to 50 replicas | Manual, or Compose on a single host |
kubectl scale --replicas=50, spread across nodes |
| Rolling update with health gates | Not built in | Built in, using readiness probes to decide when to proceed |
| Time to get useful | An afternoon | Weeks, and months before you trust yourself in production |
| When it is the right answer | Local development, CI builds, one or two servers | Many services, many machines, frequent releases, real uptime targets |
So when is each one correct? If you run a single server, Docker Compose is not a stepping stone towards Kubernetes. It is a different and frequently better answer, and treating it as a beginner's mistake is how teams end up maintaining a cluster to run three containers. Kubernetes starts paying for itself when the number of services exceeds the number of people who understand them, or when you need a failed machine to be a non-event rather than a phone call.
Also read: Docker Tutorial for Beginners 2026: Containerise a Python API in 7 Steps, which builds the image this guide then deploys.
The Kubernetes Objects You Will Actually Touch
The API has well over fifty resource kinds. You need six. The rest arrive when a specific problem forces them on you, and chasing them early is the most common way beginners stall.
| Object | What it gives you | The one command to know |
|---|---|---|
| Pod | The smallest thing Kubernetes schedules: containers that share an IP and lifecycle | kubectl get pods -o wide |
| Deployment | N copies of a pod, plus rolling updates and rollback history | kubectl rollout undo deploy/web |
| Service | One stable name and IP in front of pods whose IPs keep changing | kubectl get endpoints web |
| Ingress | HTTP routing from outside the cluster, by hostname and path | kubectl describe ingress web |
| ConfigMap | Configuration as files or environment variables, separate from the image | kubectl create configmap app --from-env-file=.env |
| Secret | The same, for credentials, base64 encoded and access controlled by RBAC | kubectl get secret db -o jsonpath='{.data}' |
Here is the file that covers most real web services. Two objects, about thirty lines, and it is worth reading every field rather than copying it blindly.
# app.yaml
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-alpine
ports:
- containerPort: 80
resources:
requests: { cpu: 50m, memory: 64Mi }
limits: { cpu: 200m, memory: 128Mi }
readinessProbe:
httpGet: { path: /, port: 80 }
initialDelaySeconds: 2
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app: web # must match the pod labels above, or you get an empty Service
ports:
- port: 80
targetPort: 80
Two fields in there do more work than the rest combined. The requests block is what the scheduler uses to decide whether a pod fits on a node, so leaving it out means the scheduler is guessing and will happily overload a machine. The readinessProbe is what stops a rolling update from sending traffic to a container that has started but is not yet serving. Skip both and Kubernetes still works, which is exactly why so many clusters limp along with neither.
My honest advice on tooling: leave Helm alone until you are deploying the same application to two environments, and leave service meshes alone for at least your first year. Both solve real problems you do not have yet, and both will double the number of places a request can go wrong while you are still learning where the first set of places is.
Kubernetes Tutorial: Build a Cluster and Watch Self-Healing in Ten Minutes
Reading about a control loop is not the same as seeing one refuse to let you delete something. This runs entirely on your laptop, costs nothing, and needs only Docker. Use kind, currently at v0.33.0, rather than minikube: it starts faster, it is what the Kubernetes project itself tests with, and it throws away cleanly.
Step 1. Create a real cluster.
brew install kind # or: go install sigs.k8s.io/kind@v0.33.0
kind create cluster --name learn --wait 60s
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# learn-control-plane Ready control-plane 47s v1.xx.x
The VERSION column shows whichever Kubernetes version your kind release bundles. If you need a specific one, pass --image kindest/node:v1.34.0 and kind will pin it.
Step 2. Apply the file from the previous section, then look at what appeared.
kubectl apply -f app.yaml
# deployment.apps/web created
# service/web created
kubectl get deploy,pods
# NAME READY UP-TO-DATE AVAILABLE
# deployment.apps/web 3/3 3 3
#
# NAME READY STATUS RESTARTS AGE
# pod/web-7d9c5b8f4-2xk9p 1/1 Running 0 11s
# pod/web-7d9c5b8f4-h4m7q 1/1 Running 0 11s
# pod/web-7d9c5b8f4-q8vrt 1/1 Running 0 11s
You asked for three and you have three. Pod name suffixes will differ on your machine; that random string is part of how Kubernetes guarantees names never collide.
Step 3. Now try to break it. Open a second terminal and watch, then delete a pod in the first.
# terminal 2
kubectl get pods -w
# terminal 1
kubectl delete pod -l app=web --field-selector status.phase=Running --wait=false
In terminal 2 you will see each pod go Terminating and, within a second or two, brand new pods appear as Pending, then ContainerCreating, then Running. You did not ask for replacements. The Deployment controller saw three desired and fewer observed, and closed the gap before you could read the output. That single experiment is the whole of Kubernetes in one screen, and it is worth doing rather than trusting.
Step 4. Scale, then confirm the Service followed.
kubectl scale deploy/web --replicas=6
kubectl get endpoints web
# NAME ENDPOINTS AGE
# web 10.244.0.12:80,10.244.0.13:80,10.244.0.14:80 + 3... 2m
kind delete cluster --name learn # cleanup, removes everything
Notice that you never told the Service about the three new pods. It selects on the label app: web, so membership is recalculated every time a pod appears or disappears. Label selectors, not IP addresses, are how everything in Kubernetes finds everything else.
Where You Will Meet Kubernetes in Real Work
Picture the situation that sends most Indian teams down this road. A mid-size logistics company in Pune has nine services on two EC2 instances, started by systemd, deployed by a shell script that one person wrote and two people trust. Releases happen on Thursday evenings because that is when the founder is awake to watch them. Kubernetes is not what fixes that team's culture, but it is what lets two engineers stop being the restart mechanism.
Four jobs where Kubernetes is in the description
The cluster is rarely the job. It is the floor the job stands on.
Cloud and DevOps engineer
You own the cluster itself: node pools, upgrades, ingress, secrets, the CI pipeline that ships into it. This is where EKS and AKS specifics stop being trivia and start being Tuesday. 360DT's live AWS Solutions Architect and DevOps Engineer course works through exactly this ground for SAA-C03 and DOP-C02, and the Azure AZ-305 and AZ-400 track covers the AKS equivalent.
Owns the clusterData engineer
Spark jobs, Airflow workers and dbt runs increasingly execute as pods, which is why a failed batch job now means reading pod events rather than a scheduler log. Useful even on managed platforms such as Microsoft Fabric, covered in 360DT's DP-700 data engineering program, where the same container concepts sit underneath.
Runs jobs on itMLOps engineer
Model serving is the most demanding workload on a cluster: GPU scheduling, autoscaling on queue depth, canary rollouts between model versions. The CNCF survey found 66% of AI adopters using Kubernetes to scale inference, and 360DT's MLOps Engineer course built around Azure AI-300 practises those deployment patterns live.
Serves models on itBackend and AI application developer
You will not create the cluster, but you will write the Deployment for your own service, set its probes and requests, and debug why your RAG or agent service gets OOM-killed under load. Knowing how the scheduler reads your resource requests is the difference between fixing that in an hour or a week.
Ships into itRole boundaries reflect common Indian job descriptions and the CNCF Annual Cloud Native Survey published January 2026, checked 12 September 2026.
What Kubernetes Costs, and What Usually Goes Wrong
The cloud bill for a managed control plane is the easiest number to find and the least important one. Amazon EKS charges $0.10 per hour per cluster under standard support, roughly $73 a month, and that same $0.10 per hour is what Google charges for a GKE cluster in both Standard and Autopilot mode. Azure is the outlier: the AKS Free tier carries no control plane charge at all, with the Standard tier at $0.10 per hour and Premium at $0.60 per hour for extended support.
Managed Kubernetes, the numbers worth memorising
Control plane pricing barely differs between clouds. The upgrade deadline is the number that actually bites.
From AWS, Google Cloud and Microsoft Learn pricing and support documentation, checked 12 September 2026.
That last figure is the one that turns into money. Kubernetes ships on a 15 week cycle and supports only the three newest minor versions, giving each release about 14 months. Miss the window on EKS and your cluster slides into extended support at $0.60 per hour, six times the standard rate and close to $438 a month for a cluster that is doing nothing differently. Teams do not pay that because they are careless. They pay it because upgrading means testing every workload and nobody owned the calendar.
What usually goes wrong here
Your pod will sit in CrashLoopBackOff and you will read the Deployment YAML eleven times looking for the mistake. Stop doing that. The YAML is almost never where the answer is, because Kubernetes accepted it. The answer is in the pod's events and its previous container's logs, and the reason the loop looks frozen is that the kubelet backs off between restart attempts on a documented schedule of 10s, 20s, 40s, 80s, 160s and then 300s, resetting only after ten minutes of healthy running. So your fifth look at the logs genuinely shows nothing new. You are inside a five minute wait, not a broken cluster.
# the three commands that resolve most pod failures, in this order
kubectl describe pod web-7d9c5b8f4-2xk9p | tail -20 # events at the bottom
kubectl logs web-7d9c5b8f4-2xk9p --previous # the crashed container, not the new one
kubectl get events --sort-by=.lastTimestamp | tail # cluster-wide, catches node pressure
| What you see | What it almost always means | First thing to run |
|---|---|---|
ImagePullBackOff |
Wrong tag, or a private registry with no imagePullSecret | kubectl describe pod <name> | grep -A3 Events |
CrashLoopBackOff |
The app exits on startup, usually a missing env var or config file | kubectl logs <name> --previous |
Pending forever |
No node has enough unreserved CPU or memory for your requests | kubectl describe node | grep -A5 Allocated |
| Service returns nothing | The Service selector does not match the pod labels | kubectl get endpoints <name> |
| Pod killed with code 137 | OOMKilled: the container exceeded its memory limit | kubectl get pod <name> -o jsonpath='{.status.containerStatuses[0].lastState}' |
Kubernetes is expensive in the one currency you cannot buy more of. A cluster is a distributed system you now operate, with its own failure modes, its own upgrade treadmill three times a year, and an abstraction that hides the network until the night it does not. If your system is a monolith plus a database, or you release fortnightly, or you are a team of three, the technology will cost you more attention than it returns and nobody senior will blame you for choosing ECS Fargate, App Runner or a well-managed virtual machine instead. Learn Kubernetes because the job market pays for it. Deploy it because you have the problem it solves.
How to Learn Kubernetes Properly
The failure pattern in self-study is predictable: people watch fifteen hours of video, never run a cluster they broke themselves, and retain nothing. Reverse the ratio. Every week below ends in something running or something deliberately destroyed.
A realistic 12 week path from zero to employable
Roughly six to eight hours a week. Each block ends in an artefact, not a completed playlist.
Containers first, properly
Write a Dockerfile for an app you already have, get the image under 200MB, and run it with environment variables and a mounted volume. If this week is shaky, nothing after it will land.
Pods, Deployments, Services on kind
Repeat the tutorial above from memory, then deploy your own image behind a Service and reach it with port-forward. Deliverable: a cluster you can recreate from two files.
Config, secrets and probes
Move every hardcoded value into a ConfigMap, every credential into a Secret, and add readiness and liveness probes. Then break a probe on purpose and watch the rollout stall.
Storage, ingress and a real domain
Run a StatefulSet with a PersistentVolumeClaim, put an ingress controller in front of two services, and route by path. Deliverable: two apps on one hostname.
A managed cluster and a pipeline
Create one EKS or AKS cluster, deploy to it from GitHub Actions, then delete the cluster the same day so the bill stays trivial. This is the week that makes your CV credible.
Observability and failure drills
Add metrics and logs, then run three drills: kill a node, exhaust memory on a pod, push a broken image. Write down what you saw and how you diagnosed it. Interviewers ask about precisely this.
Sequencing based on current exam objectives for AWS DOP-C02 and Azure AZ-400, checked 12 September 2026.
On certification, a view you may not like: do not buy a Kubernetes-specific credential first. Cloud certifications carry more weight with Indian hiring managers because they cover the cluster plus the networking, IAM and cost decisions around it, and a cluster without those is not a production system. Take the broader cloud and DevOps route first, then add a Kubernetes-specific exam once you have operated something real. The full certifications overview lays out how the paths compare, and a free webinar is a sensible way to test whether the live format suits you before spending anything.
Also read: AZ-305 vs SAA-C03 in 2026 if you are choosing between the two cloud tracks, and DevOps Engineer Salary in India 2026 for what the skill is worth once you have it.
Run Kubernetes on AWS the way production teams actually do
A live weekend program over 12 weeks that prepares you for both AWS Solutions Architect Associate (SAA-C03) and AWS DevOps Engineer Professional (DOP-C02). Includes hands on projects, mentor support and placement guidance, with the next batch starting 27 Sept 2026.
Explore the course
If I were starting this week in your position, I would not open a cloud console. I would spend one evening on kind create cluster, deliberately delete things until the self-healing stops feeling like magic, and only then pay for a managed cluster, because the cloud bill is where people learn that they did not understand the concepts yet. The teams worth joining do not want someone who can recite what a Pod is. They want the person who, at 2:40am, types kubectl logs --previous without thinking about it. Build that reflex on a free local cluster first, then pick the cloud track you are actually going to be hired on, whether that is the AWS SAA-C03 and DOP-C02 path or its Azure counterpart, and if you want to see how a live cohort handles it before committing, sit in on a demo class first.
Related guides
- IT Support to Cloud Engineer in India 2026 the realistic timeline if Kubernetes is the skill you are switching careers on.
- DevOps Jobs in Dubai 2026 where container skills travel well outside India, and what the bands look like.
- Data Engineer Jobs in Hyderabad 2026 read this if the pods you end up running are Spark and Airflow rather than web services.
- What Is Apache Iceberg in 2026 the same declarative thinking applied to table formats instead of containers.
- MLOps Engineer Salary in India 2026 what the cluster skills are worth once you add model serving to them.
- Enterprise AI Agents in 2026 why the deployment layer, not the model, is where most AI pilots stall.
Frequently asked questions
What is Kubernetes in simple words?
Kubernetes is a system that runs your containers on a group of machines and keeps them running. You describe what you want, for example four copies of an image with a stable address in front of them, and Kubernetes schedules them onto machines, restarts anything that dies and replaces pods when a machine fails.
Is Kubernetes hard to learn for beginners?
The core idea takes an afternoon: desired state, observed state, controllers closing the gap. The difficulty is breadth rather than depth, because networking, storage, RBAC and upgrades each bring their own vocabulary. Most people get productive in six to eight weeks of consistent hands-on work and take longer to feel safe in production.
Do I need to learn Docker before Kubernetes?
Yes, and skipping it is the single most common reason people stall. If you cannot write a Dockerfile, debug a failing build and explain the difference between an image and a container, Kubernetes errors will be unreadable because most of them are container problems wearing a cluster costume.
Can I run Kubernetes on my laptop for free?
Yes. kind, currently v0.33.0, runs a genuine cluster inside Docker containers and starts in under a minute with kind create cluster. minikube and k3s are equally free alternatives. A local cluster is a real API server, so everything you learn on it transfers directly to a managed cluster.
How long does it take to learn Kubernetes well enough for a job?
Around 12 weeks at six to eight hours a week gets you to the point of deploying to a managed cluster from a CI pipeline and diagnosing common failures, which is what interviews test. The 12 week plan in this guide is built to that shape, ending in deliberate failure drills rather than a certificate.
Is Kubernetes overkill for a small application?
Usually, yes. Below roughly five services with one release a week, the operational cost outweighs the benefit and ECS Fargate, App Runner, Cloud Run or a single well-managed virtual machine will serve you better. Kubernetes earns its place when machine failure needs to be routine rather than an incident.
Does Kubernetes replace Docker?
No. Kubernetes removed the dockershim adapter in v1.24 and now talks to runtimes such as containerd directly, which is the part that was replaced. Docker still builds the images your cluster runs and is still the fastest way to run a container locally.
Which Kubernetes or cloud certification should I take in 2026?
Start with a broad cloud and DevOps credential such as SAA-C03 with DOP-C02, or AZ-305 with AZ-400, because they cover the networking, identity and cost decisions that surround a cluster. Add a Kubernetes-specific exam afterwards, once you have operated a real cluster and the syllabus reads like revision rather than new material.
About this guide. 360 Digital Transformation is an independent training provider. We are not affiliated with the certification bodies, vendors or open source projects mentioned, and our courses are exam preparation rather than official training. Tools and versions change quickly; commands and figures cited were checked on 12 September 2026.
