DEV Community

Cover image for CKAD experience
Cédric Moulard
Cédric Moulard

Posted on • Updated on

CKAD experience

6 months ago I only knew kubernetes by name. Today I obtained the CKAD certification. Make no mistake, this is a selective examination where the slightest hesitation is not allowed.

I will share this experience with you, hoping it will help you.

What skills are required?

The exam is limited in time and requires mainly quick decisions. In my opinion to be ready you need :

  • To master the concepts of kubernetes in depth
  • Mastering vim and basic bash commands

The exam assesses your ability to identify and resolve a problem as quickly as possible. You won't have time to experiment, either you've figured out what to do or you need to move on to the next question.

Mastering kubernetes

For this there is only one way: practice, practice and practice!

First of all you have to understand the concepts. For this you have access to countless workshops on the internet.

I recommend this book:

There's everything you need to understand how it works.

Mastering vim and bash commands

The commands curl and wget are essential to know. Also the syntax sh -c <command> must be mastered.

If you are not comfortable with vim forget the exam. You will not have access to any IDE, you will have to manage and be quick with vim.

Vim configuration

You can execute the following command to properly prepare vim for editing YAML.

echo "set ts=2 sts=2 sw=2 et" > ~./.vimrc && . ~/.vimrc
Enter fullscreen mode Exit fullscreen mode

Learn this command by heart, it will be the first thing to do during the exam.

Commands to know

You need to know how to quickly delete one or more lines, insert a line before or after the cursor, replace a character and exit the editor !

Practice, practice and practice!

Before taking the exam you must practice intensively. You must be able to answer instantly a question like: "Launch a pod named pod1 with the image nginx. This pod must be exposed by a service called pod-service on port 443."

You must be able to use imperative mode to generate yaml files and modify them with vim to run them in declarative mode.

Personally, I used Udemy's training and performed the mock exam of

D day


The examination begins with a verification of identity and compliance with the rules. You will need to activate your camera and share your screen. This part can be quite long. For me it lasted almost 30 minutes. The screen sharing was not working properly and we had to repeat the procedure several times. I had to take apart the two screens on my desktop even though they were turned off.

Avoid wasting time, rigorously prepare the place where you will take the exam:

  • no posters or inscriptions on the wall
  • no paper on the desk
  • only one screen
  • no one else in the room
  • preferably a closed room
  • no food

You will be entitled to a glass of water as long as there is no inscription on the glass. I had taken a glass of water during a mock exam and had to go to the bathroom and waste time for nothing. I would advise against it!


The objective is to reach 66% correct answers. There are 19 questions in total, some questions are worth 3% and others 12%.

You will be entitled to the official kubernetes documentation, feel free to use it and copy and paste. If you are well prepared you will know exactly where the code snippet you need is.

There is a notepad available, use it to note down information about your progress and the value of the questions.


You need to know your strategy before you start. Are you going to do the easy questions first and then come back to the hard questions later? Are you going to start with the hard questions first? Will you answer the questions in order?

You absolutely must know how you want to proceed. You won't have time to improvise. If you waste too much time on one question you won't have enough time for a simpler one.

This is the strategy I applied:

  • First I took the time to create the aliases I needed and configure vim
  • I took the questions in order, noting each time the number of each question and its percentage in the notepad. Ex: 12 - 4% => OK or 8 - 7% => cron job, not done.
  • When I would answer a question I would do a quick check and then I wouldn't come back to it. Don't spend time on unnecessary checks, if you have made a mistake chances are that you don't see it and you are wasting time for nothing.
  • Up to question 10 I answered all the questions in order because they were quite easy.
  • From question 10 I read the question, if I understood it immediately and knew what to do I made a first attempt otherwise I moved on to the next question. If the attempt failed I tried to solve the problem once and then I went on to the next one.
  • Once I had scanned through all the questions I would go back to the ones that seemed easiest to me.
  • From time to time I would stop to calculate the score of the questions that had already been answered.
  • When I had a yaml file to create I numbered it according to the question. For example 04-pod.yaml or 12-netpol.yaml.
  • I had time to answer all the questions, with the time left I quickly checked my answers without going into detail. I checked that the service was created in the right namespace for example but not that it exposed the right port or that it had the right selector.

I remind you that the objective is to have a score above 66%, not to beat the world record.


Don't waste time on a tough question.
There are some topics where you will be less comfortable, save them for the end. I have less mastery of jobs and cronjobs, I immediately passed the question to answer a simpler one for me. I came back to this question once I had done everything I knew.

Beware of stress. It took me a long time to get started and it was hard for me to concentrate on the first few questions.

You may not have time to answer all the questions. That's normal, don't rush, read the statement carefully before you start answering. It is better not to have time to answer 3 questions than to answer 19 questions incorrectly.

My aliases

alias k="kubectl"
export $do="--dry-run=client -o yaml"
export $fo="--force --grace-period=0"
Enter fullscreen mode Exit fullscreen mode

This is how I use them

# Create a definition file
k run ningx --image=ningx $do > 01-pod.yaml

# Force delete a pod
k delete po my-pod $fo
Enter fullscreen mode Exit fullscreen mode

Useful links

K8s in visual way:
Another tips:
Tips in french:

Top comments (2)

survivant profile image
Sebastien Dionne

Je pense que ton alias était plus
alias k="kubectl" :)

cedricmoulard profile image
Cédric Moulard

Of course yes
Thank you ^^