Over the last year I've been involved into dozen interesting projects with docker containers and kubernetes as an orchestrator. Great thing is that I was able to deal with the technologies using real world examples, - from the hard way to managed AKS, from manual yaml / json manifest ingestion to fully automated CI / CD using Azure DevOps (or / and some other tools) with all kind of bells and whistles. I'm pretty sure for any tech guy having hands on is crucial and is always priority, especially in such complicated and delicate topic as microservices.
Tr;dr .. Few months earlier I found Cloud Native Computing Foundation (CNCF) with two interesting exams, - CKAD and CKA and realized that I have to sit them down and pass since they are exactly what I do. Sometimes, especially when you deal with something new you really want to look into someone else's configuration and make sure you are on the right track or / and make an enhancements in your configuration. Both have been cleared shortly and I'd like to highlight some of the things that helped me very much (I did CKAD first). With respect to the NDA, this article might open eyes or / and change mind of someone who intends to attend these exams.
A little remark. Back in 2019 I did both CKAD and CKA, but did not put on paper my recommendations for future passers. Well, I actually did a little bit, but it is more like a feedback and what to expect. What I would like to do in this post is to share some of the things that really helped me to prepare and clear the exams.
Make sure you are not doing this just because of certificate. You don't really need this if you are not using / planning to use this technology in your daily operations. Things are moving so fast, so if you pass it today and doing something else for the next months you'll probably have to re-learn lots of new things.
Certified Kubernetes Application Developer (CKAD)
The successful candidate will be comfortable using:
- An OCI-Compliant Container Runtime, such as Docker or rkt.
- Cloud native application concepts and architectures.
- A programming language, such as Python, Node.js, Go, or Java.
This exam curriculum includes these general domains and their weights on the exam:
- 13% – Core Concepts
- 18% – Configuration
- 10% – Multi-Container Pods
- 18% – Observability
- 20% – Pod Design
- 13% – Services & Networking
- 8% – State Persistence
Time is the big issue here. You have 120 minutes and 19 tasks (~ 6.5 minutes per task).
The passing score is 66 our of 100.$$
Certified Kubernetes Administrator (CKA)
The online exam consists of a set of performance-based items (problems) to be solved in a command line and candidates have 3 hours to complete the tasks.
The Certification focuses on the skills required to be a successful Kubernetes Administrator in industry today. This includes these general domains and their weights on the exam:
- Application Lifecycle Management 8%
- Installation, Configuration & Validation 12%
- Core Concepts 19%
- Networking 11%
- Scheduling 5%
- Security 12%
- Cluster Maintenance 11%
- Logging / Monitoring 5%
- Storage 7%
- Troubleshooting 10%
You have a bit more time per task comparing to CKAD. You have 3 hours and 24 tasks (~ 7.5 minutes per task).
The passing score is 74 out of 100 (exam details - https://www.cncf.io/certification/cka/).
Check the curriculum!
Ultimate recommendations for both
Create alias to safe time on typing:
alias kgd="k get deploy"
alias kgp="k get pods"
alias kgn="k get nodes"
alias kgs="k get svc"
Example of usage above:
kpg -ns web-development # get all pods from web-development namespace
kgs nginx -o yaml --export # exports yaml for gninx service
If you'd like to change default resource editor for objects in K8s, change env variable:
export KUBE_EDITOR="nano" # this sets editing resource to use nano
Check this k8s cheat sheet for other tips and tricks.
Know how to use generator to get resources in yaml / json. See example below, these four below give you different type of object.
kubectl run nginx --image=nginx --replicas=3 --restart=Never --dry-run -o yaml
kubectl run nginx --image=nginx --replicas=3 --restart=Always --dry-run -o yaml
kubectl run nginx --image=nginx --replicas=3 --restart=OnFailure --dry-run -o yaml
kubectl run nginx --image=nginx --replicas=3 --restart=OnFailure --schedule="0/1 * * * *" --dry-run -o yaml
NB! Pay attention to the question. If they ask you to create pod, create pod, not deployment. I used generator and piped output to file with number of the task and then jumped into the manifest and make further configuration (e.g. if some of the specifications not possible to add using CLI).
Also, explore this
Real world example ;)
For CKAD (as it is mainly tailored around kube objects and how to operate them), I'd recommend to spin up a managed cluster in Azure. Even for testing it is not that expensive (price for the month considering it runs 24x7). In order to play with different object kinds, I have a little application written on nodejs and explained how this can be deployed to AKS. This sample has also Azure DevOps pipeline (YAML), which uses ACR (Container Registry) for keeping built images and pulling from kube, it also has App Gateway for ingress.
Resources that helped
- Manage your time properly. Move to the next task if you are stuck on something (do not waste your time);
- Skip tasks with small value (return later);
- Use aliases (shortcuts), generator, export variables;
- Since it is practical exam, practice and practise again;
- You have 1 free retake, fix your weaknesses and return back if failed;
- You can one tab with https://kubernetes.io/docs/home/ or https://github.com/kubernetes during the exam. Just make sure you are familiar with finding what you are looking for quickly.