I fiddled with persistent volume claims (pvc) on OpenShift. Creating a pvc was no problem, but afterwards I tried to delete it but it was stuck in “Terminating”-state. Here’s what I did to remove it:
# Login to OpenShift, this can be obtained in web console with 'Copy Login Command'
$ oc login --token=41cxWS0NnARW2zxRCK5p2GQb31VNf7zEz-wuYMdhw1k --server=https://openshift.cluster.host:6443
# Create a pvc
$ oc set volume dc/testpvc --add --type pvc --claim-size=100Mi
info: Generated volume name: volume-s9njq
deploymentconfig.apps.openshift.io/testpvc volume updated
# Check the status
$ oc get pvc -w
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-gpvft Bound pvc-86cc776c-4190-4b76-bc27-5a8846c71fd8 1Gi RWO gp2 15s
# Try to delete it...
$ oc delete pvc/pvc-gpvft
persistentvolumeclaim "pvc-gpvft" deleted
# Check status...it's stuck in 'Terminating'
$ oc get pvc -w
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-gpvft Terminating pvc-86cc776c-4190-4b76-bc27-5a8846c71fd8 1Gi RWO gp2 8m29s
# Check deployment...the finalizer is the interesting part
$ oc get pvc pvc-gpvft -o yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
(...)
finalizers:
- kubernetes.io/pvc-protection
(...)
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
storageClassName: gp2
volumeMode: Filesystem
volumeName: pvc-86cc776c-4190-4b76-bc27-5a8846c71fd8
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
phase: Bound
# Patch the finalizer
$ oc patch pvc pvc-gpvft -p '{"metadata":{"finalizers": []}}' --type=merge
persistentvolumeclaim/pvc-gpvft patched
# Check again...aaaand it's gone
$ oc get pvc
No resources found in test-space namespace.