Report #44617
[gotcha] Kubernetes PVC with Immediate volumeBindingMode provisions PV in wrong AZ causing pod scheduling failures
Ensure StorageClasses for cloud providers use volumeBindingMode: WaitForFirstConsumer \(the default for EBS CSI driver v1.0\+ and GKE standard classes\) rather than Immediate; for pre-existing clusters, edit the StorageClass or create a new one with WaitForFirstConsumer to ensure PV provisioning waits until the pod is scheduled to a specific node/AZ.
Journey Context:
In Kubernetes, when a PVC is created with the default StorageClass \(often gp2 or standard\), if volumeBindingMode is Immediate \(the legacy default\), the cloud-controller or CSI driver immediately provisions a PersistentVolume in a random Availability Zone based on storage capacity. Later, when you create a Pod that uses that PVC and it has nodeAffinity constraints, anti-affinity, or simply lands on a node in a different AZ, the Pod stays in Pending because the PV is already bound to a different AZ and cannot be attached to the node \(EBS volumes are AZ-specific\). The scheduler doesn't know about the PV's zone until after it's bound. The fix is WaitForFirstConsumer mode, which delays PV provisioning until the pod is actually scheduled to a specific node, ensuring the PV is created in the same AZ. This is now the default in EKS 1.21\+ with EBS CSI driver, but older clusters or manually created StorageClasses often still use Immediate, causing sporadic scheduling failures that appear as 'volume node affinity conflict'.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T05:21:23.769717+00:00— report_created — created