So, I passed the CKAD exam and I thought I’d share my unique experience.
TL;DR: Practice, practice and practice. Improve your YAML and VIM skills. Good luck!
Just to be clear, there are 2 kinds of kubernetes certifications and I took the
If you are planning on it, you might want to read the description below to see which of these are you more interested in. I have seen folks taking both the exams
The Certified Kubernetes Administrator (CKA) certification is designed to ensure that certification holders have the skills, knowledge, and competency to perform the responsibilities of Kubernetes Administrators
The Certified Kubernetes Application Developer (CKAD) certification is designed to provide assurance that CKADs have the skills, knowledge, and competency to perform the responsibilities of Kubernetes application developers
More info here
It all started when I purchased the Linux Foundation’s thanksgiving deal (course + exam under $200) with no retakes.
The Linux foundation course was good but I soon lost interest like most of us do and stopped preparing for a while.
Fast forward to April 2020, just then I had passed my Elasticsearch certification(which I’ll write about it soon) and was motivated to take up another certification since we were all sheltering in place during the pandemic.
Pluralsight came up with a free learning for the month of April and I started looking at CKAD courses. I had taken Nigel Poulton’s courses on docker before and they were the best (still is).
The courses that helped me the most were
If you are new to kubernetes, I definitely recommend going through both the courses to get your basics right.
KodeKloud’s CKAD course by
Mumshad Mannambeth solidified what I had learnt so far. The best part of this course is that it has practice tests for each topic which will help you learn by doing it.
After these 2 courses, it was time to practice. There are handful of CKAD exercises on github but I did this one from dgkanatsios I already had a cluster setup in Linux Academy which proved handy for practising.
Soon I realized that learning and understanding of the concepts were not enough, it’s vital that you develop speed and agility in understanding and solving the problems.
Know your text editor well since the exam is entirely in command line and you can choose your editor available in Linux environment
Vim and I chose
And, I’m one of those who never liked
Vim before and that was about to change.
I spent good few days to practice Vim and learn all the necessary shortcuts.
.vimrc config that I used for the exam
syntax on set nu ic is ai et st=2 sw=2 pt=<F2>
syntax on- good for syntax highlighting
nu- shows line numbers
ic- ignore case while searching
is- incremental search
ai- auto indent
et- expand tabs to spaces
st=2- indent using 2 spaces when you use tab
sw=2- shift width 2 spaces
pt=<F2>- paste toggle when you press F2 key
All these options are helpful when writing yaml definition files, copying yaml configurations from docs, searching, etc
I took few
.vimrc options from here
There are 2 ways to create resources in Kubernetes.
For example you have the following yaml config to create a pod names
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx
To create the nginx pod you run the command
kubectl apply -f nginx.yaml
kubectl run nginx --image=nginx
Get good with creating resources the imperative way. This will save you a lot of time during the exam.
Create kubectl aliases so that you don’t have to type the entire command.
Remember you’ll have 120 minutes to answer 19 questions, ~6.3 minutes/question.
My aliases. And make sure you add them to the
.bashrc file as well
alias k=kubectl alias kaf='k apply -f' export do=‘—dry-run=client -o yaml’ alias kdr='k create $do’ # kubectl create resource with dry run alias kdrp='k run $do’ # kubectl run pod with dry run alias kn='k config set-context --curent --namespace' # set namespace alias c=clear
So, if you had to create a deployment with dry run option you would just do
kdr nginx --image=nginx
kubectl get <resource> -o widefor listing additional details on the resource in the current namespace
kubectl get <resource> --all-namespacesfor listing resources across all namespaces
kubectl get <resource> -o yamlgets the resource’s yaml
kubectl describe pods my-pod
kubectl explain pods
Congratulations! You almost made it.
Now that I had prepared for several months, I felt I was ready for the exam. So, I booked a date.
Come exam day, fed my dog, logged in early and waited for the proctor to finish the formalities.
Once I got the green signal, the proctor released the exam. Usually you’d see the questions on the left hand side and the in-browser command line on the right hand side where all the magic should happen. Unfortunately, once I started typing on the command line, it went blank and I couldn’t see what I typed or the result of the command.
I thought something’s wrong with the exam environment and explained this to the proctor and they gave me a new exam environment. And again the same experience and now I can see myself panicking a bit when I saw the time remaining
I was using an older version of MacBook Pro (2011) High Sierra (Don’t you judge me!) Luckily I had a chromebook and I asked the proctor if I could switch laptop real quick and they agreed!
Logged in real quick on my chromebook and after completing the formality, off I went. I wasn’t able to attend all the questions but I was confident on the ones I did.
Finally, the result came after couple of days and I had passed the exam!
I would encourage you to try and use the latest mac/laptops or one that isn’t old as mine!
Leave a comment on your experience.