You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> **⭐ If this repo helps you pass the CKAD, a star helps other candidates find it.**
16
+
9
17
# CKAD Certification Guide 2026 — How I Passed with 91%
10
18
11
19
<palign="center">
@@ -26,30 +34,39 @@ Short on time? Here's the fast track:
26
34
27
35
1.**Run the setup script** — `bash scripts/exam-setup.sh` to get aliases, vim config, and tab completion
28
36
2.**Memorize the skeletons** — skim [`skeletons/`](skeletons/) once, then practice writing each from memory
29
-
3.**Do exercises 1, 3, 5, 6, 10** — they cover pods, ConfigMaps, NetworkPolicy, rolling updates, and security (the highest-weighted domains)
30
-
4.**Take the mock exam below** — 17 questions, 70% weight coverage. Time yourself (5–8 min per question)
31
-
5.**Run killer.sh** — do both sessions. Review every wrong answer. Repeat the weak topics
32
-
6.**Read [Exam Day Strategy](#exam-day-strategy) and [Common Mistakes](#mistakes-that-will-fail-you)** the night before
37
+
3.**Do exercises 1, 3, 5, 6, 10, 11** — they cover pods, ConfigMaps, NetworkPolicy, rolling updates, security, and StatefulSets (the highest-weighted domains)
38
+
4.**Run the interactive quiz** — `bash scripts/quiz.sh` for timed practice with auto-verification
39
+
5.**Take the mock exam below** — 17 questions, 70% weight coverage. Time yourself (5–8 min per question)
40
+
6.**Run killer.sh** — do both sessions. Review every wrong answer. Repeat the weak topics
41
+
7.**Read [Exam Day Strategy](#exam-day-strategy) and [Common Mistakes](#mistakes-that-will-fail-you)** the night before
33
42
34
43
If you score 80%+ on the mock exam **and** 70%+ on killer.sh, you're ready. Book the exam.
35
44
45
+
> **Every exercise includes a `verify.sh` script** — run it after you attempt the exercise to auto-check your work: `bash exercises/01-pod-basics/verify.sh`
46
+
36
47
### Repo Structure
37
48
38
49
```
39
50
README.md # This guide
40
-
exercises/ # 10 hands-on labs (one per folder)
41
-
01-pod-basics/
42
-
02-multi-container-pod/
43
-
03-configmap-secret/
44
-
04-rbac/
45
-
05-networkpolicy/
46
-
06-rolling-update/
47
-
07-helm/
48
-
08-probes/
49
-
09-ingress-gateway/
50
-
10-security-pvc/
51
-
skeletons/ # Bare YAML templates for quick reference
52
-
scripts/exam-setup.sh # Aliases + vim config (run first thing)
51
+
exercises/ # 14 hands-on labs (one per folder, each with verify.sh)
52
+
01-pod-basics/ # Easy
53
+
02-multi-container-pod/ # Medium
54
+
03-configmap-secret/ # Medium
55
+
04-rbac/ # Medium
56
+
05-networkpolicy/ # Hard
57
+
06-rolling-update/ # Medium
58
+
07-helm/ # Medium
59
+
08-probes/ # Medium
60
+
09-ingress-gateway/ # Hard
61
+
10-security-pvc/ # Hard
62
+
11-statefulset/ # Hard ← NEW
63
+
12-daemonset/ # Medium ← NEW
64
+
13-init-containers/ # Medium ← NEW
65
+
14-in-place-scaling/ # Hard ← NEW (v1.35 GA feature)
66
+
skeletons/ # 14 bare YAML templates for quick reference
67
+
scripts/
68
+
exam-setup.sh # Aliases + vim config (run first thing)
69
+
quiz.sh # Interactive terminal quiz with auto-verification
53
70
CONTRIBUTING.md
54
71
LICENSE
55
72
```
@@ -3286,6 +3303,101 @@ spec:
3286
3303
3287
3304
</details>
3288
3305
3306
+
<details>
3307
+
<summary>StatefulSet + Headless Service</summary>
3308
+
3309
+
```yaml
3310
+
apiVersion: apps/v1
3311
+
kind: StatefulSet
3312
+
metadata:
3313
+
name: myapp
3314
+
spec:
3315
+
serviceName: myapp-headless
3316
+
replicas: 3
3317
+
selector:
3318
+
matchLabels:
3319
+
app: myapp
3320
+
template:
3321
+
metadata:
3322
+
labels:
3323
+
app: myapp
3324
+
spec:
3325
+
containers:
3326
+
- name: app
3327
+
image: nginx:1.25
3328
+
ports:
3329
+
- containerPort: 80
3330
+
volumeMounts:
3331
+
- name: data
3332
+
mountPath: /data
3333
+
volumeClaimTemplates:
3334
+
- metadata:
3335
+
name: data
3336
+
spec:
3337
+
accessModes:
3338
+
- ReadWriteOnce
3339
+
resources:
3340
+
requests:
3341
+
storage: 1Gi
3342
+
---
3343
+
apiVersion: v1
3344
+
kind: Service
3345
+
metadata:
3346
+
name: myapp-headless
3347
+
spec:
3348
+
clusterIP: None
3349
+
selector:
3350
+
app: myapp
3351
+
ports:
3352
+
- port: 80
3353
+
targetPort: 80
3354
+
```
3355
+
3356
+
</details>
3357
+
3358
+
<details>
3359
+
<summary>DaemonSet</summary>
3360
+
3361
+
```yaml
3362
+
apiVersion: apps/v1
3363
+
kind: DaemonSet
3364
+
metadata:
3365
+
name: myagent
3366
+
spec:
3367
+
selector:
3368
+
matchLabels:
3369
+
app: myagent
3370
+
template:
3371
+
metadata:
3372
+
labels:
3373
+
app: myagent
3374
+
spec:
3375
+
tolerations:
3376
+
- key: node-role.kubernetes.io/control-plane
3377
+
effect: NoSchedule
3378
+
containers:
3379
+
- name: agent
3380
+
image: fluentd:v1.16-1
3381
+
resources:
3382
+
requests:
3383
+
cpu: 50m
3384
+
memory: 64Mi
3385
+
limits:
3386
+
cpu: 100m
3387
+
memory: 128Mi
3388
+
volumeMounts:
3389
+
- name: host-logs
3390
+
mountPath: /var/log
3391
+
readOnly: true
3392
+
volumes:
3393
+
- name: host-logs
3394
+
hostPath:
3395
+
path: /var/log
3396
+
type: Directory
3397
+
```
3398
+
3399
+
</details>
3400
+
3289
3401
<details>
3290
3402
<summary>SecurityContext</summary>
3291
3403
@@ -3415,7 +3527,13 @@ The stuff I practiced was the stuff that showed up. If something in this guide i
0 commit comments