The Certified Kubernetes Administer (CKA) and Certified Kubernetes Application Developer (CKAD) exams may look daunting and intimidating. This is certainly what I thought and felt when I had scheduled my CKA and CKAD earlier this year. Even though I had prior experience working with Kubernetes I still wanted to prep myself for the exams accordingly.

After passing both of these exams I reflected back on my studies and thought about what helped prepare me the most. The following few items are what had helped me the most in terms of preparation.

Kubernetes in Action

When I first started using Kubernetes for work I was overwhelmed with the sheer amount of resources, commands, and paradigms that are offered. So I decided to purchase a few books on Kubernetes. After reading them all cover to cover the one book that I found to stand out from the rest was Kubernetes in Action by Marko Luska. This book gives you a very detailed and in depth explanations on how things work and how to use them. If you have zero knowledge about Kubernetes after reading this book you will have a deep breadth of knowledge.

I find myself still using this book as a reference if I want to refresh myself on how the inner workings for a certain resource or components works.

Imperative Declarations

One thing I always struggle with is remembering all of the specific yaml definitions for all of the Kubernetes Kinds and Groups. Instead of trying to memorize all of them I rely on imperative declarations to help me get the yaml setup.

For example let’s say I wanted to create a node port service. The nodeport should be exposed on 3000 the service should listen on 80 and forward requests to 8080 . To do this with an imperative command we would write the following:

~  kubectl create service nodeport "medium-example" --tcp=80:8080 --node-port=3000 \
--dry-run=client -o yaml > medium-example.yaml

~  cat medium-example.yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: medium-example
  name: medium-example
spec:
  ports:
  - name: 80-8080
    nodePort: 3000
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: medium-example
  type: NodePort
status:
  loadBalancer: {}

As you see we don’t have to write out the entire yaml by hand. The only thing we would have to check is the selector to make the proper pods are added to the service.

To learn more about imperative commands :

https://kubernetes.io/docs/tasks/manage-kubernetes-objects/imperative-command/

Kubernetes Documentation

Knowing how to read and maneuver the Kubernetes documentation quickly may not seem handy but trust me it is. Remember that during any of the Certified Kubernetes exams you are allowed to have 1 tab open to use https://kubernetes.io/docs/home/. This is why knowing how to read and use the k8 docs quickly can be beneficial.

Lets say that during the exam if you don’t remember how Persistent Volume Claims host should be mounted to pods. No problem, if you know how to use the docs you can quickly figure this out. If you don’t know how to use or read the docs you might end up wasting too much time clicking between docs trying to find what you need.

Practice, Practice, Practice

If there is one recommendation anyone was to take away it is practice. I can not stress this enough the more you practice and get comfortable working with Kubernetes the easier the exam will be. It’s easy to understand how PV and PVCs or each Service type works. However, it’s a different story once you have to take all of your knowledge and start writing yaml to connect all the pieces together.

To wrap up

There are purely my recommendations on what I found to have helped me the most during my studies for the CKA and CKAD. You might find that these recommendations don’t work for you and that is totally fine!

Here are some honorable mentions for exam preparation as well