In February 2021, I started working at Liquid Reply and consequently with Kubernetes. Kubernetes’ concepts, ideas, and workflows were entirely new to me. My previous jobs in the last decade were all in the field of classic Linux administration. I did everything from provisioning to decommission computing, storage, and networking hardware in data center environments. I managed Linux workstations, maintained a custom Linux kernel as well as custom packages. That is the reason why I feel confident using, navigating, and troubleshooting a Linux operating system. Also, I learned how distributed system architectures worked from a low-level perspective.
To challenge myself, I decided to certify the Kubernetes knowledge I gathered since I started working at Liquid Reply. The Linux Foundation currently offers three different Kubernetes certifications. The Certified Kubernetes Administrator (CKA) exam rang a bell with me and so I started my preparation.
In this blog post I will describe all the resources I used to prepare for the exam. Additionally, I will share my thoughts about what I have learned along the way. I will not repeat all the best practices, you are reading in other blog posts. My motivation is to give you guidance and a personal report bearing in mind my background.
First Things First: Linux
The first realization might not come as a surprise, considering my background: You must know Linux to some degree.
To have any chance with the CKA exam, you must know your way around a Linux operating system and feel confident working with CLI tools. You see, the CKA exam is a proctored live exam. In this scenario, you will find yourself logged in to an old-fashioned text-based shell — Bash in this case — from where you must solve all the exam tasks on authentic Ubuntu systems.
If the last paragraph scared you, I recommend you start gaining experience with Linux first. There are a lot of free resources on The Linux Foundation’s website as a starting point. The internet is full of assets as well. You might also consider taking the Linux Foundation Certified IT Associate (LFCA) or Linux Foundation Certified System Administrator (LFCS) exams.
The Curriculum and Other Official Sources
The exam is based on a curriculum published in this CNCF repository on GitHub. Be aware that the exam will be updated on a regular basis, though. To give you a first idea about the fields that you already know, go ahead, and scan the curriculum for Kubernetes keywords. Make note of all concepts that you want to have a deeper look into.
To get an even better understanding of the exam’s conditions, read through all the officially published documents. First, read CNCF’s entire Candidate Handbook. Take a special note of the tools and resources that are allowed during the exam. I will come to them later. Read the Important Instructions for CKA as well as the Frequently Asked Questions for CKA.
Prepare Your Workplace for the Exam
Once I felt ready for the exam, I started to prepare my environment for the exam.
I created a new Chrome/Chromium web browser profile. This article here describes how this is done for the operating system of your choice. Once I set up my new profile, I added some bookmarks for quick access during the exam. To reference the previously mentioned FAQ, you are allowed to use resources at the following domains:
Where the FAQ is somewhat vague is if you can create bookmarks in your new web browser profile. It turns out, you are allowed to do this. Keep this in mind and add bookmarks to any pages under those domains, you mind find useful during the exam. Good candidates for this are pages containing deployment manifest code examples for quick copy and pasting, the kubectl Cheat Sheet, or documentation on processes like Upgrading kubeadm clusters.
Last but not least, you must install the Innovative Exams Screensharing extension.
CLI Tools You Must Know How To Use
As I stated before, you must know some Linux basics. Therefore get comfortable with basic commands like
cat first. Adding to this, the following tools are the minimum set that you must be able to use.
- bash: This is the interactive shell that you are going to use during the exam. Make sure to enable
kubectlautocomplete as stated in the cheat sheet. You should also know how to redirect inputs and output to files or pipe command outputs to the next command. Make sure that you know how variable expansion and globbing works.
- ssh: During the exam you might need to connect to different nodes. Do not worry, the connection information will be provided to you.
- vim: You will edit deployment manifests. If you know some navigation shortcuts, you will be quicker. Make sure to play through
vimtutor, bundled with every vim distribution, to learn some nifty commands.
- kubectl: You will interact with several Kubernetes clusters.
- etcdctl: The curriculum requests that you know how to back up and restore an etcd cluster.
- kubeadm: The curriculum requests that you know how to upgrade a Kubernetes cluster using this tool.
- apt-get: This is the CLI tool to Ubuntu’s package manager. You will use this tool while upgrading a Kubernetes cluster.
- systemctl & journalctl: To analyze components running on a Kubernetes node, you must be able to query the status of their services, as well as stopping, enabling, and starting them. You might also want to query a service’s log to see what has happened to it.
- ps, top, htop: These tools can be used to give you a first overview of all running (and missing) processes on a node.
- tmux (Bonus): You will be limited to a single virtual terminal. If you want multiple terminal windows, your only choice will be a terminal multiplexer. To be honest, I did not use any.
Many command examples for these tools can be found in the Kubernetes documentation. So, again, use them.
Honorable Mentions of Learning Resources
While I studied, I stumbled upon some valuable learning resources. There is overwhelmingly much content regarding the CNCF exams shared around the internet. Ask yourself, how you want to approach your learning. You could create a learning path based on the curriculum, consume a video course, come up with scenarios in a test cluster. The most important thing is, that you really get hands-on. Here are some honorable mentions, that helped me while learning.
If you really want to understand how every component of Kubernetes works on a node, give Kelsey Hightower’s repository Kubernetes The Hard Way a try. The repository contains an interactive tutorial walking you through the creation of a Kubernetes cluster from scratch. It deliberately takes the long way while explaining every decision in detail.
The Kubernetes exam simulator Killer Shell provides you access to an environment that is a copy of the real exam environment. If you acquire an exam voucher, two simulator sessions will be included. Make use of them! The questions asked are way, way, way harder than the real exam. If you can rock this, you are well prepared for the real deal. Do not get me wrong, the real exam is still a serious challenge.
The free online video course How to Prepare for the CKA Exam provides you with a good additional summary. A similar Kubernetes Fundamentals training is provided free of charge at Kube By Example. This course will walk you through most of Kubernetes’ core concepts in bite-sized videos.
As the CKA and CKAD exams share some knowledge domains, the CKAD-exercises repository by Dimitrios Ilias Gkanatsios is a beautiful collection of example exercises including solutions. This is worth checking out to gain confidence with hands-on tasks.
Finally, there is KodeKloud’s free Game of PODs. This course will provide you with a mixture of video lessons, hands-on challenges, and a fair bit of gamification.
Last Thoughts and Random Tips
This last paragraph will be around random tips and tricks.
Before doing anything, configure your
.bashrc with the autocomplete code found at the very top of the cheat sheet (linked above). Next, configure your
.vimrc to your liking. As you will mainly work with manifest files written in YAML, I found the following configuration to be perfect for this exam:
syntax on " enable syntax highlighting
set list " display hidden characters, like <TAB>
filetype plugin indent on " enables the filetype plugin for indentation
set number " enable line numbers
set expandtab " insert spaces instead of <TAB>
set softtabstop=2 " number of spaces in <TAB>
set autoindent " copy indentation level from previous line
set shiftwidth=2 " number of spaces to auto-indent with >>
Every question of the exam will be weighted. A strategy can be to skip harder questions with a low weight first and come back to them later. You can flag questions for this purpose.
You read be fast everywhere. Generally, if you do not feel comfortable with Linux and the mentioned CLI tools, study this first. Otherwise, always use tab autocomplete as soon as possible. In my opinion,
ku<TAB> is equally fast as setting
alias k="kubectl" in your shell.
If you skim the documentation in your second allowed web browser tab, use your web browser’s find command (Ctrl/Cmd + F) and search for the word kind. In concept documentation, this will help you to find code blocks with examples fast. Adding to this, I want to remind you to use the cheat sheet.
Be aware of input lag. Your computer will be sharing both your monitors, your webcam and communicate with the web-based terminal. Make sure to double-check what you have copied and pasted before hitting Enter.
Now go ahead, learn, purchase an exam voucher, use the included Killer Shell sessions, schedule the exam, and rock it!