
Kubernetes shows up in a large share of DevOps and platform engineering job adverts, and it has a reputation for being hard. Much of that reputation comes from people who started with Kubernetes before they understood the problem it solves. Learn in the right order and the hard parts get much smaller.
This guide covers what Kubernetes is, the handful of ideas you need to understand, what to learn first, how to practise on a laptop without a cloud bill, a realistic eight-week plan, the mistakes beginners make most often, and how the certifications fit together.
The problem Kubernetes solves
Docker lets you package an app into a container that runs the same way everywhere. That works well for one container on one machine. Real systems run dozens or hundreds of containers across many machines, and someone has to:
- start them on machines that have enough memory and CPU,
- restart them when they crash,
- spread traffic between copies of the same app,
- roll out new versions without downtime, and roll back when a release goes wrong,
- give apps their settings and passwords without baking them into images.
You could do all of that with scripts and a lot of late nights. Kubernetes does it for you. You describe what you want ("run three copies of this app and expose it on port 80") and Kubernetes keeps working to make it true.
That last point is the most important idea in the whole subject. Kubernetes is declarative. You do not tell it "start a container now". You tell it "there should always be three of these", and a set of controllers keeps comparing what you asked for (the desired state) with what is actually running (the current state) and fixes any difference. If a machine dies and takes one copy with it, Kubernetes notices the count has dropped to two and starts another. Once that clicks, most of Kubernetes stops feeling like magic.
How a cluster is put together
A Kubernetes cluster is a group of machines, called nodes, split into two roles.
The control plane is the brain. It includes:
- kube-apiserver: the front door. Every command you run with
kubectlgoes through it. - etcd: a key-value database that stores the state of the cluster.
- kube-scheduler: decides which node a new pod should run on.
- kube-controller-manager: runs the controllers that keep desired and current state in line.
Worker nodes do the actual work. Each one runs:
- kubelet: an agent that takes instructions from the control plane and makes sure the right containers are running on that node.
- a container runtime, usually containerd, which actually runs the containers.
- kube-proxy (or a networking plugin that replaces it): handles the network rules that route traffic to pods.
On managed services such as Amazon EKS, Azure Kubernetes Service (AKS) or Google Kubernetes Engine (GKE), the cloud provider runs the control plane for you and you mostly deal with worker nodes and your own workloads. For the CKA exam, though, you need to understand all of these parts, because you may be asked to fix a broken one.
The core objects you will use every day
- Pod: the smallest unit Kubernetes runs. Usually one container, sometimes a main container plus a small helper. Pods are disposable: they get replaced, not repaired.
- Deployment: says how many copies of a pod you want and how to update them safely. Behind the scenes it manages a ReplicaSet, which keeps the count right.
- Service: a stable name and address that sends traffic to the right pods, even as individual pods come and go and their IP addresses change.
- Namespace: a way to group and separate resources, for example by team or environment (dev, staging, prod).
- ConfigMap and Secret: settings and sensitive values kept outside your container image. Note that Secrets are only base64-encoded by default, not encrypted, so they are not a security feature on their own.
- Ingress (or the newer Gateway API): rules for routing outside HTTP traffic to Services, for example sending
/apito one app and/to another. - PersistentVolume and PersistentVolumeClaim: storage that outlives a pod, for things like databases.
If you understand the first five properly, you understand most of what you will touch in a junior role. The last two come next.
Service types in one table
Service types confuse almost everyone at first. This summary helps:
| Type | Reachable from | Typical use |
|---|---|---|
| ClusterIP (default) | Inside the cluster only | One app talking to another, such as a web app calling an API |
| NodePort | A fixed port on every node's IP | Quick testing on a local cluster |
| LoadBalancer | A cloud load balancer with a public IP | Exposing an app on EKS, AKS or GKE |
| ExternalName | DNS alias to something outside | Pointing to an external database by name |
Remember that a LoadBalancer Service on a cloud provider creates a real load balancer that is billed by the hour. More on that below.
What to learn before Kubernetes
Kubernetes sits on top of other skills. Trying to skip them is the most common reason people give up. Learn these first:
- Linux and the command line. Navigating files, permissions, processes, reading logs, using
curl, editing files withvimornano. The CKA and CKAD exams are done entirely in a terminal. Our guide to Linux skills for cloud jobs covers what is worth knowing, and practise until the commands are second nature. - Networking basics. IP addresses, ports, DNS, HTTP, and how a request travels from a browser to an app. Most "my app is not reachable" problems in Kubernetes are really networking problems.
- Docker. Writing a Dockerfile, building an image, running a container, mapping ports, pushing to a registry. If you cannot comfortably containerise a small app, Kubernetes will feel like guesswork. The Docker Arena is built for exactly this stage.
- YAML. Kubernetes is configured with YAML files, and YAML is strict about indentation. Two spaces, never tabs.
A fair self-test: if you can take a small web app, write a Dockerfile for it, run it locally on port 8080 and reach it in your browser, you are ready to start Kubernetes.
Setting up a practice cluster without a cloud bill
You do not need a paid cloud cluster to learn. Run one on your own machine.
Your options compared
| Tool | How it runs | Good for | Notes |
|---|---|---|---|
| kind | Kubernetes nodes as Docker containers | Fast, disposable clusters; multi-node practice | Needs Docker; very light |
| minikube | VM or container on your machine | Beginners; has handy add-ons like ingress | Slightly heavier than kind |
| k3d / k3s | Lightweight Kubernetes distribution | Low-spec laptops | Small differences from upstream Kubernetes |
| Browser labs | Runs in the browser | No install; poor or shared laptops | Needs a stable connection while you work |
For most people, kind is the best first choice. A laptop with 8 GB of RAM is enough for a small cluster; 16 GB is more comfortable. If your laptop is older, a browser-based environment such as the Kubernetes Playground removes the setup step completely.
Installing kind and kubectl
On Linux (or WSL2 on Windows), with Docker already installed:
# Install kubectl (check kubernetes.io for the current method for your OS)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Install kind (check kind.sigs.k8s.io for the latest release)
go install sigs.k8s.io/kind@latest # or download the binary from the releases page
# Create a cluster and check it
kind create cluster --name learn
kubectl get nodesOn macOS, brew install kind kubectl does the same job. On Windows, use WSL2 with Docker Desktop and follow the Linux steps inside your Ubuntu terminal.
A practical tip for unreliable power or internet: download everything you need (Docker, kind, kubectl, and the container images you plan to use) while you have a good connection. Once the images are pulled, a kind cluster runs fully offline, and you can delete and recreate it in under a minute when your laptop restarts after an outage.
Your first deployment, step by step
Here is a worked example you should type out yourself rather than copy and paste. Typing it is how the shape of the YAML sticks.
Step 1: write a Deployment
Save this as web.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:1.27
ports:
- containerPort: 80
resources:
requests:
cpu: "100m"
memory: "64Mi"
limits:
memory: "128Mi"
readinessProbe:
httpGet:
path: /
port: 80
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app: web
ports:
- port: 80
targetPort: 80Notice how the pieces connect. The Deployment's selector matches the pod template's labels, and the Service's selector matches the same label. Labels are how Kubernetes objects find each other. A typo here is the single most common reason a Service sends traffic nowhere.
Step 2: apply it and look around
kubectl apply -f web.yaml
kubectl get deployments
kubectl get pods -o wide
kubectl get service web
kubectl describe pod <one-of-the-pod-names>Step 3: reach the app
kubectl port-forward service/web 8080:80
# In another terminal or your browser:
curl http://localhost:8080Step 4: scale, break and recover
kubectl scale deployment web --replicas=5
kubectl get pods
# Delete a pod and watch a replacement appear
kubectl delete pod <one-of-the-pod-names>
kubectl get pods -wThis is the declarative model in action. You never told Kubernetes to start a new pod; it saw four where you asked for five and fixed it.
Step 5: roll out a new version and roll back
kubectl set image deployment/web web=nginx:1.27-alpine
kubectl rollout status deployment/web
# Now deploy a broken image on purpose
kubectl set image deployment/web web=nginx:does-not-exist
kubectl get pods # look for ImagePullBackOff
kubectl rollout undo deployment/webDoing this once teaches you more about rolling updates than reading about them for an hour.
Debugging: the commands that solve most problems
When something does not work, work through this order:
kubectl get podsto see the status. Learn what the common states mean:Pending(cannot be scheduled, often not enough resources),ImagePullBackOff(wrong image name or no access to the registry),CrashLoopBackOff(the container starts and then exits), andRunningbut notReady(a failing readiness probe).kubectl describe pod <name>and read the Events section at the bottom. The answer is there more often than not.kubectl logs <name>, andkubectl logs <name> --previousfor a container that has already crashed.kubectl get endpoints <service-name>(orkubectl get endpointslices) to check whether a Service has found any pods. Empty means the labels do not match.kubectl exec -it <name> -- shto get a shell inside a container and test from there.kubectl get events --sort-by=.metadata.creationTimestampfor a cluster-wide view.
Being able to debug calmly is what interviewers are really testing when they ask Kubernetes questions.
A realistic eight-week plan
This assumes you already have Linux and Docker basics and can give about an hour on weekdays plus a longer session at the weekend. If you are starting from zero, add four to eight weeks of Linux, networking and Docker first.
Week 1: the model and the cluster. Install kind and kubectl. Learn the control plane and node components. Run pods with kubectl run, then write a Pod in YAML. Get comfortable with get, describe, logs and delete.
Week 2: Deployments and Services. Work through the five steps above until you can do them without notes. Practise each Service type. Learn labels and selectors properly.
Week 3: configuration. ConfigMaps and Secrets, mounted as files and as environment variables. Resource requests and limits. Liveness, readiness and startup probes. Namespaces.
Week 4: getting traffic in. Install an ingress controller on your local cluster and route two apps by path. Read about the Gateway API so you recognise it in job adverts and newer docs.
Week 5: storage and stateful apps. PersistentVolumes, PersistentVolumeClaims and StorageClasses. Run a small database with a StatefulSet and prove that data survives a pod restart.
Week 6: scheduling and security basics. Node selectors, taints and tolerations, affinity. ServiceAccounts and RBAC (Roles and RoleBindings). Look at NetworkPolicies and Pod Security Standards at a high level.
Week 7: packaging and automation. Helm basics: install a chart, change values, write a tiny chart for your own app. Connect a CI pipeline (GitHub Actions or GitLab CI) that builds your image and deploys it to the cluster. If you want a CI tool to focus on, our GitLab course covers pipelines in depth.
Week 8: a portfolio project. Put it all together (see below), write a clear README, and if you are aiming at a certificate, start timed practice.
Do not rush to week 8. If something in week 3 has not clicked, repeat it. Speed matters far less than really understanding it.
A portfolio project that shows real skill
Employers trust what they can see. A good beginner Kubernetes project:
- a small app with at least two parts, for example a web frontend, an API and a database,
- a Dockerfile for each part and images pushed to a registry,
- Kubernetes manifests (or a Helm chart) with Deployments, Services, an Ingress, a ConfigMap, a Secret, resource limits and probes,
- a CI pipeline that builds and deploys on every push to the main branch,
- a README with an architecture diagram, how to run it locally with kind, and a short "what I would improve" section.
Stretch goals: provision a real managed cluster with Terraform for a day, deploy, take screenshots and tear it all down. Our guide to cloud portfolio projects has more ideas and shows how to present them.
Moving to a real cloud cluster safely
At some point you will want to try EKS, AKS or GKE. That is worth doing, but cloud bills are charged in dollars and a forgotten cluster on a domiciliary or virtual card can be an unpleasant surprise when the naira moves. Some rules to keep:
- Set a budget alert before you create anything. AWS Budgets, Azure Cost Management and Google Cloud budgets can all email you at a threshold you choose.
- Check what the free tier and trial credits actually cover. Managed Kubernetes control planes, load balancers, NAT gateways and public IPs are often charged even when your app is idle. Read the current pricing page for the service you are using.
- Use the smallest node size and one or two nodes.
- Prefer `port-forward` over LoadBalancer Services while testing, so you do not create billable load balancers by accident.
- Build with Terraform so you can destroy with one command.
terraform destroyat the end of every session is a good habit. The Terraform Arena in Cloud Arcade is a good place to practise that workflow. - Delete in the right order. Delete LoadBalancer Services and persistent volumes before the cluster, or check afterwards that the load balancers and disks they created are gone too.
Treating cost as part of the job is a skill employers value. If it interests you, the FinOps Certified Practitioner course goes much deeper.
Common mistakes beginners make
- Starting with Kubernetes before Docker. If you cannot explain what an image is versus a container, go back.
- Copying YAML without reading it. Type it, then explain every line to yourself.
- Label and selector mismatches. The Service exists, the pods run, nothing connects. Check
kubectl get endpoints. - Using the `latest` tag. You lose track of which version is running and rollbacks become unreliable. Pin versions.
- No resource requests or limits. One greedy pod can starve the others on a node.
- No readiness probe. Traffic gets sent to pods that are not ready yet, and rolling updates cause errors.
- Treating Secrets as secure by default. Restrict access with RBAC and, in real clusters, use encryption at rest or an external secrets manager.
- Collecting tools instead of skills. Helm, Argo CD, service meshes and operators can wait until the fundamentals are solid.
- Only watching videos. Kubernetes is learned with your hands on a keyboard and a cluster you are not afraid to break.
Certifications: which one and when
The Cloud Native Computing Foundation (CNCF) and the Linux Foundation run the main Kubernetes certifications.
| Certificate | Format | Best for | When to take it |
|---|---|---|---|
| KCNA (Kubernetes and Cloud Native Associate) | Online, multiple choice | Complete beginners wanting a first milestone | After weeks 1 to 3 of the plan |
| CKAD (Certified Kubernetes Application Developer) | Hands-on tasks in a live terminal | Developers deploying apps to Kubernetes | After the full plan plus timed practice |
| CKA (Certified Kubernetes Administrator) | Hands-on tasks in a live terminal | DevOps, platform and SRE roles | After the full plan plus cluster administration practice |
| CKS (Certified Kubernetes Security Specialist) | Hands-on tasks in a live terminal | Security-focused roles | Later; it requires an active CKA |
CKA and CKAD are respected because you cannot pass them by memorising answers. You are given a real terminal, a clock and a list of tasks. Speed with kubectl matters, so practise generating YAML instead of writing it from scratch:
alias k=kubectl
k create deployment web --image=nginx:1.27 --replicas=3 --dry-run=client -o yaml > web.yaml
k expose deployment web --port=80 --dry-run=client -o yaml > svc.yaml
k explain deployment.spec.strategyThe exams are taken online with a remote proctor, so you need a quiet room, a webcam and a connection that will hold for the full session. Plan for power and internet: a charged laptop, a backup mobile data source, and if possible a location with a generator or inverter. Prices, exam length and rules change, and the Linux Foundation often runs discounts, so check the official Linux Foundation Training site for current details before you pay. A purchase usually includes a free retake and access to a practice simulator; confirm that at checkout too.
For many juniors, a cloud fundamentals certificate such as AZ-900 or AWS Certified Cloud Practitioner (CLF-C02), followed by CKA or CKAD, is a sensible order. Our comparison of AWS vs Azure can help you pick a cloud.
How Kubernetes fits into a career
Kubernetes alone will not get you a job. It is one part of a DevOps or platform engineer's toolkit alongside Linux, a cloud provider, CI/CD, infrastructure as code and monitoring. Many teams hiring remotely across Africa and abroad expect you to be able to deploy and debug on Kubernetes, but they also expect the basics underneath. If you are mapping out the whole path, read our guide on how to become a DevOps engineer in Nigeria.
How SKILL.SCH helps
Kubernetes is part of our Cloud & DevOps learning. You can practise in CloudVision, which draws your cluster live as you run commands so you can see pods, Services and nodes change, and drill kubectl speed in K8s Commander in Cloud Arcade. The DevOps Deep Dive puts Kubernetes together with CI/CD, Terraform and monitoring in one structured programme, and you can see everything else on the courses page.
Frequently asked questions
Do I need to be a programmer to learn Kubernetes?
No. You need to be comfortable reading YAML, using a terminal and understanding how apps run. Being able to read a little code helps when debugging, but administration work is not software development.
Can I learn Kubernetes on a laptop with 8 GB of RAM?
Yes. A single-node or small kind cluster runs fine on 8 GB if you close heavy apps such as many browser tabs. If your laptop struggles, use a browser-based lab.
Should I learn Docker Swarm or Kubernetes?
Kubernetes. Swarm still exists, but Kubernetes is what most employers ask for and what every major cloud offers as a managed service.
KCNA or go straight to CKA?
If you want an early confidence boost and a structured overview, KCNA is a reasonable first step. If your budget only allows one exam, the hands-on CKA or CKAD carries more weight with employers. Check current prices on the Linux Foundation site.
How long does it take to be job-ready with Kubernetes?
With Linux and Docker already in place, steady practice over two to three months can get you to the point of deploying and debugging apps confidently. Being job-ready also depends on your cloud, CI/CD and project experience, so treat Kubernetes as one part of a wider plan.
Do I need a paid cloud account?
Not to learn the fundamentals or pass CKA and CKAD. A local cluster covers almost everything. Use a cloud account later, with budget alerts set, to gain experience with managed services.
Next step
If you are unsure whether you are ready for Kubernetes, or which certificate fits your goals, book a free consultation. We will look at where you are now and suggest a realistic plan for the next few months.

