Kubernetes was designed around stateless, disposable pods — so its storage model has to bridge that assumption with the very stateful reality of databases, message queues, and now VM disks. Understanding the pieces of that bridge is what turns "storage just works, usually" into something a platform team can actually plan around.
The core objects: StorageClass, PV, PVC
A StorageClass defines a type of storage available in the cluster — the backend, performance tier, and provisioning behavior. A PersistentVolume (PV) is a piece of actual storage capacity, either provisioned ahead of time or created on demand. A PersistentVolumeClaim (PVC) is what a workload actually requests — "give me 50GB from the fast-ssd class" — and Kubernetes binds it to a matching PV.
CSI drivers do the real work
The Container Storage Interface (CSI) is the standard that lets Kubernetes talk to almost any storage backend — cloud block storage, on-prem SANs, distributed storage systems — through a common driver interface, instead of Kubernetes needing built-in support for every vendor's storage.
Capacity planning before it's an incident
A PVC that silently fills up doesn't fail gracefully — it fails as an application outage. Real capacity planning means tracking provisioned versus used capacity as a trend, not checking it reactively after something breaks, and treating "used capacity climbing steadily for three weeks" as a signal worth acting on.
IOPS and utilization, not just space
Running out of space is the obvious failure mode; running out of IOPS is the quieter one — a database that's technically within its capacity quota but starved for I/O throughput degrades just as badly, often without an obvious alert to explain why.
Storage for VM disks, not just PVCs for apps
Once VMs run on Kubernetes through KubeVirt, their disks go through this exact same storage system — PVC-backed disks, the same StorageClasses, the same CSI drivers — which is precisely why capacity planning has to account for VM disks alongside application storage, not treat them as a separate pool nobody's watching.
How AetherVirt surfaces this
AetherVirt's storage dashboard tracks CSI-backed capacity, provisioned versus used space, and IOPS trends across containers and VM disks together — the same view for both, instead of a separate storage tool for each.