kubernetes-101-volumes
Q:❓What is a Volume❓
A: A directory with data accessible to all containers in a pod.
Kubernetes supports many types of volumes.
🔸 Persistent Volumes
🔸 Ephemeral Volumes
🔸 Projected Volumes
🔸 etc.
A pod can use any number of volume types simultaneously.
This is a storage element in a cluster, defined manually by an administrator or dynamically defined by a storage class.
A PV has its own lifecycle, separate from the lifecycle of Kubernetes pods.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-volume
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
This one defines a storage request.
Let's say we have an application running on a container that needs a certain type of storage: 3 Gi of storage and needs to read and write data.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-claim
spec:
storageClassName: manual
accessModes: - ReadWriteOnce
resources:
requests:
storage: 3Gi
Let's put them all together!
The pod running the application doesn't need to know the exact PV it's accessing.
It only needs to specify what type of access it needs, how much storage, and what type of storage.
apiVersion: v1
kind: Pod
metadata:
name: pv-pod
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: pv-claim
containers:
- name: pv-container
image: nginx
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: pv-storage