I walked into my first CKA attempt genuinely confident. I'd been running Kubernetes in production for about a year, I could read a pod spec in my sleep, and I'd done a couple of the popular practice courses. I still failed. Not by a lot — but the passing bar is 66%, and I landed just under it.
This post is the debrief I wish someone had handed me before that attempt. If you're prepping for the CKA exam, I'd rather you learn from my mistakes than repeat them. Everything here is stuff I knew but didn't drill — and the CKA punishes that gap ruthlessly.
Mistake #1: I treated it like a knowledge test. It's a speed test.
The single biggest thing nobody tells you loudly enough: the CKA is a hands-on, performance-based exam. You get a live terminal and a set of tasks across multiple clusters, and roughly two hours to finish. Knowing how to do something isn't enough — you have to do it fast, correctly, and move on.
On my first attempt I burned enormous amounts of time writing YAML by hand and second-guessing field names. I'd type out a Deployment manifest from memory, get an indentation error, fix it, get a wrong apiVersion, fix that. Multiply that friction across 15-20 tasks and you run out of clock.
What I do now: generate everything I can with kubectl and let it write the boilerplate.
# Don't hand-write this. Generate it.
kubectl create deployment web --image=nginx --replicas=3 \
--dry-run=client -o yaml > web.yaml
# Need a quick pod to test something?
kubectl run tmp --image=busybox --restart=Never -it --rm -- sh
The --dry-run=client -o yaml pattern is the most important muscle memory for this exam. Generate, tweak the two or three fields you actually need, apply. I estimate this alone saved me 20+ minutes on the retake.
Mistake #2: I didn't set up my environment in the first 60 seconds
When the exam starts, there are a handful of things you should do immediately, before touching a single task. I skipped most of these the first time.
# Aliases — you'll type kubectl hundreds of times
alias k=kubectl
export do="--dry-run=client -o yaml" # k create deploy web --image=nginx $do
export now="--force --grace-period=0" # k delete pod x $now
# Enable kubectl autocompletion for the alias
source <(kubectl completion bash)
complete -o default -F __start_kubectl k
That $do and $now trick reads a little silly but it's genuinely faster in the terminal. And every task starts by setting the right context:
kubectl config use-context <cluster-name>
I got burned on my first attempt by doing a task on the wrong cluster. Read the context instruction at the top of every question. They switch it deliberately.
Mistake #3: I ignored the kubectl explain lifeline
You cannot use random tabs, but you can use the official Kubernetes documentation during the exam, and you have kubectl explain right there in the terminal. On attempt one I wasted minutes trying to recall the exact nesting for things like securityContext or a volume mount.
kubectl explain pod.spec.containers.securityContext
kubectl explain pod.spec.volumes
It's faster than opening docs in the browser for field-level questions. Learn to trust it.
Mistake #4: I under-practiced the "boring" operational topics
I was strong on workloads and scheduling because that's what I did daily. Where I bled points was the cluster-admin material that I never touched in a managed environment:
-
etcd backup and restore. This shows up and it's worth real points. You need to be able to run
etcdctl snapshot saveand, more importantly, restore from a snapshot with the right--data-dirand update the static pod manifest. Practice the whole restore flow, not just the backup. -
Upgrading a cluster with kubeadm. Draining a node,
kubeadm upgrade plan,kubeadm upgrade apply, upgrading the kubelet, uncordoning. I'd read about it. I'd never done it under time pressure. -
RBAC. Creating a Role/ClusterRole and binding it to a ServiceAccount, then verifying with
kubectl auth can-i. Simple once drilled, fumbly if not. -
Troubleshooting. A broken node (kubelet down), a misconfigured static pod, a failing DNS lookup. These are diagnosis tasks — know how to check
systemctl status kubelet,journalctl -u kubelet, and where static pod manifests live (/etc/kubernetes/manifests).
Here's the etcd restore skeleton I now know cold:
ETCDCTL_API=3 etcdctl snapshot save /opt/snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
ETCDCTL_API=3 etcdctl snapshot restore /opt/snapshot.db \
--data-dir=/var/lib/etcd-restore
# then point the etcd static pod manifest at the new data-dir
Mistake #5: I didn't use kubectl -h examples as a cheat sheet
Almost every kubectl command has usage examples baked in. When I forgot the exact flag for exposing a service or setting a resource limit, kubectl create service -h or kubectl set -h gave me the exact syntax. On attempt one I was fighting my memory; on attempt two I let the CLI remind me.
How I actually studied for the retake
Between attempts I changed my approach completely. Less watching, far more doing. I set a timer and forced myself to complete tasks under exam-like pressure, then reviewed which ones I fumbled and why.
The most useful habit was doing timed question sets — real scenarios, a clock running, no pausing to look things up until I'd committed to an answer. I leaned on a mix of hands-on lab environments and CKA practice questions to keep my recall sharp on the domains I was weakest in. If you want to gauge where you stand before you spend money on the exam, there's a free CKA practice test that's a reasonable temperature check — I used that kind of low-stakes drilling to find my blind spots without the pressure of the real thing.
The mental shift: stop asking "do I understand Kubernetes?" and start asking "can I complete this task correctly in under five minutes without looking anything up?" Those are very different bars.
The result
I passed the retake comfortably — enough of a margin that I wasn't sweating the score screen. The material didn't change between attempts. My fluency did. The CKA isn't testing whether you've heard of taints and tolerations; it's testing whether your hands know the keyboard well enough that you can spend your brain on the actual problem.
If I could tell my first-attempt self one thing: it's a lab exam, not a quiz. Drill the CLI, set up your environment in the first minute, generate your YAML, and practice the boring cluster-admin tasks until they're boring in a good way.
Good luck. You've got this on the second try, if not the first.

Top comments (0)