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: https://gumroad.com/l/understanding-kubernetes-visual-way
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
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 killer.sh.
D day
Setup
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!
Process
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.
Strategy
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
or8 - 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
or12-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.
Tips
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"
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
Useful links
K8s in visual way: https://gumroad.com/l/understanding-kubernetes-visual-way
Another tips: https://dev.to/aurelievache/tips-about-certified-kubernetes-application-developers-ckad-exam-287g
Tips in french: https://thibault-lereste.fr/2020/05/certification-kubernetes-ckad/
Courses: https://www.udemy.com/course/certified-kubernetes-application-developer/
Top comments (2)
Je pense que ton alias était plus
alias k="kubectl" :)
Of course yes
Thank you ^^