The CKAD (Certified Kubernetes Application Developer) exam is a significant challenge. I’d like to share some insights and practical advice based on my own experience to help you prepare effectively.

My creds

To put my advice into perspective, I passed the CKAD exam at the end of August 2024 with 89%. As an experienced software engineer, it took me a little over 2 weeks of intensive preparation.

Preparation Journey

To prepare, I ended up spending about a third of the time actually learning Kubernetes and its concepts using Udemy and the Kubernetes documentation.

A third of the effort was in getting solid practical experience with all the concepts in the labs and practice exams.

And I think the last third of time was simply required to meet the quirks of the certification exam, namely the very limited time for each assignment.

That meant getting really fast with kubectl and learning the ins and outs of the exam and the test environment.

Overall, I think the learning journey provides a lot of practical knowledge with limited, though frustrating, time loss based on the examination method.

Resources

To prepare, I highly suggest the CKAD Udemy course.

The 15.5 hours of video material, plus the additional 15 hours of labs and practice tests, cover the material very well.

While the course provided a solid foundation, I found that the exam tips are a bit outdated because they assume a uniform environment across questions. This is no longer the case, as every exam question is done on its own system.

Practice exams

After going through all the videos and labs from the Udemy course, I suggest you do a lot of practice exams. While there are quite a few practice exams out there, I recommend redoing the previous ones until you get a satisfactory score. That way, each new exam should be a good measure of your current level, and by the time you've exhausted the available practice exams, you should be ready.

Do note that there are 4 challenge labs by the same instructor by the same instructor that are more akin to real-world use. Although very valuable, they are much broader in scope than the exam questions, so you might skip these if you're only focused on the certification.

Killer.sh Practice Exam

I suggest you end your learning journey by doing the excellent Killer.sh exam. Two attempts were included with my CKAD exam purchase, and it provided a realistic simulation of the exam environment while covering a broad range of scenarios.

For reference, I completed 21 out of the 23 questions with a few errors. I also read another post where someone completed 17 questions and was still well-prepared for the real exam.

Exam Experience

While I appreciate that the CKAD exam demands a high skill level to pass, I found the test itself somewhat lacking. We all just have to deal with it, but I do like to vent a little. :)

Many questions require memorizing kubectl commands, which I don’t think is necessary for real-world usage. Sure, being able to perform tasks quickly is important, but there's little emphasis on testing actual comprehension or system design.

Additionally, I found some questions to be ambiguous. For example, one question left me unsure, whether multiple changes should be applied in a single or multiple rollouts. It felt like a 50% chance of getting it right, even if I executed everything correctly

Clunky exam interface

The exam is conducted inside a Proctor application, which adds a layer of Proctor UI around the actual test environment. You also lose a significant amount of screen space to the question area, leaving you with limited real estate to work with. The resulting screen wrapping and cluttered interface made some questions more difficult than they needed to be.

Forced Vim usage

Every question is done on its own system, which makes it very difficult to use anything other than the supplied Vim configuration. I find it rather unfair to put non-Vim users at such a disadvantage. I suggest you familiarize yourself with at least the following Vim basics:

  • Force quit: q!
  • Force quit and save: :wq!
  • Select lines: Shift - V
    • Cut/Delete selected lines: D
    • Copy: y
    • Indent right: > or < (follow with the dot key . to repeat)
  • Paste: p
  • Undo: u

Exam tips - Smooth sailing

If you know your way around Kubernetes, the exam ultimately comes down to working quickly.

Docs

You can access the Kubernetes.io/docs section and use the search function, but only to access specific pages (and possibly /blog). I found the kubectl commands pages to be most valuable. Make sure you're familiar with how to locate it from the documentation home page.

The top lines of the kubectl --help command provide much of the same guidance. To focus on just the examples, use:

kubectl <command> --help | head -n 30

And if you're having trouble with the syntax of a specific resource, try using kubectl explain, possibly with the --recursive flag:

kubectl explain pod.spec.containers

Keyboard usage

Names and such can be easily copied from the questions section, just like in the Killer.sh exam.

I believe I could paste with Cmd + Shift + V, which was different from my own OS.

Since you'll be using ssh a lot, I suggest getting comfortable with Ctrl + D to send a hangup signal and exit the session quickly.

Environment configuration

Older advice suggests changing some things in the environment to facilitate faster work, such as adding aliases and updating vi and nano settings. However, it doesn’t mention that you'll need to redo these settings frequently because you'll be ssh-ing into a new system for each question.

Instead, I used a separate terminal tab with a few pre-configured commands for quick access. After ssh-ing into a new system, run these commands:

echo -e "\n set tabstospaces \n set tabsize 4 \n" >> ~/.nanorc
echo -e "\n alias c=clear" >> ~/.bashrc
echo -e "\n alias kdr='kubectl -n \$ns -o yaml --dry-run'" >> ~/.bashrc
echo -e "\n alias kf='kubectl apply -f '" >> ~/.bashrc
echo -e "\n alias kff='kubectl apply --force -f '" >> ~/.bashrc
source ~/.bashrc

Check-in Early

I recommend checking in 30 minutes before your scheduled exam time. I completed my check-in and started the exam about 10 minutes early.

Notepad

Although the proctor software’s notepad didn’t work for me, I was able to use “Mousepad” within the OS. I found it useful for keeping a list of questions and notes on which ones I skipped.

Use the following command to create a list:

echo -e {1..20}"\\n"

kubectl use

kubectl is aliased to k, use it.

Make liberal use of definition files:

k get -oyaml ... > def.yml
k create ... --dry-run=client -oyaml > def.yml
# Or use the alias from elsewhere
kdr create ... > def.yml

You can force apply the definitions on existing resources:

kube apply --force def.yml
# Or use the alias from elsewhere:
kff def.yml

You can get creative by using the jq and yq tools, but at the very least, I suggest using them for syntax highlighting:

<command> | jq
<command> | yq e . -

Fair winds

Good luck with your preparation, and best of luck with the exam!