Portworx Documentation has moved to https://docs.portworx.com
Portworx Enterprise version 2.13 has reached end of life and end of extended maintenance. Refer to the release support policy doc here.
Upgrade to the latest version of Portworx Enterprise for continued support. Documentation for the latest version of Portworx Enterprise can be found here.

Using Pre-provisioned Volumes


This document describes how to use a pre-provisioned volume in your Kubernetes cluster.

Creating a Portworx volume using pxctl

First create a volume using the Portworx CLI. On one of the nodes with Portworx installed, run the following command:

/opt/pwx/bin/pxctl volume create testvol --size 2

For more details on creating volumes using pxctl, see Concepts.

Alternatively, you can also use snapshots that you previously created.

Using the Portworx volume

Once you have a Portworx volume, you can use it in 2 different ways:

1. Using the Portworx volume directly in a pod

You can create a pod that directly uses a Portworx volume as follows:

apiVersion: v1
kind: Pod
metadata:
   name: nginx-px
spec:
   containers:
   - image: nginx
     name: nginx-px
     volumeMounts:
     - mountPath: /test-portworx-volume
       name: testvol
   volumes:
   - name: testvol
     # This Portworx volume must already exist.
     portworxVolume:
       volumeID: testvol
NOTE: The name and volumeID above must be the same and should be the name of the Portworx volume created using pxctl.

2. Using the Portworx volume by creating a PersistentVolume & PersistentVolumeClaim

Creating PersistentVolume

First create a PersistentVolume that references the Portworx volume. Following is an example spec.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: testvol
spec:
  capacity:
    storage: 2Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: testvol-pvc
    namespace: default
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  portworxVolume:
    volumeID: <PX_VOLUME_ID>
NOTE: The preceding PersistentVolume example references an existing Portworx volume called testvol that was created using pxctl.

Creating PersistentVolumeClaim

Now create a PersistentVolumeClaim that will claim the previously created volume. Following is an example spec.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: testvol-pvc
spec:
  selector:
    matchLabels:
      name: testvol
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
  volumeName: testvol
NOTE: If you are planning to use the PersistentVolumeClaim in a pod in a non-default namespace, you must create the PersistentVolumeClaim in that namespace.

Creating a pod using the PersistentVolumeClaim

Now you can create a pod that references the PersistentVolumeClaim that you created. Following is an example.

apiVersion: v1
kind: Pod
metadata:
   name: nginx-px
spec:
  containers:
  - image: nginx
    name: nginx-px
    volumeMounts:
    - mountPath: /test-portworx-volume
      name: testvol
  volumes:
  - name: testvol
    persistentVolumeClaim:
      claimName: testvol-pvc
NOTE: To access PV/PVCs with a non-root user, refer to Access via Non-Root Users


Last edited: Tuesday, May 16, 2023