Bound PVC doesn’t finish deleting while any Pod still references it. Kubernetes adds the kubernetes.io/pvc-protection finalizer to every PVC, and the finalizer holds a deleted PVC in Terminating until no Pod uses it. This is expected Kubernetes behavior that protects data in use. In the Cloud Console, clicking Delete shows a success message, but the PVC stays in the list with a Bound status until the deletion completes.
Quick diagnostic. Run kubectl describe pvc [PVC-NAME] -n [NAMESPACE]. If Status shows Terminating, the delete request succeeded. The Used By line lists every Pod that still references the PVC.
To release the PVC:
- Remove every Pod listed under
Used By. Include long-running Pods, such as SUNK login Pods and model servers, which don’t release the PVC when a job completes. Completed Pods also hold the PVC until you delete them. - Scale down controller-managed Pods. If a Deployment, StatefulSet, or other controller manages a Pod, scale the controller to zero instead of deleting the Pod. Otherwise, the controller recreates the Pod and the Pod mounts the PVC again.
Used By shows no Pods and the PVC is still Terminating, contact support.
Server Errors Administrator