Storage
Volumes
Allows for persistent data.
Use spec.containers[*].volumeMounts and spec.volumes:
With basic hostPath, data is stored directly on EACH node, not shared.
Various volume types exist we can use.
PersistentVolumes
Lets us store data centrally in a pool.
We then claim the data with a persistent volume claim (PVC)
kind: PersistentVolume
apiVersion: v1
metadata:
name: pv-vol1
spec:
accessModes: [ "ReadWriteOnce" ]
capacity:
storage: 1Gi
hostPath:
path: /tmp/dataPersistent Volume Claims
Looks for matching claims.
We can select one ourselves with labels and selectors.
PV and PVC are one to one
If one cannot be matched with the required resources the PVC will stay in pending state
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1GiOnce PVC deleted we can choose to automatically delete the underlying PV, retain it, or recycle it.
Storage Classes
Provisioner dynamically provisions when we need storage.
sc-definition.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: google-storage
provisioner: kubernetes.io/gce-pdCreates a pv for us automatically when we create a claim if we associate it:
pvc-definition.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: google-storage
resources:
requests:
storage: 500MiLast updated