PVCPending
KubernetesWARNINGNotableStorageHIGH confidence

PVC waiting for storage class to provision a volume

Production Risk

Pods referencing the PVC cannot start; stateful workloads are unavailable.

What this means

A PersistentVolumeClaim in Pending state means no PersistentVolume has been bound to it yet. With dynamic provisioning, the StorageClass provisioner should create a PV automatically; if the PVC stays Pending, provisioning has failed or the StorageClass is misconfigured. Without dynamic provisioning, no matching static PV exists.

Why it happens
  1. 1StorageClass provisioner pod is not running or has errors
  2. 2Cloud provider storage quota exceeded (e.g., AWS EBS volume limit)
  3. 3Requested storage size exceeds what the provisioner can allocate
  4. 4No static PV with matching storageClassName, access modes, and capacity exists
  5. 5volumeBindingMode is WaitForFirstConsumer — PVC binds only when a pod is scheduled
How to reproduce

PVC remains in Pending state; pods that reference it are stuck in ContainerCreating.

trigger — this will error
trigger — this will error
kubectl get pvc
# NAME     STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
# my-pvc   Pending                                      standard       5m

kubectl describe pvc my-pvc | grep -A 10 "Events:"

expected output

NAME     STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
my-pvc   Pending                                      standard       5m

Fix 1

Check PVC events for provisioning failure reason

WHEN PVC is Pending with dynamic provisioning

Check PVC events for provisioning failure reason
kubectl describe pvc my-pvc
kubectl get events --field-selector involvedObject.name=my-pvc

Why this works

Events from the provisioner explain why volume creation failed.

Fix 2

Verify the StorageClass and provisioner are healthy

WHEN Dynamic provisioning is expected

Verify the StorageClass and provisioner are healthy
kubectl get storageclass
kubectl get pods -n kube-system | grep -E "csi|provisioner|storage"

Why this works

The provisioner pod must be Running to respond to PVC creation requests.

Sources
Official documentation ↗

Kubernetes Documentation

Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev

← All Kubernetes errors