Sample CKAD exercises and solutions
- A set of sample questions and solutions to assist in preparing for the CKAD exam
- Use the CKAD tips and tricks repository for various tips and tricks in the CKAD exam
- Assumed practice environment is Docker Desktop with a Windows Subsystem for Linux backend
- The current version of Kubernetes in the CKAD exam can be found here
Disclaimer
- Opinions expressed here are solely my own and do not express the views or opinions of JPMorgan Chase.
- Any third-party trademarks are the intellectual property of their respective owners and any mention herein is for referential purposes only.
Questions by Domain
- Example CKAD Application Design and Build Q&A
- Example CKAD Application Environment, Configuration and Security Q&A
- Example CKAD Application Deployment Q&A
- Example CKAD Services and Networking Q&A
- Example CKAD Observability and Maintenance Q&A
- Example CKAD Miscellaneous Q&A
Docker Desktop Setup
Linux access to Docker desktop
- Windows Subsystem for Linux requires you to install a Linux distribution from the Microsoft Store.
- Tick the 'Use the WSL 2 based engine' under the 'General' panel
- To mimic the CKAD exam please execute all the commands in this repo from this Linux distribution that you installed.
- The CKAD exam terminal is Ubuntu based.
- Start the distribution directly by searching for Ubuntu and starting the application
Prerequisite software for Docker desktop
Please install these software components, required to answer questions in later sections:
Metrics Server - Kubernetes top command
Metrics Server installs into Kubernetes
By default the metrics server required for the kubectl top
command is not present on Docker Desktop.
Please install the metrics server with the following command:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl patch deployment metrics-server -n kube-system --type 'json' -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--kubelet-insecure-tls"}]'
Contour Ingress - Kubernetes Ingress Controller
Contour installs into Kubernetes
By default the Contour Ingress required for the Ingress Networking question is not present on Docker Desktop.
Please install the contour ingress with the following command:
kubectl apply -f https://projectcontour.io/quickstart/contour.yaml
Calico - Kubernetes Container Network Interface (CNI)
Calico installs into Kubernetes
Calico is required for the non native Kubernetes resources lookup question.
curl https://docs.projectcalico.org/manifests/calico.yaml | kubectl apply -f -
To work with Calico Network Policies use the following command:
kubectl get networkpolicy.p
Helm - Kubernetes Package Manager
Helm installs into WSL Linux
Please install the Helm with the following command:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
kubectl convert - Deal with deprecated API versions
kubectl convert installs into WSL Linux
Please install the kubectl convert with the following command:
curl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256"
echo "$(<kubectl-convert.sha256) kubectl-convert" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
kubectl convert --help
Octant - Kubernetes UI
Octant installs into Windows 11
- Consider installing Octant to visualize Kubernetes Resource Types
- This will help you understand the interaction and relationships between Kubernetes Resource types
- Installation instructions for Octant can be found here
Logistics
- You can follow along and cut and paste the example code snippets into your own cluster
- A single node cluster is sufficient for all examples
- All code snippets have been created and tested on Docker Desktop
- To clean up just execute commands in the "Clean Up" section at the end of each section
End of Section