Certified Kubernetes Administrator (CKA) exam tips and lessons learned
In February 2021 after a month of studying and practice, I passed my CKA exam. My goal in studying for this exam was primarily to expand and formalise my knowledge of Kubernetes (K8s). I found the process both enlightening and enjoyable, giving me a deeper understanding of K8s while also forcing me to correct some bad habits.
While preparing for the CKA I read everything I could find about the exam and the best way to pass. Some advice worked well, and some not so. What follows are my tips on how to give yourself the best chance of passing your CKA. Please remember that we all learn in different ways and at different paces. So, take what works for you from the list below and improve on it, make it work for you.
There are many different learner styles, so find one that works for you. Personally, I like to watch videos/lectures, write notes on the content, and then practice what I have learned.
I highly recommend the Certified Kubernetes Administrator (CKA) with Practice Tests course from Udemy (this course is often discounted so keep an eye on the price). It provides all of the information you need to pass the test and numerous labs/practice tests to perfect your technique.
I went through the course once, making notes and taking the interactive labs. I then went through all of the interactive labs again before taking the practice tests. For me, this worked to solidify the information in my mind before putting all of the pieces together and started to practice for the exam. Whenever I got a lab or practice exam question wrong I made a record and at the end went back to my notes and revised that topic.
Should you need the curriculum you can find it here: https://github.com/cncf/curriculum
Access to killer.sh costs extra but I did find it useful as a final practice before the exam. The questions asked were harder than the ones in the exam so getting the correct answer felt like an achievement.
One thing to note is that the terminal used is different to that in the exam, I tried to setup bash-completion and several shortcuts (as I was planning on doing so in the exam) and broke the terminal. Stick to a simple approach and focus on optimising speed later using your local setup.
Get to know the Kubernetes docs
During the exam you are allowed to use these sites:
The answers to all the questions you will be asked can be found on these sites. Good working knowledge of these docs is invaluable. When studying and taking labs/practice tests, try to only use the above sites to fetch information, that way when it comes to the exam you will be an expert in using the resources available to you.
Learn how to efficiently use the search function within the K8s docs, and when you find a useful page on a specific topic remember to bookmark it!
Get to know kubectl
During the exam (and day-to-day), kubectl is your primary way to interact with K8s. Good knowledge of kubectl is key to passing the CKA. You should know how to use it to create, edit and view objects in K8s. It will also help to know how to configure/fix your current “context”.
Get to know some basic Linux commands
In the exam, you will be working almost exclusively in the terminal to manipulate K8s objects and investigate underlying systems. As such, knowledge or the following may help:
- vi (you will want to edit files in the terminal so Vim use is critical)
- kubectl (see above)
- kubeadm (for upgrading clusters)
- systemctl & journalctl (for controlling services, and viewing logs)
- nslookup (to diagnose DNS issues)
- curl (to test endpoints)
- tmux (optional but would allow the use of multiple
Bring the exam to your daily work
The way that you are asked to interact with K8s and the tasks you are asked to action during the exam, may not always be the most efficient for your day-to-day work. Many of us use K9s or Lens to make navigating our clusters easier.
I would suggest that while you are studying for your CKA you should start only using resources available in the exam during your daily work. For me, this meant reverting to kubectl only and optimising my use of the command line. In one month I improved my use of the basic tools listed above, leaned to use the official K8s documentation and made a significant improvement to my ongoing working processes.
On exam day I was much more confident undertaking questions as each felt more like a simple work task than a complex problem.
Set SMART goals
While you are learning set yourself goals and deadlines. This could involve setting a date by which you will take a killer.sh test, or giving yourself a set number of Udemy lectures to watch per night. Make these goals obtainable and keep pushing forward. Keeping momentum will help you get to the exam sooner with more drive.
Prepare your surroundings
Depending on which company you have for proctoring the restrictions on what you can have around you during the exam might vary. I had to use my laptop camera to show the proctor my desk and room, and even though I had tidied up, I was still asked to remove a picture frame and old notepad.
Take the time to clear your desk and work area before the start time of your exam. Having clear and comfortable surroundings in which to take the exam will make it easier to focus, and having to make alterations to your setup at the request of the proctor will cause you more stress at a time when you do not need it. Remove any books/notepads/paper, takedown any nearby certificates/pictures, switch to a single screen, remove any smartwatches, pack away any smart speakers, and dust down before you start the call.
You are allowed a clear bottle/glass of water. Have one handy and don’t forget to drink it. Staying hydrated will help you focus.
Bookmark key documentation
During the exam, you are allowed one extra tab open. You can use this to browse the official K8s documentation (see “Get to know the Kubernetes docs”). During your studying, you should become adept at using the search functionality in the official docs. You should also try and bookmark any docs you find particularly useful. This will make referring to them in the exam, faster and easier. In particular, I bookmarked the following pages:
Setting up your terminal
During the exam, you will have a single web-based terminal to use (and a web-based notepad). Lots of tutorials will tell you to setup numerous complex aliases and all sorts of bash hacks. I found that this just added to the complexity and saved me very little time compared to having a good knowledge of the exam content. My setup was as follows (mostly from https://kubernetes.io/docs/reference/kubectl/cheatsheet/):
source <(kubectl completion bash) # setup autocomplete in bash into the current shell
export do="--dry-run=client -o yaml" # use $do to cause any kubectl create/run to output yaml
Flag questions you don’t know (and move on)
You can move forward and back between questions and flag questions so you know to come back to them. This is a great facility and I encourage you to use it. If you don’t know the answer to a question, or you find you are stuck (spinning round in circles) on a question, flag it and move on. You want to give yourself as much time to answer as many questions as possible, and you may well find that in solving a later question you remind yourself of the solution, or that by coming back later with fresh eyes the solution may become apparent.
Output everything you create to YAML
During the exam, you will have to create and edit numerous K8s objects. Imperative commands via kubectl are often used to make new, or fetch existing objects. Do not action these changes directly on the exam cluster. Use
--dry-run=client -o yaml (via the shortcut above) to output YAML manifests, which you then apply to the cluster after modification. This approach has four benefits: 1) it allows you to make modifications to the manifests before applying, 2) it allows you to check the manifests before applying, 3) it allows you to reuse manifests from earlier questions and 4) it provides an easy history of the objects you created to answer each question.
If you are following this tip, having a good file naming convention is also critical. You need names to be descriptive but not too long. I would suggest something like:
Set Kube context every time you change question
Above every question, there will be a box with a kubectl config statement to set the context for the question below. Run this command EVERY time you change question. You never want to risk answering a question in the wrong context.
Give yourself time to review your answers
At the end try and give yourself 5 minutes to go back over your answers and review them. Run a few kubectl get/describes to check everything is where you think it should be. Don’t second guess yourself, just review for any obvious errors.
If everything goes wrong don’t panic!
Halfway through my exam, my internet failed and I lost the session. All my flags cleared, I had no idea what I had answered and what I had not, my terminal reset and I lost my notes. Lucky the clusters were still present and my answers were still applied (also my YAML files were still present). I tried not to panic, set the terminal up from scratch and carried on.
If the worst happens, all is not lost. Focus on regaining your environment and carry on answering questions.
The CKA exam is challenging, but it is also fun. Enjoy getting the chance to deep dive into the inner workings of K8s. Relish the opportunity to show off your knowledge, and when you pass take a moment to congratulate yourself.