A PersistentVolume
object is a storage resource in an {product-title} cluster.
Storage is provisioned by your cluster administrator by creating
PersistentVolume
objects from sources such as GCE Persistent Disk, AWS
Elastic Block Store (EBS), and NFS mounts.
Storage can be made available to you by laying claims to the resource. You can
make a request for storage resources using a PersistentVolumeClaim
object;
the claim is paired with a volume that generally matches your request.
You can request storage by creating PersistentVolumeClaim
objects in your
projects:
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "claim1"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "5Gi"
volumeName: "pv0001"
A PersistentVolume
is a specific resource. A PersistentVolumeClaim
is a
request for a resource with specific attributes, such as storage size. In
between the two is a process that matches a claim to an available volume and
binds them together. This allows the claim to be used as a volume in a pod.
{product-title} finds the volume backing the claim and mounts it into the pod.
You can tell whether a claim or volume is bound by querying using the CLI:
$ oc get pvc NAME LABELS STATUS VOLUME claim1 map[] Bound pv0001 $ oc get pv NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM pv0001 map[] 5368709120 RWO Bound yournamespace / claim1
A PersistentVolumeClaim
is used by a pod as a volume. {product-title} finds the
claim with the given name in the same namespace as the pod, then uses the claim
to find the corresponding volume to mount.
apiVersion: "v1"
kind: "Pod"
metadata:
name: "mypod"
labels:
name: "frontendhttp"
spec:
containers:
-
name: "myfrontend"
image: "nginx"
ports:
-
containerPort: 80
name: "http-server"
volumeMounts:
-
mountPath: "/var/www/html"
name: "pvol"
volumes:
-
name: "pvol"
persistentVolumeClaim:
claimName: "claim1"