Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between persistent volume (PV) and persistent volume claim (PVC) in simple terms?

What is the difference between persistent volume (PV) and persistent volume claim (PVC) in Kubernetes/ Openshift by referring to documentation?

What is the difference between both in simple terms?

like image 594
smc Avatar asked Feb 23 '18 20:02

smc


4 Answers

PVC is a declaration of need for storage that can at some point become available / satisfied - as in bound to some actual PV.

It is a bit like the asynchronous programming concept of a promise. PVC promises that it will at some point "translate" into storage volume that your application will be able to use, and one of defined characteristics like class, size, and access mode (ROX, RWO, and RWX).

This is a way to abstract thinking about a particular storage implementation away from your pods/deployments. Your application in most cases does not need to declare "give me NFS storage from server X of size Y"; it is more like "I need persistent storage of default class and size Y".

With this, deployments on different clusters can choose to differently satisfy that need. One can link an EBS device, another can provision a GlusterFS, and your core manifests are still the same in both cases.

Furthermore, you can have Volume Claim Templates defined in your deployment, so that each pod gets a reflecting PVC created automatically (i.e., supporting infrastructure-agnostic storage definition for a group of scalable pods where each needs its own dedicated storage).

like image 41
Radek 'Goblin' Pieczonka Avatar answered Oct 24 '22 09:10

Radek 'Goblin' Pieczonka


From the docs

PVs are resources in the cluster. PVCs are requests for those resources and also act as claim checks to the resource.

So a persistent volume (PV) is the "physical" volume on the host machine that stores your persistent data. A persistent volume claim (PVC) is a request for the platform to create a PV for you, and you attach PVs to your pods via a PVC.

Something akin to

Pod -> PVC -> PV -> Host machine
like image 86
Will Gordon Avatar answered Oct 24 '22 07:10

Will Gordon


Short:
- Here you have the storage! PersistentVolume (PV)
- You get the storage if you really need it! PersistentVolumeClaim (PVC)

like image 19
mrw Avatar answered Oct 24 '22 09:10

mrw


Short and Simple

Persistent Volume - Available storage let's say you have 100Gi

Persistent Volume Claim - You request from Persistent Volume, let's say you request 10Gi you'll get it but if you request 110Gi you won't get it.

like image 10
Aditya Avatar answered Oct 24 '22 09:10

Aditya