The Certified Kubernetes Application Developer (CKAD) exam tests your ability to design, build, expose, and troubleshoot cloud-native applications running inside Kubernetes clusters.
TL;DR (Quick Summary)#
- Exam Format: 100% hands-on performance-based exam (15-18 tasks). Duration: 2 hours. Passing Score: 66%.
- Core CKAD Domains:
- Application Design and Build (20%)
- Application Deployment (20%)
- Application Observability and Maintenance (15%)
- Application Environment, Configuration and Security (25%)
- Services and Networking (20%)
- Imperative Speed Tricks: Use
kubectl run --dry-run=client -o yamlto generate manifests in seconds.
1. Imperative Command Speed Sheet (Crucial for CKAD)#
Never write YAML manifests from scratch during the CKAD exam! Use imperative commands to generate stubs:
# 1. Create a Pod stub
kubectl run nginx-pod --image=nginx:1.25 --dry-run=client -o yaml > pod.yaml
# 2. Create a Deployment stub (3 replicas)
kubectl create deployment web-app --image=nginx:alpine --replicas=3 --dry-run=client -o yaml > deployment.yaml
# 3. Create a Service stub
kubectl expose deployment web-app --port=80 --target-port=8080 --type=ClusterIP --dry-run=client -o yaml > service.yaml
# 4. Create a CronJob running every 5 minutes
kubectl create cronjob backup-job --image=busybox --schedule="*/5 * * * *" --dry-run=client -o yaml -- bin/sh -c "date" > cronjob.yaml2. Deployment Strategies Comparison#
graph TD
subgraph Rolling Update (Default)
V1["Version 1.0 (2 Replicas)"] -->|Step 1| V1_1["V1.0 (1) + V2.0 (1)"]
V1_1 -->|Step 2| V2["Version 2.0 (2 Replicas)"]
end
subgraph CanaryDeployment ["Canary Deployment"]
Prod["Production Service"] -->|90% Traffic| V1_Pods["V1.0 Pods (app=web, track=stable)"]
Prod -->|10% Traffic| V2_Pods["V2.0 Pods (app=web, track=canary)"]
end
| Strategy | Zero Downtime | Resource Cost | Rollback Speed | Typical Use Case |
|---|---|---|---|---|
| RollingUpdate | Yes | Low (+maxSurge) | Moderate | Default for stateless microservices. |
| Recreate | No (Downtime) | Low | Fast | Applications with single-writer databases. |
| Blue-Green | Yes | High (200% Capacity) | Instant (Switch Service Selector) | Mission-critical monolithic apps. |
| Canary | Yes | Low (+1 Replica) | Fast | A/B testing or gradual production releases. |
3. Step-by-Step Lab 1: Implementing Liveness & Readiness Probes#
A common CKAD task requires adding HTTP probes to detect deadlocks or unready containers.
Defining Probes Manifest#
Create probed-pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: probe-demo
spec:
containers:
- name: web
image: nginx:alpine
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 2
periodSeconds: 5Apply and inspect probe execution:
kubectl apply -f probed-pod.yaml
kubectl describe pod probe-demo | grep -E "Liveness|Readiness"4. Step-by-Step Lab 2: Jobs and CronJobs#
Create a Job that processes 5 items with a concurrency of 2.
apiVersion: batch/v1
kind: Job
metadata:
name: batch-processor
spec:
completions: 5
parallelism: 2
template:
spec:
containers:
- name: worker
image: busybox
command: ["sh", "-c", "echo Processing item... && sleep 3"]
restartPolicy: OnFailureApply and watch completion:
kubectl apply -f batch-processor.yaml
kubectl get jobs -w5. Troubleshooting & Common CKAD Pitfalls#
Pitfall 1: Invalid restartPolicy on Jobs#
- Pod Spec:
restartPolicy: Always(Default for Deployments/Pods). - Job Spec:
restartPolicy: OnFailureorNever. UsingAlwaysinside a Job causes immediate manifest rejection!
Pitfall 2: Secret Mount Permission Denied#
When mounting secrets, ensure readOnly: true is set on volumeMounts.
Summary & Next Steps#
In this guide:
- We mastered imperative
kubectlgeneration speed tricks. - We analyzed RollingUpdate vs Canary vs Blue-Green deployment strategies.
- We built Liveness and Readiness HTTP probes.
- We configured parallel batch Jobs and CronJobs.
Next, we move to the security-focused Certified Kubernetes Security Specialist (CKS) master guide!

