Files
rootnode-academy/content/root/root-06-kubernetes-application-workloads/m03-jobs-cronjobs-daemonsets/04-guided-exercise-choosing-primitive.md
T
ced4568andClaude Sonnet 5 7f6e1857c0 feat(curriculum): Phase 6C module upgrades, security assessment bank, ROOT 11 orientation
Upgrades six PARTIAL modules to the gold-module standard (lesson/demonstration/
knowledge-check/guided-exercise/lab(s)/reflection), preserving every existing lab
activity_id and scenario_id: root-06-m03 (jobs/cronjobs/daemonsets), root-07-m04
(ingress/networkpolicy), root-07-m02 (configuration/secrets, converted in place
from a bare 5-lab bank), root-09-m02 (serviceaccounts/rbac), root-09-m03
(network/supply-chain security), root-10-m03 (troubleshooting framework).

root-05-m01 (20-task kubectl-fluency bank) gets a minimal bookending lesson +
reflection rather than a full redesign, since each task already carries its own
explanation. root-12-m01, root-capstone-m01, and root-09-m04 are promoted to
READY via documented exceptions (no new activities) where adding one would
misrepresent their intentional design.

Wires a new rootnode-security-assessment (exam, 60min, hint_policy disabled)
using the existing Phase 3B assessment engine: 3 required hands-on CORE
scenarios + 4 random-draw pools covering SecurityContext, RBAC, network
policy, and the 7 previously-unwired CKS MCQs. Wires the previously-unwired
readiness-probe-task scenario as an OPTIONAL practice lab in root-10-m01,
using the existing is_required model.

Adds root-11-m01-devops-platform-thinking — an honest, lesson-only ROOT 11
orientation module naming DevOps/platform engineering practices already
exercised in ROOT 05-10/12, explicit that GitOps/CI-CD/IaC/observability need
lab infrastructure this platform doesn't yet provide. No fake labs.

Adds infra/scripts/validate-course-content.js: cross-checks the DB against
scenario/content files for duplicate ids, orphans, invalid references, cycles,
sequence collisions, instructor-notes leakage, and (new) self-paced content
deferring explanation to a live instructor. 0 errors against the resulting
22 courses/modules, 163 activities, 98 scenario files.

No application code changed — every gap was satisfiable with existing tables
(course_modules, module_activities, assessment_definitions) and the existing
content-delivery pipeline.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-26 11:20:17 -05:00

2.4 KiB

Guided Exercise: Choosing the Right Workload Primitive

Paper-and-thinking exercise before the Labs.

The scenario

Your team needs four things running in the cluster:

  1. A nightly database backup that must run at 2am and finish before morning.
  2. A log-shipping agent that must run on every node, including nodes added later.
  3. A one-time script to backfill a new database column, run once during this deploy.
  4. The main web application, always up, serving live traffic.

Your task

For each of the four, name the correct primitive (Deployment, Job, CronJob, or DaemonSet) and answer: what would go wrong if you used a Deployment for it instead?

A worked answer to check yourself against

  1. CronJob. A Deployment has no concept of "run on a schedule" — you'd need external tooling to trigger it repeatedly, reinventing what CronJob already does. Using a bare Job would run it once; CronJob is what recreates that Job on schedule.
  2. DaemonSet. A Deployment's replica count is a number, not "one per node" — nothing guarantees even coverage, and a newly added node wouldn't automatically get a copy the way a DaemonSet guarantees.
  3. Job. A Deployment expects its Pod to run forever; a script that's SUPPOSED to exit when done would be treated as a crash and restarted forever, which is wrong for a one-time task.
  4. Deployment. This is the actual always-on, N-replicas case the other three are explicitly NOT designed for.

Self-check

If you answered "Job" for #4 or "Deployment" for #1-3, revisit the lesson's decision table before the Labs — getting this choice right the first time avoids building something that technically runs but behaves wrong in a way that's easy to miss until it causes a real problem (a backup CronJob accidentally deployed as a Job that only ever runs once, for example).

Instructor Notes

Facilitation: Good as a quick individual exercise before revealing the answer — the "what would go wrong" framing forces reasoning about the CONSEQUENCE of a wrong choice, not just recall of a definition.

Approximate timing: 8-10 minutes live with discussion; 8 minutes self-paced.

Optional extension: ask what would need to be true for #1 (the nightly backup) to actually be SAFE to run as a plain Job triggered manually once, instead of a CronJob — a good check that students understand CronJob's value is specifically the SCHEDULING, not something inherent to backups.