I cleared the CKAD with a score of 92
Exactly a month ago, I wrote an entry on my blog where I shared my intention of sitting for the Certified Kubernetes Application Developer exam. This is part of my project to transition from software development to cloud engineering / DevOps / SRE.
I took the exam on november 20th, 2022 at 4:00PM GMT and received notification of my result exactly 24 hours later.
A bit of background
I had essentially no profesionnal experience with k8s except that I was exposed to it through colleagues and friends at my previous jobs.
I have a solid grasp of containers as I’ve used docker/docker-compose for all my micro-sass projects.
I deployed a Go API to a kubernetes cluster as a learning exercise, which gave me some familiarity with concepts such as deployments, statefulsets ingress etc. But that’s about the extent of it.
How I prepared for the exam
It took me about 3 weeks of intensive studying and practice to pass the exam. Below I will detail all the steps I took to succeed:
I used Mumshad’s Certified Kubernetes Application Developer course on udemy. Thankfully it was on sale, so I was able to grab it for a tenner.
This course is by far, the most comprehensive and detailed resource on the topic. Hands Down. The great thing about it is that it comes with a voucher for their KodeKloud platform, which contains tons of interactive labs to practice the concepts taught in the videos. The UX is top notch, and the UI is very responsive most of the time. It also contains two mock exams to complete within an hour each.
After this, I searched on reddit and GitHub for additional resources, labs, practice exams. I came across a lot of them, varying in quality and selected a few of them that I thought were the most relevant and well put.
These are:
- dgkanatsios/CKAD-exercises
- zengtian006/ckad-questions
- bmuschko/ckad-prep
- subodh-dharma/ckad
- StenlyTU/K8s-training-official
- StenlyTU/K8s-training-official
- piouson/kubernetes-bootcamp
In addition, I went through all the killercoda CKAD scenarios.
I did all of these twice in a row before using the exam simulator.
A quick note on killer.sh
My plan was to save the exam simulator for last because the environment is only active for 36h. What I did is I activated my session on saturday morning and completed it once, then once again in the evening, then one more time in the morning of the exam. I found that to be enough in my case because I had sufficient practice under my belt.
The simulator has a lot more questions than the actual exam and the UI, while very similar to that of the real exam is not identical. But it’s enough to practice copying and pasting, looking through the docs etc.
I found the difficulty to be on par with the exam, there was no curve balls or anything unexpected in terms of questions. It covered the full breadth of the curriculum with some additional stuff.
Before the exam
My biggest worry in relation to taking the CKAD wasn’t so much the content but the admission process.
The kubernetes subreddit is full of horror stories from students who were not allowed to check in because the proctors couldn’t read their ID, or they had trouble downloading the PSI secure browser, or the environment would randomly restart or they would experience extreme latency etc … Reading all of these stories didn’t exactly put me in the best frame of mind on the day of the exam. So to remedy this, I planned ahead and purchased a full HD logictech webcam along with a USB extension cord. In addition, I bought a USB-C to ethernet adapter and disabled wi-fi so that I could use a wired connection and avoid drops in connectivity. I also cleared my room (I’m a minimalist so there wasn’t much to get rid of anyway) of anything that could potentially have been considered suspicious and delayed the admission process. I cleared my desk and left only my monitor, keyboard and mouse.
Surprisingly, the check-in process couldn’t have been more smooth. I came in 30 minutes early as was recommended in the candidate handbook. No issues with downloading and installing the secure browser. The ID check was very straightforward (I had the blinds opened all the way, and the lights on to minimise focusing issues with my webcam). I was told to wait in a queue until a proctor came in and gave me instructions via chat.
I was asked to pan around the room with my webcam. Floor, ceiling, walls, working plan, the area underneath my laptop and under my desk. I was then asked to show my ears and wrists, to show my phone and put it away. The USB extension cable came in useful for this as I was taking the exam in quite a large room.
The actual exam
After all this was done, the exam was released to me. I took the exam on an intel macbook pro with the lid closed, connected to 27inch 2k display. I had no connectivity issue whatsoever with the environment. No input lag, nothing. I had a surprisingly high number of heavily weighted questions though. As for the content of the exam, I can’t say anything too specific, but my advice would be to brush up on the 2021 updates of the curriculum (ie helm, containers, admission controllers and RBAC)
Tips for passing
Time management seems to be the biggest issue for students taking the exam so here are a few recommendations:
1. Learn vim while you’re studying.
Become intimately familiar with it. You should know how to delete, copy, paste, the different modes, the most used shortcuts etc. This will save you tonnes of time during the exam because you simply won’t have to fight with the editor. In my case I had been using vim/nvim for the last 7 years now exclusively (and I’m still learning new tricks every day so don’t despair).
2. Use the imperative syntax whenever possible
Doing this will do half of the work for you, trust me. And if you’re stuck simply tack on the -h
flag
at the end of the command you’re trying to execute. At the bottom you’ll find an actual usage example
that you can then copy /paste and modify to your needs. This, in addition to --dry-run=client -o yaml
will save your life.
3. Create aliases
As soon as the exam is launched, open a terminal and add a few aliases to the .bashrc
file to make your life easier.
In my case I used:
alias pods="k get po"
alias kaf="k apply -f"
alias kd="k delete"
and my favourite: alias temp="k run --image=nginx:alpine --restart=Never --rm -it"
. This will create a
temporary nginx pod in interactive mode, which you can then use to test services if you’re asked to troubleshoot
them. Instead of having to remember the syntax and write it every single time,
I simply run temp -- curl $IP:PORT
and boom !
4. Always check your work
A healthy bit of paranoia goes a long way in this case. After completing a task, make sure you’ve done in the correct namespace.
If you’re asked to mount a configmap/secret or to create environment variables,
use k exec <pod-name> -it -- sh
and verify that the variables are set, and the
volumes are properly mounted.
When asked to create a service / ingress, use the temp alias above to check that they respond to requests via curl.
If you ever use --dry-run=client -o yaml
to create a resource, please make sure to apply it as this tripped me up on the simulator.
5. Learn the URL patterns of the docs
If you practice enough, you’ll have to read the docs A LOT during your studying sessions. To avoid having to search for particular resources in the docs and lose precious time, I learned the URL patterns used to render the information I’m after.
The pattern is as follows: kubernetes.io/docs/concepts/<resource-type>/<resource-name-plural>
Example: if you’re looking for persistent volumes, you can hit the following URL: kubernetes.io/docs/concepts/storage/persistent-volumes
. This can save you a lot of time especially if you’re on a slow connection.
6. Misc
If you’re on MacOS like me and you’re using an external monitor and webcam, make sure to set the default mic to your webcam’s mic.
To do this go to system preferences > sound > input
and select your webcam.
Clear your exam area the day before so you don’t have to go back and forth with the proctor and add to an already stressful situation. You don’t want to lose your composure at the time you’ll need it the most.
TLDR
Practice practice practice. Git gud at using vim learn some bash-fu and that will save you 60 minutes at least. I finished all the questions in about 70 minutes which gave me plenty of time to back and fix mistakes I may have made and triple check my answers.
Next step for me is going to be the CKA, which I’ll be taking in exactly three weeks.
Honestly if you’re prepared, you have nothing to worry about. The exam isn’t all that hard !