Key Concepts
PVC
Storage Class
Access Modes
Capacity
Required Permissions
PVC Status Values
Access Modes
How to View PVCs
Select Cluster
Select Namespace
Filter and Search
How to View PVC Details
Find the PVC
Click PVC Name
Review Details
- Overview: Name, namespace, status, storage class, age
- Storage: Requested size, actual capacity, volume name
- Access: Access modes, volume mode (Filesystem/Block)
- Selector: Label selector for PV matching (if specified)
- Conditions: PVC controller conditions
- Events: Recent provisioning and binding events
How to Create a PVC
Click Create PVC
Write YAML
spec.accessModes- How the volume can be accessedspec.resources.requests.storage- Amount of storage requestedspec.storageClassName- Storage class to use for provisioning
Select Namespace
Create
How to Edit a PVC
Open Actions Menu
Click Edit YAML
Modify Spec
Save
How to Delete a PVC
Open Actions Menu
Click Delete
Confirm
Volume Modes
PVCs support two volume modes:Example PVC
Basic PVC
PVC with Selector
Using PVCs in Pods
Storage Expansion
If the StorageClass allows volume expansion (allowVolumeExpansion: true), you can increase PVC size:
Troubleshooting
PVC stuck in Pending status
PVC stuck in Pending status
- Check if a matching StorageClass exists
- Verify the StorageClass provisioner is running
- Check PVC events for provisioning errors
- Ensure sufficient cluster resources for storage
- Verify access mode is supported by the storage backend
PVC shows Lost status
PVC shows Lost status
- The underlying PV has been deleted or become unavailable
- Check PV status and events
- The storage backend may have failed
- Manual intervention may be required to recover data
Cannot delete PVC
Cannot delete PVC
- PVC may still be in use by pods
- Check for pods mounting the PVC:
kubectl get pods --all-namespaces -o json | grep <pvc-name> - Delete or update pods to remove the volume reference
- Check for finalizers blocking deletion
Volume expansion not working
Volume expansion not working
- Verify StorageClass has
allowVolumeExpansion: true - Check if the storage backend supports expansion
- Pod restart may be required for filesystem resize
- Check PVC conditions for resize status
Pod fails to mount PVC
Pod fails to mount PVC
- Verify PVC is in Bound status
- Check if access mode is compatible with pod’s node
- For RWO volumes, ensure no other node has it mounted
- Check kubelet logs on the node
- Verify the underlying storage is accessible
Wrong storage class used
Wrong storage class used
- If storageClassName is empty, the default class is used
- Explicitly set storageClassName in the PVC spec
- Check cluster’s default StorageClass:
kubectl get sc -o wide
FAQ
What is the difference between PVC and PV?
What is the difference between PVC and PV?
What happens to data when I delete a PVC?
What happens to data when I delete a PVC?
- Delete: PV and data are deleted (default for dynamic provisioning)
- Retain: PV is kept for manual data recovery
- Recycle: Data is scrubbed (deprecated)
Can I use the same PVC in multiple pods?
Can I use the same PVC in multiple pods?
How do I migrate data between PVCs?
How do I migrate data between PVCs?
kubectl cp or custom jobs with both volumes mounted can help.What is dynamic provisioning?
What is dynamic provisioning?
Can I change the storage class of an existing PVC?
Can I change the storage class of an existing PVC?
What does 'WaitForFirstConsumer' mean?
What does 'WaitForFirstConsumer' mean?
volumeBindingMode: WaitForFirstConsumer delays PV provisioning until a pod using the PVC is scheduled. This ensures the PV is created in the correct availability zone.How do I back up PVC data?
How do I back up PVC data?