First off, let me make this clear; this is not a beginners guide. There’s plenty of resources available for beginners:
This is for experienced operators who want to advance their Kubernetes journey by getting certified.
I have been running Kubernetes in production at General Motors since 2018 and I am very active in the Kubernetes Community. I can run
kubectl commands in my sleep and extinguish the strangest of kube-fires. The one thing I didn’t have was my CKA certificate - a hands on practical exam created by the CNCF.
In February 2020, I passed my CKA exam with a 96% and here’s how I did it.
Calm the noise
There’s SO MUCH information out there, it’s easy to get overwhelmed. I found myself asking questions like:
- Do I need to do Kelsey Hightower’s Kubernetes The Hard Way again? (no)
- Do I truly know the ins and outs of Deployments, Services, Storage?
- How strict will the proctor be about my room and desk?
- Can I take notes during the exam? (yes, browser based)
- How will I interact with the clusters in the exam?
- How will I deal with YAML manifests?
- Is 3 hours enough time? (yes)
It turns out, KTHW is less relevant if you already have experience debugging clusters. Don’t doubt what you already know about Kubernetes.
The proctoring was very fair and not nearly as intimating as I thought. I had to pan my camera around the room to show that there were no additional electronics, phones, people, etc. I did have some audio gear and mics on the desk that caused no problems. (They are watching you on the webcam the whole time, so there’s that too)
The proctor also made me open up Task Manager to prove no other apps were running. All interactions with the proctor were through a chat window and there were easy controls to interact with them.
As far as interacting with clusters - almost anything is fair game. Your terminal access will be browser based very much like Katacoda. Every question will have the appropriate
kubectl config use-context command at the top.
Each of the 24 questions will contain tasks. The exam doesn’t care how you accomplish the task, it only cares that you are able to complete the task. This means, if you’re comfortable editing YAML in vim - go for it! Likewise, you can use kubectl generators, copy / paste docs on k8s.io, or even straight up
kubectl edit on a resource. I used a lot of
cat << EOF | kubectl apply -f ... as seen on the Cheat Sheet. You can also borrow specs from any resource running in the cluster.
Whatever you do, do what’s the most comfortable and fastest.
That includes aliases. Personally, I don’t use aliases as much as I should, so I felt like remembering them would slow me down. I did add in a single BASH alias (
alias k=kubectl) for speed sake. I still found myself typing
kubectl most of the time.
Old habits die hard.
How ready are you?
This is a question only you can answer. I bought a couple online learning courses but found myself having a hard time staying focused. As Kelsey Hightower jokingly said:
How many times can we talk about pods coming up?
I just wanted to know: Can I pass this exam?
Then I hit the jackpot on Udemy. A course that had mock exams that were similar to actually taking the exam. The mock exams also had solutions too if I was really stumped.
Sign up for this Udemy course, jump straight to the practice exams, and see how you do. Please don’t purchase it at full price, Udemy always has sales making their courses more affordable.
Once complete, use that as your starting point and dive into any areas you struggled with.
Test taking tips
The Kubernetes documentation is your best friend. Know how to search and find each area of the exam in the docs. More specifically, the two most important documents are:
Tip: When grasping for straws on a question, try to
Ctrl+Fsearch the cheatsheet for a keyword.
Tip: When using kubectl to do anything, there are full examples in the reference docs including arguments.
You can use bookmarks during the exam, however I found myself mainly using the two links above for 90% of the time. It never hurts to have more bookmarks handy. An example of my partial bookmark bar:
Since it’s not multiple choice, there was no way for me to know which questions I completed. As a result, I started to track my progress in the browser based notepad with the following format:
Question Number - My Confidence - Weight
1 - 100% - 2% 2 - 100% - 4% 3 - skipped, about XYZ, come back - 8% 4 - 75% - 4% 5 - 100% - 8%
The far right column will add up to 100% at the end. This way, I had a rough idea of when I was close to the passing mark of 74%.
As an experienced operator you will know when you have a question 100% because you can validate that the task is complete / present / working.
Note: When I exited the exam, I had all questions marked as 100% “confidence” as correct. I was wrong for at least 4 of those percentage points haha
I can’t go into details about the actual content of the exam, but make sure you have experience in the following areas:
Using the etcdctl command. Specifically with the cluster SSL certificates. You should be able to do things with this CLI in your sleep.
kubelet. Knowing how to fix things in a way that will survive reboots.
kubeadmto bootstrap or fix a cluster from scratch.
How static / mirror pods work and how to configure and debug them. Try to create a static pod folder in a place other than
I spent my first pass focusing on completion, tracking, and speed. If I didn’t know it, I would mark the question to revisit.
Around the 2 hour mark I was done with what I “knew” or grabbed from the docs. I felt like I had the confidence to pass and spent the remaining hour returning to any incomplete questions; starting with the heavier weighted ones.
I ended up completing the exam with 15 minutes to spare. Then I waited, and waited, and. waited.
When you finish, you’ll receive an email saying it takes up to 36 hours to get the results. I received mine around the 32 hour mark. I probably DDoSed the CNCF portal with my obsessive checking. While I felt good about it… it’s not over until you get the results.
I hope this helps you! Good luck and feel free to ask any questions!