PersistentVolume(PV)
A cluster-scoped storage resource provisioned by an administrator or dynamically by a StorageClass, independent of any Pod lifecycle.
Also known as: PV
What is PersistentVolume?
A PersistentVolume (PV) is a piece of storage in the cluster that has been provisioned either by an administrator (static provisioning) or automatically by Kubernetes in response to a PersistentVolumeClaim (dynamic provisioning via a StorageClass). PVs are cluster-scoped resources — they are not namespaced — and their lifecycle is independent of any Pod or namespace. This decoupling is intentional: data should outlive the processes that produce it.
A PV has a set of attributes: capacity (the storage size), accessModes (ReadWriteOnce, ReadOnlyMany, ReadWriteMany, or ReadWriteOncePod), volumeMode (Filesystem or Block), reclaimPolicy (Retain, Delete, or Recycle), and a reference to the underlying storage backend (AWS EBS, GCE Persistent Disk, Azure Disk, NFS, Ceph, etc.). The reclaimPolicy determines what happens to the PV when its bound PVC is deleted: Retain keeps the PV and its data; Delete removes both the PV object and the underlying cloud disk.
PVs move through a lifecycle: Available (not yet bound), Bound (claimed by a PVC), Released (PVC deleted but data retained per Retain policy), and Failed (automatic reclamation failed). Released PVs with Retain policy hold data and continue to incur cloud storage costs indefinitely until an administrator manually deletes them or rebinds them.
Example
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-ssd-100gi
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: ssd
gcePersistentDisk:
pdName: my-data-disk
fsType: ext4Cost & Waste Implications
PVs in Released state (PVC deleted, reclaimPolicy: Retain) continue billing for the underlying cloud disk at full rate. A 1TB SSD PV on GKE costs roughly $170/month regardless of whether any Pod is using it. PVs are invisible to most kubectl queries unless you specifically look for them, making them a common source of silent, ongoing storage spend.
How KorPro Helps
KorPro scans for PVs in Released state and PVs with no bound PVC, estimates their monthly cloud storage cost based on size and StorageClass, and surfaces them for administrator review before deletion.
Scan Your Cluster FreeRelated Terms
PersistentVolumeClaim(PVC)
StorageA namespaced request for persistent storage that binds to a PersistentVolume and mounts it into a Pod.
Read definitionStorageClass
StorageA cluster resource that defines a storage provisioner and parameters, enabling dynamic PV provisioning on demand.
Read definitionStatefulSet
WorkloadsA controller for stateful applications that provides stable Pod identities, ordered deployment, and per-Pod PersistentVolumeClaims.
Read definitionOrphaned Resource
FinOpsA Kubernetes resource that is no longer referenced by any active workload but continues to exist in the cluster, often incurring cost.
Read definitionStop Wasting Money on Orphaned Kubernetes Resources
KorPro connects to your clusters across GCP, AWS, and Azure — no agents, no installation — and surfaces every orphaned resource with its monthly cost estimate.