OpenShift PersistentVolume Operations
External
Internal
List Existent Volumes
A persistent volume is not a project-specific object, so the following query will return all persistent volumes available to the OpenShift instance.
oc get pv
Delete a Persistent Volume
oc delete pv <persistent-volume-name>
oc delete pv metrics-volume
Create a Persistent Volume
NFS
Provision the Underlying Storage
Create the Persistent Volume Definition File
Create a "pv.yaml" file with the following content:
apiVersion: v1 kind: PersistentVolume metadata: name: metrics-volume spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: path: /support-nfs-storage/metrics server: support.local
Make sure the "support.local" server is accessible from any node that will use the volume, and the /support-nfs-storage/metrics is exported and has sufficient permissions.
Create the Volume
oc create -f pv.yaml
Once created, it will shows as:
oc get pv NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE ... metrics-volume 10Gi RWO Retain Available 25s ...
Note that the volume, even if available, it won't be used until a matching persistent volume claim is declared.
List Existent Persistent Volume Claims for the Current Project
A persistent volume claim is project-specific object, so the following query will return all persistent volume claims available in the current project:
oc get pvc
Create a Persistent Volume Claim
Create a definition of the persistent volume claim, a "pvc.yaml" file with the following content
apiVersion: "v1" kind: "PersistentVolumeClaim" metadata: name: "jenkins-data" spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "2Gi"
Create the persistent volume claim:
oc create -f pvc.yaml
Once created, the persistent volume claim is immediately bound to an available persistent volume, if exists and it matches persistent volume claim's criteria.
Associate a Persistent Volume Claim with a Deployment Configuration
Edit the Deployment Configuration:
oc edit dc/<deployment-configuration-name>
... spec: ... template: ... spec: containers: - name: <container-name> ... volumeMounts: - mountPath: /some/path/inside/the/container name: volume-1 # this is the name of the container volume referred below ... volumes: - name: volume-1 persistentVolumeClaim: claimName: gogs-data ...