Introduction
A PersistentVolumeClaim stays Pending when Kubernetes cannot bind it to a matching volume or dynamically provision a new one. The most common reason is that the claim references a StorageClass that does not exist, no longer has a working provisioner, or does not match the storage behavior the cluster can deliver. Pods depending on that PVC then stall in Pending or ContainerCreating.
Symptoms
kubectl get pvcshowsPending- Pod scheduling fails because the PVC is unbound
kubectl describe pvcreportsProvisioningFailedor StorageClass-related events- The same manifest works in one cluster but not another
Common Causes
- The PVC references a StorageClass name that does not exist in the cluster
- The CSI driver or provisioner behind the StorageClass is missing or unhealthy
- No default StorageClass exists and the PVC omits
storageClassName - The requested access mode, size, or topology cannot be satisfied by the provisioner
Step-by-Step Fix
- 1.Inspect the PVC events first
- 2.The describe output usually tells you whether the failure is a missing StorageClass, a dead provisioner, or an unsupported request.
kubectl describe pvc my-claim- 1.Check the StorageClass definitions in the cluster
- 2.Confirm the name exists and that the provisioner matches the storage system you expect.
kubectl get storageclass- 1.Verify the CSI driver or provisioner is healthy
- 2.A valid StorageClass still fails if the underlying controller is not running or lacks cloud permissions.
kubectl get pods -n kube-system- 1.Use the correct StorageClass or default behavior intentionally
- 2.If the cluster relies on a default class, omit
storageClassName. If it needs an explicit class, make sure the claim names the right one.
Prevention
- Standardize StorageClass names across clusters where manifests are reused
- Monitor CSI controllers and provisioner health as first-class platform components
- Document whether applications should rely on a default StorageClass or an explicit one
- Validate PVC creation in CI or staging before rolling workloads into production