Skip to content

CKAD exam tips

A Quick Reference Guide to Passing the CKAD Exam

Section titled “A Quick Reference Guide to Passing the CKAD Exam”

This guide synthesizes practical tips from multiple CKAD candidates and training resources. The passing score is 66% (125 points) — you don’t need perfection. Easy questions are worth as much as hard ones — prioritize accordingly.


Key facts to know:

  • Passing score: 66% (125 points) — you don’t need perfection
  • Aim for 75%+ on practice exams to have a comfortable margin
  • 120 minutes for 15-20 questions = 5-7 min per question average
  • This certification is essentially a test of speed
  1. Green (Easy): Questions you can solve immediately
  2. Yellow (Medium): Questions requiring some thought
  3. Red (Hard): Questions you’re unsure about

Strategy:

  • Read all questions without solving before starting
  • First pass: Solve all green questions immediately
  • Second pass: Tackle yellow questions
  • Third pass: Return to red questions with remaining time
  • Skip hard questions if spending >10 minutes on any single one
  • Flag uncertain questions and return later

Remember: Take a breath—panic hurts more than helps.

  • Clean, quiet, private space with no distractions
  • Test internet speed (minimum 5 Mbps download)
  • Bookmark the Kubernetes documentation page before the exam
  • Configure your .bashrc with shortcuts before exam day
Terminal window
# Force flag alias
export f='--force'
# Namespace switching alias
kn() { kubectl config set-context --current --namespace "$1"; }
# Show current context
kshow() { kubectl config current-context; }
# Dry-run output flag
export do="--dry-run=client -o yaml"
# Quick namespace operations
alias kg="kubectl get"
alias ks="kubectl set"
Terminal window
# Deployment
kubectl create deployment name --image=image --replicas=3
# ConfigMap
kubectl create configmap name --from-literal=key=value
# Secret
kubectl create secret generic name --from-literal=key=value
# Service
kubectl expose deployment name --port=80 --target-port=80
# Namespace
kubectl create namespace name
Terminal window
# Always specify namespace explicitly
kubectl get pods -n namespace
# Switch namespace quickly
kubectl config set-context --current --namespace=production
Terminal window
# Pod status
kubectl get pods
# Pod details
kubectl describe pod name
# Pod logs
kubectl logs pod-name
# Events
kubectl get events
# Events sorted by timestamp
kubectl get events --sort-by=.lastTimestamp
  • Be very comfortable with Vim and YAML manipulations
  • Practice these motions for rapid editing:
Command Action
i Insert before cursor
I Insert at beginning of line
A Append at end of line
dd Delete current line
D Delete from cursor to end of line
V Select whole lines
> / < Indent or unindent
ZZ Save and exit
  • Learn to search in the official documentation using kubectl explain
  • Helm documentation is allowed during the exam — bookmark it
  • Use kubectl explain when field placement is unclear
Terminal window
kubectl explain deployment.spec.template.spec.containers.resources
kubectl explain pod.spec.securityContext
kubectl explain networkpolicy.spec.ingress
Terminal window
# Generate YAML without creating
kubectl create deploy myapp --image=nginx --replicas=3 --dry-run=client -oyaml > deploy.yaml
# Create and save to file
kubectl run my-nginx --image=nginx --port=80 --dry-run=client -o yaml > pod.yaml
kubectl apply -f pod.yaml
Terminal window
# Force delete pods to save time
kubectl delete pod name --force --grace-period=0
# Delete all resources
kubectl delete all --all
  • Requests must be less than limits for resources
  • Use realistic values (Mi, not Gi for most apps)
  • Use public images (nginx, postgres, etc.) unless question specifies otherwise
  • Verify that Service selectors match pod labels
  • Check that Ingress rules route to correct Service
  • Confirm that NetworkPolicy allows traffic from expected pods
  • Always verify which namespace you’re in before creating resources
  • Use -n namespace explicitly rather than switching contexts
  • Double-check namespace before starting each question
  • Don’t trust Running status without checking readiness
  • Always verify endpoints are populated
  • Confirm the exact required behavior is achieved
Terminal window
kubectl get pods
kubectl describe pod name
kubectl logs pod-name
kubectl logs pod-name -c container-name # multi-container
Terminal window
kubectl get svc
kubectl get endpoints name
kubectl describe svc name
kubectl get endpoints <service-name>
Terminal window
kubectl rollout status deployment/name
kubectl rollout history deployment/name
kubectl rollout undo deployment/name
kubectl describe deployment name
Terminal window
kubectl get pods --show-labels
kubectl run curl --image=curlimages/curl:latest -it --rm --restart=Never -- sh
kubectl exec -it <pod> -- wget -qO- http://<service-name>
Terminal window
kubectl get events --sort-by=.lastTimestamp
kubectl get pods,svc,deploy,ingress -o wide
  1. Practice is the key for mastering the material
  2. Use Killer.sh for realistic training (it’s a little harder than the actual exam)
  3. Switch contexts quickly using aliases
  4. Determine the environment first: Which context and which namespace?
  5. Easy questions are worth as much as hard ones — don’t get stuck
  6. 66% is passing—you don’t need perfection

This guide synthesizes practical tips from multiple CKAD candidates and training resources. Always verify current exam details on the Linux Foundation CKAD page.