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.