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.

Karim Cheurfi CKAD

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:

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 !