Skip to main content

Storage

Storage is where Kubernetes stops being disposable. Stateful workloads need explicit contracts for persistence, locality, backup, restore, and ownership.

Core objects​

ObjectMeaning
PersistentVolumeClaimWorkload request for storage.
PersistentVolumeConcrete storage resource backing a claim.
StorageClassDynamic provisioning policy and driver selection.
VolumeSnapshotSnapshot lifecycle when supported by CSI driver.

Production decisions​

  • Choose StorageClass per workload class, not one default for everything.
  • Understand topology constraints. A volume bound to one zone can trap a pod there.
  • Backup application state, not just volumes. Some databases need quiescing, log shipping, or native backup tools.
  • Test restore with real runbooks. A backup that has never restored a service is only a hypothesis.

Storage review checklist​

QuestionWhy it matters
Is reclaim policy explicit?Prevent accidental data deletion or uncontrolled orphaned volumes.
Does the workload tolerate zone failure?Volume locality may block rescheduling.
Are snapshots application-consistent?Crash-consistent snapshots are not enough for every database.
Is restore tested under incident pressure?Recovery time is a practiced behavior, not a document.

Failure modes​

  • Pod cannot schedule because PVC is bound to a zone with no available capacity.
  • StatefulSet upgrade changes volume assumptions.
  • Snapshot exists but cannot restore due to missing secret, driver, or version compatibility.
  • Storage latency degrades and surfaces as application timeout.