PV ·
PVC ·
StorageClass ·
Access Modes ·
Reclaim Policy ·
Volume Snapshots
Persistent Volumes (PV) und Persistent Volume Claims (PVC) sind die Grundlage für stateful Anwendungen in Kubernetes. Sie ermöglichen persistente Daten unabhängig vom Pod-Lebenszyklus.
Persistent Volume (PV) ist eine Ressource im Cluster, die Speicher bereitstellt – unabhängig von einem Pod. PVs werden vom Administrator erstellt und können verschiedene Backends nutzen.
| Status | Beschreibung |
|---|---|
| Available | PV ist verfügbar und noch nicht gebunden |
| Bound | PV ist an einen PVC gebunden |
| Released | PVC wurde gelöscht, PV wartet auf Reclaim |
| Failed | PV ist fehlgeschlagen (z.B. Storage-Problem) |
hostPath ist nur für lokale Entwicklung geeignet. In der Produktion verwenden Sie Cloud-Volumes (AWS EBS, GCE PD, Azure Disk) oder Netzwerkspeicher (NFS, Ceph).
Persistent Volume Claim (PVC) ist eine Anforderung von Speicher durch einen Benutzer oder Pod. Kubernetes bindet den PVC automatisch an einen passenden PV.
| Status | Beschreibung |
|---|---|
| Pending | PVC wartet auf einen passenden PV |
| Bound | PVC ist an einen PV gebunden |
| Lost | Der PV wurde gelöscht – PVC ist ohne Backend |
storageClassName für dynamische Provisionierung.
StorageClass ermöglicht die dynamische Provisionierung von PVs. Sie definiert, welcher Provisioner verwendet wird und welche Parameter gesetzt werden.
| Provisioner | Beschreibung |
|---|---|
| kubernetes.io/aws-ebs | AWS EBS Volumes |
| kubernetes.io/gce-pd | Google Compute Engine Persistent Disk |
| kubernetes.io/azure-disk | Azure Disk |
| kubernetes.io/azure-file | Azure File Share |
| kubernetes.io/vsphere-volume | vSphere Volumes |
| kubernetes.io/csi | Container Storage Interface (CSI) Treiber |
| kubernetes.io/no-provisioner | Keine dynamische Provisionierung (lokales Storage) |
storageclass.kubernetes.io/is-default-class: "true", um eine Standard-StorageClass zu definieren. PVCs ohne storageClassName verwenden dann diese Klasse.
Access Modes definieren, wie ein Persistent Volume von Pods verwendet werden kann. Die Wahl des richtigen Access Mode ist entscheidend für die Anwendung.
| Access Mode | Beschreibung | Verwendung |
|---|---|---|
| ReadWriteOnce (RWO) | Schreibzugriff von einem einzigen Node | Datenbanken, stateful Apps |
| ReadOnlyMany (ROX) | Lesezugriff von mehreren Nodes | Statische Assets, Config-Daten |
| ReadWriteMany (RWX) | Schreibzugriff von mehreren Nodes | Shared Storage, NFS, Cloud Storage |
| ReadWriteOncePod (RWOP) | Schreibzugriff von einem einzigen Pod | StatefulSets mit exklusivem Zugriff |
ReadWriteMany wird z.B. von AWS EBS nicht unterstützt – hier verwenden Sie EFS oder NFS.
Reclaim Policy legt fest, was mit einem PV passiert, wenn der zugehörige PVC gelöscht wird. Die Wahl der Policy bestimmt, ob Daten erhalten bleiben.
| Policy | Beschreibung | Einsatz |
|---|---|---|
| Retain | PV bleibt mit Daten erhalten – muss manuell gelöscht werden | Produktion, Datenmigration |
| Delete | PV und zugehöriges Storage-Volume werden gelöscht | Dynamische Provisionierung |
| Recycle | Inhalt wird gelöscht (rm -rf), PV wird wieder verfügbar | Entwicklung (veraltet) |
Retain bleibt das PV auch nach PVC-Löschung bestehen – der Administrator muss es manuell löschen. Bei Delete gehen die Daten verloren! Wählen Sie die Policy bewusst.
Volume Snapshots ermöglichen die Erstellung von Backups von PVCs. Die PVC-Resize Funktion erlaubt die Erweiterung von bestehenden Volumes.
allowVolumeExpansion: true).
PV
PVC
StorageClass
RWO
Retain
Snapshot
kubectl get pv ·
kubectl get pvc ·
kubectl get storageclass ·
kubectl get volumesnapshot