Labs — Phase 8, Storage¶
Twenty exercises in the order they are meant to run. Each states one claim to test or one artifact to produce, links its topology rather than restating a footprint, and ends with a teardown that does two things: deletes what that exercise created, then says whether the topology stays or goes. It usually stays — a provision costs minutes before any teaching happens — so most of these end in a continuity marker naming what comes next.
The framing — why each module exists, what to read and the question to answer from it —
stays in phases/08-storage.md. These files hold only what
you type and what you should see.
| # | Exercise | Why it exists |
|---|---|---|
| 1 | Predict which PV a PVC will bind to | Turns findBestMatchForClaim from a function you read into a prediction you can be wrong about. |
| 2 | A released PV does not return to the pool | The reclaim policy is the only thing standing between a namespace delete and lost data. |
| 3 | Binding is reconciled state, not a transaction | Breaks the bind from both sides to show there is no atomic moment in it. |
| 4 | Delayed binding, observed delaying something | WaitForFirstConsumer is invisible until you watch a PVC wait for a pod that does not exist. |
| 5 | Build the failure that delayed binding prevents | The design is only convincing once you have constructed the incident it exists to stop. |
| 6 | Four ways a PVC stays Pending, diagnosed in 90s | The phase's most reusable reflex, and the one where the cause is often not storage. |
| 7 | Follow one volume down to a mount line | Produces the arrow diagram the capstone and the checklist both require. |
| 8 | Unmount a volume under a running pod | Makes mountPropagation: Bidirectional something you have felt rather than copied. |
| 9 | Expansion is two phases, and you can get stuck | KEP-1790 recovery is the instructive half; the happy path is the setup for it. |
| 10 | Snapshot, destroy the source, restore | The PV/PVC two-object pattern, repeated out of tree, so the pattern is visibly a pattern. |
| 11 | A PVC that will not delete, cleared correctly | Does the wrong fix deliberately, then goes and finds the orphan it created. |
| 12 | A CSI driver passing csi-sanity, no cluster |
The only fully objective gate in the curriculum outside the exams — and it needs no topology at all. |
| 13 | Deploy the driver with its sidecars | Where the sidecar architecture stops being a diagram: your binary never watches the API. |
| 14 | 8.C1 — a slow disk under a live workload | A pod that is Running, Ready and useless at the same time. |
| 15 | 8.C2 — I/O errors on a fraction of calls | Partial failure, which the API surface reports as nothing at all. |
| 16 | 8.C3 — make your own driver refuse to unstage | No chaos tool can express this; the fault is a flag you add to your own code. |
| 17 | 8.C5 — fill the disk | Disk-pressure eviction is ranked and graceful; memory pressure is neither. |
| 18 | 8.C6 — restart the kubelet with mounts held | What reconstruction recovers, and the gap KEP-3756 exists to close. |
| 19 | 8.C4 — lose a node with a volume attached | The gate names this one. Manual qm stop, and the answer is not the one the drill originally expected. |
| 20 | The CKA drill block, as a timed harness | A different activity with a different success condition: a clock, not a mechanism. |
One cluster runs exercises 1 through 18. pair
comes up once at exercise 1 and is destroyed by exercise 19, which ends the phase's cluster
on purpose. Exercise 12 needs no topology — it runs on
forge alone — and exercise 20 wants a
fresh pair it did not build.
Two things arrive mid-chain and are worth provisioning attention: Chaos Mesh at
exercise 14 (minimised install, 582Mi, installed once and
left up), and external-snapshotter at exercise 10, which is a controller the phase's
original costing did not include.