How it all started:

A bit about me: I started my journey into learning about container orchestration a few years ago after becoming familiar with working in virtualized environments (mostly Vagrant w/ either Ubuntu or CentOS installations) via several developer and administrator courses that I had enrolled in at MongoDB University. It didn't take long for curiosity to get the best of me and  I  fast developed an interest in the world of containerized applications with Docker.

The Learning Path:

I signed up for several  Docker & Kubernetes courses (..beginning with introductory level courses, then on to intermediate & advanced courses) at Udemy, Pluralsight, KodeKloud, and the Linux Academy (now A Cloud Guru):

Docker for the Absolute Beginner - Hands On - DevOps - Udemy

Kubernetes for the Absolute Beginners - Hands-on - Udemy

DevOps Pre-Requisite Course - KodeKloud

The Linux Basics Course - KodeKloud

KodeKloud Engineer - KodeKloud

Docker - SWARM - Hands-on - DevOps - Udemy

Kubernetes Mastery: Hands-On Lessons From A Docker Captain - Udemy

Kubernetes Course from a DevOps guru (Kubernetes + Docker) - Udemy

Docker for Node.js Projects From a Docker Captain - Udemy

Docker Mastery: with Kubernetes +Swarm from a Docker Captain - Udemy

Kubernetes Certified Application Developer (CKAD) with Tests - Udemy

Kubernetes for Developers: Core Concepts - Pluralsight

Docker for Web Developers - Pluralsight

Certified Kubernetes Application Developer (CKAD) - KodeKloud

Certified Kubernetes Application Developer (CKAD) - Linux Academy/A Cloud Guru

Books

I read books:

Docker Deep Dive (Kindle Books)

Kubernetes: Preparing for the CKA and CKAD Certifications (Kindle Books)

Certified Kubernetes Application Developer Exam Study Notes: A guide to prepare for CKAD exam (Kindle Books)

Mastering  Kubernetes: Level up your container orchestration skills with  Kubernetes to build, run, secure, and observe large-scale distributed  apps, 3rd Edition (Kindle Books)

KUBERNETES: A Simple Guide to Master Kubernetes for Beginners and Advanced Users  (2020 Edition) (Kindle Books)

The Ultimate SRE/DevOPS Reference: Kubernetes: Advanced Kubernetes Topics (2020 Edition) (Kindle Books)

The Kubernetes Book: Version 2.2 - January 2018 (Kindle Books)

Blogs

I read as many blogs as I could find the time to read. Here are a few that I found to be helpful:

Practice Enough With These 150 Questions for the CKAD Exam

CNCF Certified Kubernetes Administrator or Developer CKA(D) Exam Practice Examples, Dumps & Tips

CKAD Exam Notes

Kubernetes DNS for Services and Pods

Kubernetes — Learn Ambassador Container Pattern

Setup Own Kubernetes Cluster via Virtualbox

Kubernetes CKAD Example Exam Questions Practical Challenge Series

Kubernetes Ingress — Simplified · Scaleout Ninja

..and of course, don't forget to read the docs!!

Kubernetes Documentation

Practice

I practiced and then I practiced some more!

I built several Kubernetes clusters on my machine. I also heavily utilized the practice labs provided by the(CKAD) - KodeKloud course labs & the temporary 3 node cluster that I was allowed to build thanks to the resources provided by the (CKAD) - Linux Academy/A Cloud course.

The exam

Important Instructions: CKA and CKAD

The exam environment:

There are 19 tasks given and you have 2 hours to complete the exam. I have read many stories about people running out of time before attempting to get to all to of the tasks, especially on the first attempt. This is precisely what happened to me.  Luckily for me and for anyone wanting to take the CKAD exam, the Linux Foundation provides exam takers with one free retry.

One bummer in my opinion is that you are only allowed one terminal window during the exam. This really stressed me out! Learning tmux was a bonus in this regard. It can be comforting to know that it is possible open up a new terminal window pane to do any extra logging, debugging, or searching for labels associated with any available services  &/or network policies if needed, etc... I didn't care for it at first, but now I quite like working with it now that I've become more familiar with the command required to open up split panes, etc... It took a bit of getting used to, but now working with tmux comes to me like second nature.

I also encountered some severe formatting errors when attempting to copy & paste from the Kubernetes docs to the exam terminal window.  This, unfortunately slowed me down quite a bit on my first attempt, which led to frustration, which then led to confusion (& stress!!) after having wasted too much time trying to reformat yaml files.

Time saving tip(s):

To avoid the severe formatting errors that can take place when copy/pasting directly from the docs use :set paste  THEN i before pasting from the Kubernetes docs into the vi/vim editor to avoid major formatting errors!!

Trust me on this one. It can mean the difference between a big mess and a less stressful experience. Here is an example of a direct copy/paste (before any editing on my local vim editor on my Ubuntu VM installation) from the docs without :set paste and then with :set paste on the right:

Use Aliases & Auto completion

Auto completion is helpful, as is using aliases. Unfortunately, there is no option to use your own custom aliases. You are only allowed to have one open tab to  the Kubernetes documentation during the exam, so there is no way to copy/paste your own custom aliases.  Do the best that you can in this regard and try to learn/remember as many Kubernetes shortcut commands that you can to save time when creating &/or editing resources:

k get po
k get rs
k get deploy
k get netpol
k get cj
k get svc 
k get ns
k get sa
k get pv
k get pvc

Remember to save resource yaml files before deleting resources!

I made the mistake of not saving resources before recreating them in the right order on my first attempt. That's a big mistake. I repeat: don't delete resources before saving their associated yaml manifest files first.

Bookmark examples

I created a ton of bookmarks from the docs and I made it a point to put them in alphabetical order for quick reference.

Utilize the notepad provided

As mentioned above, Even though I was not able to use my own aliases, I was at least able to add a few in to the provided notepad for copy/pasting into the terminal:

alias k=kubectl
alias kr="kubectl run"
alias k="kubectl describe"
alias kaf="k apply -f"

....speaking of the notepad, I also used it to take note of any tasks that I was having issues with so that I could move on if stuck & come back later.

Watch out for deprecated commands!

The best way to avoid this is to practice on an install with the most recent version of Kubernetes available.

For example:

The  --restart=Never command is no longer needed to spin up a pod on the fly in Kubernetes v1.21.0. It can and is useful for spinning up a temporary busybox pod to test connectivity to another pod via wget like so:

k run test --image=busybox --restart=Never -n default --rm -it -- wget -o- <nginx-pod-ip>

...but is not needed to generate, say for example, an nginx pod and you may even end up with an error if asked to spin up a pod that is meant to continue running.

Note restartPolicy: Never on lhe left vs the current default restartPolicy: Always on the right below:

If you are unsure of whether or not a command is deprecated or not, double check commands in your local environment like so:

k run pod --help

Always declare a namespace

I also made it made it a point to always declare a namespace when creating/editing any resources (even if in the default namespace…ie., -n default). I made it a point to practice this way…so as not to forget to pay attention to the namespace of an object, etc…

In Conclusion

Well, that's it for now. I may update this post as time passes &/or as anything else comes to mind that I may have forgotten. In no way am I saying that it is necessary for everyone to take all of the courses in order to pass the CKAD exam, though for some people who are new to the world of DevOps & containerized application, it may be.  It all depends on the foundation that you have to stand on to begin with when attempting to learn about Kubernetes from a developer's perspective.  I needed a bit of help with my foundation before continuing on to CKAD focused courses, so hopefully this post will help others who are new to DevOps and Kubernetes to understand what may lie ahead of them on this journey.

Cheers:-)