About this scenario
report should build a report every minute. Each run takes about two and a half minutes, so runs overlap and Jobs pile up, each one holding a Pod.
cleanup should remove old exports every 2 minutes. It was created a while ago and has never run once.
Fix both without changing how often report runs. sim ff 120 moves the clock forward if you don't want to wait.
Objectives
- See report's Jobs pile up
- report runs one Job at a time
- cleanup runs on its schedule
- report still runs every minute
What you'll practice
concurrencyPolicy decides what happens when a run is due and the last one hasn't finished: Allow (the default) overlaps them, Forbid skips the new one, Replace stops the old one.- The API server only checks that a schedule parses. A schedule that can never match, like the 30th of February, is accepted and simply never fires.
- Schedules use the controller's time zone (UTC) unless you set
spec.timeZone, such as Europe/Paris. activeDeadlineSeconds on the Job template stops a run that hangs, so a stuck Job can't block a Forbid CronJob forever.
How the playground works
The cluster runs entirely in your browser: a simulated API server, scheduler, kubelets and controllers, with virtual nodes in three zones. kubectl output follows the real formats, errors use the real messages, and the add-ons (CSI storage, Traefik, Envoy Gateway, cert-manager, Flux, Argo CD) behave like their real counterparts for the common paths. It's a simulation, so some behavior is simplified. Your progress is saved in this browser.