OpenShift PersistentVolume Operations

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

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
     ...