Skip to content

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.