Back to Glossary
Storage

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: ext4

Cost & 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.

KorPro— Kubernetes Cost Optimization

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 Free

Stop 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.