, , ,

Containers and Kubernetes Explained Simply (Cloud for Beginners, Part 11)

A plain-English guide to containers and Kubernetes for freshers: what a container really is, why Kubernetes exists, and what managed clusters cost on AWS, Azure and Google Cloud.

Cloud for Beginners · Part 11 of 18
TL;DR. A container packages your app with everything it needs so it runs the same on any machine. Kubernetes is the manager that runs many containers across many servers, restarts the ones that crash, and scales them up and down. Running Kubernetes yourself is hard, so most teams rent a managed cluster. On a managed service the cluster brain costs roughly 73 US dollars a month per cluster on AWS and Google Cloud, and is free on the basic Azure tier. The servers underneath cost extra.
Who this is for. Freshers and brand-new IT staff who keep hearing the words container, Docker and Kubernetes in standups and want a clear mental model before touching a real cluster. No prior DevOps background needed.

It works on my machine. Every team has heard a developer say it. The code runs fine on a laptop, then breaks the moment it lands on a test server because that server has a different Python version, a missing library, or a setting nobody wrote down. Containers exist to kill that sentence. And once you have hundreds of containers to run, Kubernetes exists to keep them alive without a human watching all night. Those two ideas are the whole story, and this post unpacks them in plain language.

A container is a lunchbox, not a kitchen

Picture taking lunch to work. You could carry a full kitchen with you so you can cook anywhere. That is heavy and slow. Or you could pack a lunchbox: the meal plus the fork and napkin, ready to eat anywhere, no kitchen required. A container is the lunchbox. It bundles your application together with the exact libraries, runtime and config it needs, so it behaves the same on your laptop, on a test server, and in production. Nothing on the host machine has to match.

Docker is the tool most people first use to build and run these lunchboxes. You write a short recipe file, build an image from it, and that image runs as a container anywhere a container runtime exists. The image is the saved recipe; the container is a running copy of it.

Container versus virtual machine

In Part 5 you met virtual machines. A VM carries a whole guest operating system, like packing the entire kitchen. A container shares the host operating system kernel and only packs the app and its dependencies, so it starts in seconds and uses far less memory. That is the single most useful distinction to hold in your head.

Virtual machinesContainersApp A + App B (each its own OS)Guest OSGuest OSHypervisorHost OS + hardwareApp AApp BContainer runtimeShared host OSHardwareHeavier, boots in minutesLighter, starts in seconds
A VM ships a full guest OS per app. Containers share the host OS, so they are smaller and faster to start.
QuestionVirtual machineContainer
What it packsWhole guest OS plus appApp plus its libraries only
Typical sizeGigabytesTens to hundreds of megabytes
Start timeTens of seconds to minutesUsually under a few seconds
IsolationStrong, full OS boundaryProcess level, shares the kernel

Why one container is easy and a thousand are hard

Running one container on your laptop takes a single command. Real systems do not run one container. A small product might run forty: a few copies of the web app for traffic, a payments service, a search service, a couple of background workers, and so on. Now the hard questions start. Which server does each container run on? If a server dies at 3am, who moves its containers somewhere else? If traffic doubles on Monday morning, who starts more copies and then shuts them down at night to save money? If a new version is bad, who rolls it back?

Doing all of that by hand does not scale past a few servers. Kubernetes is the system that does it for you. You tell it the desired state, for example run five copies of this app, and it works continuously to make reality match that wish.

Why this matters in your first job. You almost certainly will not set up a cluster in week one. You will read from one. Knowing that a Deployment means desired copies, that a Pod is one running unit, and that a crashing Pod restarts on its own will let you follow a production incident on day one instead of nodding along blankly. That alone makes you useful faster than most new hires.
Control planedecides where pods run, watches healthWorker node 1PodPodPodWorker node 2PodPod
The control plane is the brain. Worker nodes are the servers that actually run your pods.

What Kubernetes actually does for you

You will meet a few words constantly. Here they are in one breath each. A Pod is the smallest unit Kubernetes runs, usually one container, sometimes a couple that belong together. A Deployment says how many identical Pods you want and keeps that number true. A Service gives those Pods one stable address so other apps can reach them even as individual Pods come and go. A Node is a worker server. The control plane is the brain that places Pods on Nodes and watches everything.

Self-healing and scaling, the part people actually love

Say you ask for five copies of your web app. If one Pod crashes, Kubernetes notices the count dropped to four and starts a fresh one. If a whole Node dies, the Pods it was running are recreated on healthy Nodes. You set the wish once; the system defends it. Scaling works the same way. Tell it to add Pods when processor use crosses a threshold and it will add them during a rush and remove them when things calm down. This is the reconciliation loop, and it is the single idea that makes Kubernetes worth the trouble.

Desired: 5 podswhat you asked forActual: 4 podsone just crashedActionstart 1 new podthen check again, forever
The reconciliation loop: compare what you want to what exists, fix the gap, repeat.

You probably should not run your own Kubernetes

Here is where I disagree with a lot of beginner advice. Tutorials love to show you how to build a cluster from scratch on bare servers because it teaches the internals. As a learning exercise, fine. As a plan for a real team, usually a mistake. The control plane needs patching, securing, backing up and upgrading, and getting any of that wrong takes down everything at once. Most teams should rent a managed cluster and let the provider babysit the brain.

The three big managed services are Amazon EKS, Azure AKS and Google GKE. They run the control plane for you. You bring the worker servers, your containers, and your wishes. The pricing splits cleanly into two parts: a flat fee for the managed control plane, and the normal cost of the worker servers and storage underneath.

Managed serviceControl plane feeFree option for learning
Amazon EKSAbout 0.10 US dollars per hour, near 73 a month per clusterNo free control plane; you pay from cluster one
Azure AKSFree tier has no control plane charge (no uptime guarantee)Free tier suits dev and test clusters
Google GKEAbout 0.10 US dollars per hour per clusterAbout 74.40 a month credit per account covers one small cluster

Provider prices change. Confirm current figures on each provider pricing page before you quote them to anyone. Figures here are accurate as of mid 2026.

Worked example: a tiny real bill. Say you run one small cluster on AWS EKS with two small worker servers for a side project. The control plane is roughly 73 a month. Two small on-demand worker instances might add, very roughly, 30 to 60 a month depending on size, plus a few dollars for storage and data transfer. So a bare-bones single cluster lands near 110 to 140 a month, and most of that is the fixed control plane plus the servers, not Kubernetes magic. The lesson freshers miss: the control plane fee is charged whether the cluster does anything or not. An idle forgotten cluster still bills you about 73 a month. Delete clusters you are done with.

One more money note that applies everywhere. For workloads that can survive being interrupted, like batch jobs or stateless web copies, spot or preemptible servers cut the worker bill by roughly 70 to 90 percent. That is the biggest single lever a beginner can pull, and it costs nothing to learn.

The two errors you will actually see first

When you list Pods with kubectl get pods, healthy ones say Running. The two failure words almost every beginner meets early are CrashLoopBackOff and ImagePullBackOff. Learn these two and you will look far less lost than your peers.

CrashLoopBackOff means the container starts, crashes, and Kubernetes keeps restarting it with a growing wait between tries (10 seconds, then 20, then 40, capped near five minutes). It is not the disease, it is the symptom. The cause is usually inside your app: a missing environment variable, a config file that is not there, a dependency it cannot reach, or an unhandled crash on startup. ImagePullBackOff is different and simpler: Kubernetes cannot download the container image at all. Almost always a typo in the image name or tag, or missing credentials for a private registry.

Gotcha. Beginners stare at the status word and panic. The status is never the answer. Two commands give you the real cause every time: kubectl describe pod NAME shows the Events at the bottom (this is where ImagePullBackOff spells out repository not found or no pull access), and kubectl logs NAME shows what the app printed before it died (this is where CrashLoopBackOff reveals the real exception). Read events for pull problems, read logs for crash problems.
Real interview question. What is the difference between a container and a virtual machine, and why would you choose one? A good answer in one breath: a VM virtualises hardware and runs a full guest OS per app, so it is heavier and slower to start but gives strong isolation. A container shares the host OS kernel and packages only the app and its dependencies, so it starts in seconds and packs more density on the same hardware. You pick containers for fast-moving, scalable services, and VMs when you need stronger isolation or must run a different operating system. Mentioning startup time and the shared kernel is what makes the answer sound experienced rather than memorised.
Try it yourself (free, about 20 minutes).
You do not need a cloud account or a credit card. Install a tiny local cluster with one of the free tools made for this: kind or minikube on your own laptop. Then run these in order:
1. kubectl create deployment hello –image=nginx
2. kubectl get pods (wait until it says Running)
3. kubectl scale deployment hello –replicas=3
4. kubectl get pods again, and watch three copies appear
5. kubectl delete pod with one of the pod names, then kubectl get pods once more.
How to check it worked: after you delete a pod, the count climbs back to three on its own within seconds. You just watched the reconciliation loop heal your app. That single observation teaches more than an hour of reading.
In practice. Plenty of small teams do not need full Kubernetes at all. If you run a handful of containers, simpler services like a container app platform or a basic container runner can be cheaper and far less to learn. Reach for Kubernetes when you genuinely have many services that need scaling, self-healing and rolling updates, not because it is on every job description.

FAQ

Is Docker the same as Kubernetes?
No. Docker builds and runs individual containers. Kubernetes orchestrates many containers across many servers. They solve different problems and are often used together: build with Docker, run at scale with Kubernetes.

Do I need to learn Kubernetes to get a cloud job?
It helps a lot, but as a fresher you are expected to understand the concepts and run basic commands, not architect a cluster. Knowing pods, deployments and how to read logs and events covers most entry-level expectations.

Is Kubernetes free?
The Kubernetes software is open source and free. What costs money is the servers it runs on and, on managed services, the control plane fee. A local cluster on your laptop with kind or minikube is genuinely free.

What does kubectl mean?
It is the command line tool you use to talk to a cluster. People pronounce it many ways (cube control, cube cuttle, cube C T L) and nobody will judge you for any of them. It is how you create, inspect and delete things in Kubernetes.

Should I start with managed Kubernetes or a local one?
Start local with minikube or kind. It is free, fast to reset, and lets you break things safely. Move to a managed cluster once you understand pods, deployments and services.

Where this leaves you

Containers make your app run the same everywhere. Kubernetes keeps a fleet of those containers alive, scaled and healthy without a human watching. You do not need to memorise the whole system. Hold the lunchbox idea, the desired-state idea, and the two error words, and you can follow almost any cloud conversation about containers. Then go run the local cluster above. Twenty minutes of watching a pod heal itself will teach you more than this entire post.

Your move: install minikube or kind today and run the five commands in the Try it yourself box. If the pod count heals back to three, you understand Kubernetes better than most people who only read about it.
Cloud for Beginners · Part 11 of 18
« Previous: Part 10  |  Complete Guide  |  Next: Part 12 »

References

About The Author


Discover more from Journal of Intelligent Infrastructure – By Dr Pranay Jha

Subscribe to get the latest posts sent to your email.

Leave a Reply

Your email address will not be published. Required fields are marked *

Architect’s Toolkit

About the Author

Dr. Pranay Jha is a Cloud and AI Consultant with 18+ years of experience in hybrid cloud, virtualization, and enterprise infrastructure transformation. He specializes in VMware technologies, multi-cloud strategy, and Generative AI solutions. He holds a PhD in Computer Applications with research focused on Cloud and AI, has published multiple research papers, and has been a VMware vExpert since 2016 and a VMUG Community Leader.

Discover more from Journal of Intelligent Infrastructure - By Dr Pranay Jha

Subscribe now to keep reading and get access to the full archive.

Continue reading