June 2nd, 2020 written by Sam Griffith
Originally Published on alta3.com
I was the first person to become a Certified Kubernetes Application Developer at my company, so I naturally have received a lot of questions from my coworkers about it and how to pass it.
Of course, I told them you need to practice. And you need to have a fairly good idea about how different resources in Kubernetes work together. You also should repeat all of the hands-on exercises that I helped to create until you can do it all from muscle memory.
But trying to do all of the required tasks for the exam in two hours is hard. Especially if you have not been using Kubernetes for a long time. So, if your goal is to pass the CKAD exam, here is my suggestion:
The CKAD exam is an open-book test. Although you are not allowed anything on or near your desk and no physical books are allowed, you are allowed one tab open to the test and one tab open to the Official Kubernetes Documentation page.
Using the documentation is a good way to look up anything that you have forgotten, like how to use a ConfigMap inside of a Pod, or how much to indent a field in your manifest.
But here is an even better plan:
Know what you are expected to know, and set your browser up for success with the Kubernetes Documentation.
So first question is:
What topics are you expected to know?
Thankfully, the Cloud Native Computing Foundation (CNCF) has put together an outline of “Knowledge, Skills, and Abilities that a Certified Kubernetes Application Developer (CKAD) can be expected to demonstrate.” If you want to see it on their GitHub page, take a look at this link:
The information provided in this outline is a good starting point. But it does not show you where to go to find this information.
Below are all of the categories and specific topics that you will be tested on during the CKAD exam, as well as links to the official documentation that you can use during the exam.
These are also excellent links to read through and practice with as you prepare for exam day.
You need to understand what the core components of a Kubernetes cluster are and how they interact with each other.
- Understand Kubernetes API Primitives https://kubernetes.io/docs/concepts/overview/components/
- Create and configure basic Pods https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/#pod-templates
You need to be capable of altering a Pod manifest to include multiple containers, which then can interact with each other.
- Understand Multi-Container Pod design patterns (e.g. ambassador, adapter, sidecar) https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns/
You need to be able to comfortably use Labels and Selectors inside of your Pods in order to get Deployments, Jobs, and other resources to work with your Pods.
- Understand Deployments and how to perform rolling updates https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment
- Understand Deployments and how to perform rollbacks https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-back-a-deployment
- Understand Jobs and CronJobs https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#running-an-example-job & https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#cronjob
- Understand how to use Labels, Selectors, and Annotations https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set & https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set
You need to be capable of configuring a Pod to use a PersistentVolumeClaim to call dibs on some storage (a PersistentVolume).
- Understand PersistentVolumeClaims for storage https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
You need to be able to alter the basic Pod configuration to fit your cluster’s specifications for security and resource usage.
- Understand ConfigMaps https://kubernetes.io/docs/concepts/configuration/configmap/#configmaps-and-pods
- Understand SecurityContexts https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
- Define an application’s resource requirements https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory
- Create & Consume Secrets https://kubernetes.io/docs/concepts/configuration/secret/#creating-your-own-secrets
- Understand ServiceAccounts https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
You need to be able to troubleshoot Pods and other resources using data that you are able to gather and inspect.
- Understand LivenessProbes and ReadinessProbes https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-http-request & https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes
- Understand container logging https://kubernetes.io/docs/concepts/cluster-administration/logging/#basic-logging-in-kubernetes
- Understand how to monitor applications in Kubernetes https://kubernetes.io/docs/tasks/debug-application-cluster/resource-usage-monitoring/#resource-metrics-pipeline
- Understand debugging in Kubernetes https://kubernetes.io/docs/tasks/debug-application-cluster/
You need to be able to use a NetworkPolicy to allow certain types of communication between Pods and other sources.
- Understand Services https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
- Demonstrate basic understanding of NetworkPolicies https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource
Instead of searching through the Kubernetes documentation to try to find these topics, do yourself a favor: remove all of those old bookmarks you haven’t looked at in six months and prepare your browser by bookmarking every single one of the links above and any other Kubernetes Documentation that you find useful.
- Step 1 Download Alta3’s CKAD BookmarksNote: This is really an HTML file. But browsers think they have to display all html files, so in order to download the file, it has to have a non
.htmlfile extension, hence the
.download. If you would prefer to use your browser to view the original html, you can click here.
- Step 2 Rename the fileRemove the
.downloadfile extension from the file name.
- Step 3 Import ALL THE BOOKMARKS YOU NEED TO PASS THE CKAD
Once you do that, you are essentially walking in to an open-book test with your book in hand and all of the answers marked.
Good luck on your exam!