Data Storage
In order to persistently store data in Kubernetes, a pod needs to be granted access to persistent storage. Kubernetes offers the ability to create such storage easily through PersistentVolumeClaims (PVCs). For a conceptual understanding, I would recommend referring to the documentation.
In short, you can create a PVC manually:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example
namespace: example
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: manilabronze
Or even better as an Volume Claim Template directly in a StatefulSet:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: example
namespace: example
spec:
---
volumeClaimTemplates:
- metadata:
name: storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: cindergold
In our clusters, various predefined StorageClasses are included, corresponding to different types of storage.
Quotas for those StorageClasses must be requested in the project application form.
At the moment there are the following StorageClasses (they are also described in the project application form):
cinderbronze- HDD block storage with five-fold replication.
- Can only be mounted by one pod at a time.
cindergold- SSD block storage with five-fold replication.
- Can only be mounted by one pod at a time.
manilabronze- HDD file system storage with 8+3 ErasureCoding.
- Can be mounted by multiple pods at once.
Backups
There are no automatic backups of PersistentVolumes, because usage scenarios and backup requirements differ greatly between projects. Customers are responsible for backing up their own data, e.g. by replicating it in their databases or by creating manual backups of important data.