Skip to content

Lab · Intermediate

Lab: PVC Pending (Provisioning Discipline)

Storage issues are slow, expensive, and unforgiving. Practice reading PVC events and fixing provisioning without thrash.

Prerequisites

What you should have before you begin.

StorageOperationsReliability
  • A cluster with CSI driver
  • kubectl installed
  • A sandbox namespace

Lab text

Follow the sequence. Change one thing at a time.

Goal

You will learn to debug a Pending PVC by reading events and StorageClass posture, then aligning the claim with what the cluster can actually provision.

  • Read PVC events.
  • Confirm StorageClass defaults and provisioner.
  • Validate access modes and topology.

Scenario

A workload requires persistent storage. The PVC stays Pending, and the pod cannot start.

Your job is to prove the block and remove it.

Inspect PVC and StorageClass

Start with the claim, then the classes.

  • PVC events often name the missing provisioner or class.
  • If there is no StorageClass, dynamic provisioning cannot occur.

kubectl

shell

kubectl get pvc -n <ns> -o wide
kubectl describe pvc <pvc> -n <ns>
kubectl get storageclass
kubectl get pv -o wide

Resolve with intent

Fix the request or the provisioner—don’t change both at once.

  • Specify `storageClassName` explicitly if defaults are unclear.
  • Ensure the CSI controller pods are healthy and have RBAC/permissions.
  • Align access modes with backend (RWX is not universal).
  • If topology is the issue, align node pools and volume zones.

Canonical link

Canonical URL: /labs/pvc-pending-provisioning