Persistente Volumes und Claims
Verstehen Sie, wie Sie Pods mithilfe von Persistent Volumes und Persistent Volume Claims dauerhaften Speicher bereitstellen.
Persistente Volumes und Claims ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Pods und flüchtige Daten
Pods werden erstellt und beendet, aber die Daten Ihrer Anwendung müssen oft dauerhaft bestehen bleiben. Denken Sie beispielsweise an eine Datenbank oder von Benutzern hochgeladene Dateien.
- Wenn ein Pod neu gestartet oder neu eingeplant wird, gehen alle Daten verloren, die direkt im Dateisystem seines Containers gespeichert sind.
- Diese Flüchtigkeit ist für zustandslose Anwendungen unproblematisch, kritische Daten benötigen jedoch eine dauerhafte Lösung.
- Kubernetes bietet ein leistungsfähiges System zur Verwaltung persistenten Speichers, der über den Lebenszyklus von Pods hinaus bestehen bleibt.
PersistentVolume: Clusterspeicher
Ein PersistentVolume (PV) ist ein Speicherbereich in Ihrem Kubernetes-Cluster.
- Es ist eine clusterweite Ressource und gehört daher zu keinem bestimmten Namespace.
- PVs werden von einem Administrator oder dynamisch durch eine StorageClass bereitgestellt.
- Sie abstrahieren die Details der zugrunde liegenden Speichertechnologie (z. B. Google Persistent Disk, AWS EBS oder eine NFS-Freigabe).
Ein PersistentVolume definieren
PVs werden mit Angaben wie Kapazität, Zugriffsmodi und Speichertyp definiert. Dieses YAML beschreibt ein PV mit einem hostPath (für lokale Tests) und 5 Gigabyte Speicher.
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-local-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"
Hinweis: hostPath ist normalerweise für die Entwicklung auf einem einzelnen Knoten gedacht und wird für den Produktivbetrieb nicht empfohlen.
PersistentVolumeClaim: Speicheranforderung eines Pods
Ein PersistentVolumeClaim (PVC) ist eine Speicheranforderung eines Benutzers oder einer Anwendung innerhalb eines bestimmten Namespace.
- Pods verwenden PVs nicht direkt, sondern fordern Speicher über ein PVC an.
- PVCs sind auf einen Namespace beschränkt und befinden sich daher innerhalb des Bereichs eines bestimmten Projekts oder Teams.
- Sie geben die gewünschte Größe, die Zugriffsmodi und optional eine StorageClass an.
PV und PVC: Die Vermittler
Kubernetes ordnet ein PVC automatisch einem verfügbaren PV zu. Dieser Vorgang wird als Binding bezeichnet.
- Wenn ein PVC erstellt wird, sucht Kubernetes nach einem PV, der die Anforderungen des PVCs erfüllt (Größe, Zugriffsmodi und StorageClass).
- Sobald ein geeigneter PV gefunden wurde, werden beide in einer Eins-zu-eins-Beziehung miteinander „gebunden“.
- Durch dieses Binding erhält das PVC genau den angeforderten Speicher.
Zugriffsmodi für PVs und PVCs
Zugriffsmodi legen fest, wie der Speicher von Pods eingebunden und verwendet werden kann. Diese Modi werden von PVCs angefordert und von PVs unterstützt:
- ReadWriteOnce (RWO): Das Volume kann von einem einzelnen Knoten mit Lese- und Schreibzugriff eingebunden werden.
- ReadOnlyMany (ROX): Das Volume kann von mehreren Knoten mit schreibgeschütztem Zugriff eingebunden werden.
- ReadWriteMany (RWX): Das Volume kann von mehreren Knoten mit Lese- und Schreibzugriff eingebunden werden.
Welche Modi verfügbar sind, hängt vom jeweiligen Speicheranbieter ab.
StorageClasses für die Automatisierung
StorageClasses bieten Administratoren eine Möglichkeit, verschiedene „Klassen“ von Speicher zu beschreiben (z. B. „fast-ssd“ oder „slow-hdd“).
- Statt PVs manuell zu erstellen, kann eine StorageClass ein PV dynamisch bereitstellen, sobald ein PVC dies anfordert.
- Dadurch wird die Erstellung von PVs anhand vordefinierter Vorlagen automatisiert.
- Die Bereitstellung des Speichers wird von seiner Nutzung getrennt, was die Verwendung für Benutzer vereinfacht.
Beispiel: Ein PVC erstellen
Erstellen wir ein PVC, das 1 Gigabyte Speicher mit dem Zugriff ReadWriteOnce anfordert. Dieses PVC sucht nach einem vorhandenen PV oder löst über eine StorageClass die dynamische Bereitstellung aus.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-app-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: standard # Optional: if you have a 'standard' StorageClass
Speichern Sie dies als pvc.yaml und wenden Sie es mit kubectl apply -f pvc.yaml an.
Ein PVC in einem Pod verwenden
Sobald ein PVC gebunden ist, kann ein Pod es verwenden, indem er in seiner Volume-Konfiguration auf den Namen des PVCs verweist. Der Pod muss den zugrunde liegenden PV nicht kennen, sondern nur das PVC.
apiVersion: v1
kind: Pod
metadata:
name: my-data-pod
spec:
containers:
- name: data-container
image: busybox
command: ["/bin/sh", "-c", "echo 'Hello from CoddyKit!' > /mnt/data/hello.txt && sleep 3600"]
volumeMounts:
- name: persistent-storage
mountPath: /mnt/data
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: my-app-pvc
Dieser Pod schreibt eine Datei in das eingebundene persistente Volume.
PVs und PVCs überwachen
Sie können den Status Ihrer Ressourcen für persistenten Speicher mit kubectl überwachen:
- Alle PVs anzeigen:
kubectl get pv - Alle PVCs in Ihrem Namespace anzeigen:
kubectl get pvc - Detaillierte Informationen einschließlich Status und Ereignissen abrufen:
kubectl describe pv <pv-name>kubectl describe pvc <pvc-name>
Stellen Sie sicher, dass Ihre PVs den Status Bound haben und die PVCs an den richtigen PV gebunden sind.
PV und PVC verstehen
Ein Benutzer möchte eine Datenbank bereitstellen, die 50 GB persistenten Speicher benötigt. Welche Kubernetes-Ressource stellt direkt die Anforderung der Anwendung des Benutzers an diesen Speicher dar?
Zusammenfassung: Persistenter Speicher
Wir haben behandelt, wie Kubernetes dauerhaften Speicher für Ihre Anwendungen verwaltet:
- PersistentVolumes (PVs) sind Clusterressourcen und stellen den tatsächlichen Speicher dar.
- PersistentVolumeClaims (PVCs) sind Speicheranforderungen von Benutzern.
- Kubernetes bindet PVCs entsprechend den Anforderungen an geeignete PVs.
- Zugriffsmodi legen fest, wie der Speicher verwendet werden kann (RWO, ROX und RWX).
- StorageClasses ermöglichen die dynamische Bereitstellung von PVs und automatisieren die Einrichtung.
Dieses System stellt sicher, dass die Daten Ihrer Anwendung auch dann bestehen bleiben, wenn Pods erstellt und beendet werden. Das sorgt für Zuverlässigkeit bei zustandsbehafteten Anwendungen.
Häufig gestellte Fragen
Ist die Lektion „Persistente Volumes und Claims“ kostenlos?
Ja — der vollständige Text von „Persistente Volumes und Claims“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Persistente Volumes und Claims“?
Verstehen Sie, wie Sie Pods mithilfe von Persistent Volumes und Persistent Volume Claims dauerhaften Speicher bereitstellen. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Persistente Volumes und Claims“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- ConfigMaps für Konfigurationen
- Secrets für vertrauliche Daten
- Persistente Volumes und Claims
- StorageClasses und dynamische Bereitstellung