Extras
Mock Exam (CKA-style)
10 tasks, 45 points, 60 minutes, graded against a real cluster. This preview shows the task list — the timer, grading, and cluster setup only run in the real local course.
Create a Pod named `exam-pod-1` in namespace `mock-exam` using image `nginx:1.27`, with the label `tier=frontend`.
Create a Deployment named `exam-web` in namespace `mock-exam` running 3 replicas of `nginx:1.27`.
A Deployment named `exam-api` already exists in `mock-exam` with 2 replicas. Scale it to 4 replicas.
A Service named `exam-svc` in `mock-exam` has a selector that doesn't match any pod. Fix it so it has ready endpoints pointing at the pods labeled `app=exam-api`.
Create a ConfigMap named `exam-config` in `mock-exam` with key `LOG_LEVEL=debug`. Create a Pod named `exam-config-pod` using image `busybox:1.36` (command: sleep 3600) that consumes `LOG_LEVEL` as an environment variable sourced from that ConfigMap.
A Deployment named `exam-probe` in `mock-exam` has a readiness probe pointing at the wrong port, so its pods never become Ready. Fix it.
A PersistentVolumeClaim named `exam-pvc` in `mock-exam` is stuck Pending because of a bad `storageClassName`. Fix it, then create any Pod that mounts it — this StorageClass uses WaitForFirstConsumer binding, so it won't bind until something actually claims to use it.
Create a CronJob named `exam-cron` in `mock-exam` that runs every minute (`*/1 * * * *`), using image `busybox:1.36`, running the command `echo hello`.
Taint node `k8s-course-worker2` with `exam=true:NoSchedule`. Then create a Pod named `exam-toleration-pod` in `mock-exam` using image `busybox:1.36` (command: sleep 3600) with a toleration for that taint, and confirm it actually lands on `k8s-course-worker2`.
Create a ServiceAccount named `exam-reader` in `mock-exam`. Grant it permission to get, list, and watch Pods in that namespace only (not cluster-wide), via a Role and RoleBinding.