Training Module

Kubernetes Storage — Volumes, PersistentVolumes & Claims

In diesem Modul (70 Minuten Input, 30 Minuten Hands-on) klärt ihr die Frage, die jedem zustandsbehafteten Workload vorausgeht: Welche Daten überleben einen Pod-Neustart – und welche nicht? Kurzer Rückblick auf emptyDir, das ihr bereits im Modul Anwendungsdesign als Sidecar-Sharing-Mechanismus gesehen habt, dann hostPath als node-gebundenes Volume mit klarer Einschränkung für produktive Multi-Node-Cluster. Der eigentliche Kern des Moduls ist die Unterscheidung zwischen einfachen Volumes (an Pod oder Node gebunden, kein eigenständiges Kubernetes-Objekt) und einem PersistentVolume (PV) – einem eigenständigen Cluster-Objekt für Speicher, dessen Lebenszyklus unabhängig vom Pod ist und das entweder vom Administrator vorab angelegt oder dynamisch über eine StorageClass provisioniert wird. Damit ein Pod ein PV nutzen kann, braucht er eine PersistentVolumeClaim (PVC): die Anforderung eines Pods an Speicher (Größe, accessModes wie ReadWriteOnce), die Kubernetes einem passenden PV zuordnet – erst mit dieser Zuordnung wird die PVC gültig. Im Hands-on legt ihr auf einem lokalen Minikube-Cluster eine PVC an, startet einen Pod damit, schreibt Daten hinein, löscht den Pod wieder und erstellt ihn neu – und weist live nach, dass die Daten erhalten bleiben. Genau das ist der Unterschied zu emptyDir, den dieses Modul greifbar macht. Voraussetzung ist das Modul “Kubernetes Workloads & Konfiguration” – die Session läuft weiterhin vollständig lokal über Minikube, ohne Cloud-Account und ohne Kostenwirkung.

Format

70 Minuten Input plus 30 Minuten Hands-on, live (remote oder vor Ort)

Teilnehmende

Entwickler:innen und Ops, die wissen wollen, welche Daten einen Pod-Neustart überleben – und welche nicht

Voraussetzungen

Abgeschlossenes Modul “Kubernetes Workloads & Konfiguration” oder gleichwertige Vorkenntnisse, lauffähige lokale Docker-Umgebung für Minikube

Warum dieses Training für deine Organisation wirkt

Container-Dateisysteme sind flüchtig

Wird ein Container neu gestartet, sind alle Daten im Container-Dateisystem verloren. Wer das erst beim ersten Datenverlust in Produktion lernt, hat das Volume-Modell falsch eingeschätzt – nicht das Werkzeug ist schuld, sondern die fehlende Unterscheidung der Volume-Typen.

Drei Bindungsebenen, eine Entscheidung

emptyDir ist an den Pod gebunden, hostPath an den Node, ein PersistentVolume ist ein eigenständiges Cluster-Objekt. Diese Bindungsebene zu kennen entscheidet, ob ein Datenbank-Volume einen Pod-Umzug übersteht oder nicht.

PVC ist ein Vertrag, kein Speicherplatz

Eine PersistentVolumeClaim reserviert nicht selbst Speicher, sie fordert ihn an. Erst die Zuordnung zu einem passenden PersistentVolume macht sie gültig – ein Unterschied, der jede Fehlersuche bei “Pod hängt in Pending” abkürzt.

Was Teilnehmende mitnehmen

  • emptyDir als pod-gebundenes Volume für Container-übergreifenden Datenaustausch wiedererkennen (aus dem Modul Anwendungsdesign) und gegen persistente Volume-Typen abgrenzen.
  • hostPath als node-gebundenes Volume einordnen und begründen, warum es für produktive Multi-Node-Cluster nur eingeschränkt geeignet ist.
  • Ein PersistentVolume als eigenständiges, vom Pod-Lebenszyklus entkoppeltes Cluster-Objekt beschreiben, das manuell oder dynamisch über eine StorageClass angelegt wird.
  • Eine PersistentVolumeClaim als Speicheranforderung eines Pods formulieren und die Binding-Regel korrekt anwenden: die Claim wird erst mit zugeordnetem PV gültig, und das PV muss mindestens so viel Speicher bereitstellen, wie angefordert wurde.
  • accessModes wie ReadWriteOnce einem PV/PVC-Paar zuordnen und einordnen, was der Modus für gleichzeitigen Zugriff mehrerer Pods bedeutet.
  • Eine PersistentVolumeClaim im Pod mounten und live nachweisen, dass die Daten einen Pod-Löschvorgang überleben – der zentrale Unterschied zu emptyDir.

Für wen dieses Modul ideal ist

  • • Entwickler:innen und Ops mit abgeschlossenem Modul “Kubernetes Workloads & Konfiguration” oder gleichwertigen Vorkenntnissen
  • • Alle, die vor dem ersten zustandsbehafteten Workload (Datenbank, Message Queue, Cache mit Persistenz) wissen wollen, welches Volume wirklich einen Pod-Neustart übersteht
  • • Teams, die bisher emptyDir und “echte” Persistenz nicht sauber unterschieden haben

Rahmendaten

  • • Dauer: 70 Minuten Input live (remote oder vor Ort), plus 30 Minuten Hands-on
  • • Format: Input, Live-Demo, abschließendes Hands-on zum PVC-Lebenszyklus
  • • Voraussetzungen: abgeschlossenes Modul “Kubernetes Workloads & Konfiguration”, lauffähige lokale Docker-Umgebung, keine Cloud-Kostenwirkung

Modulaufbau & Agenda

  1. Volumes im Rückblick: emptyDir & hostPath (20 min): kurzer Rückverweis auf emptyDir aus dem Modul Anwendungsdesign, dann hostPath als node-gebundenes Volume mit seiner Einschränkung für Multi-Node-Cluster.

  2. PersistentVolume: eigenständiges Cluster-Objekt (20 min): Abgrenzung zu den einfachen Volume-Typen, manuelle Anlage vs. dynamische Provisionierung über eine StorageClass.

  3. PersistentVolumeClaim, AccessModes & StorageClass (20 min): die Binding-Regel zwischen PVC und PV, accessModes wie ReadWriteOnce, und der Minikube-eigene standard-StorageClass-Provisioner als lokaler Weg zur dynamischen Provisionierung.

  4. Puffer/Q&A zum Input-Teil (10 min): offene Fragen aus den ersten drei Blöcken, bevor es ins Hands-on geht.

  5. Hands-on (30 min): PVC anlegen, Pod damit starten, Daten schreiben, Pod löschen und neu erstellen, Persistenz der Daten live prüfen.

Dieses Modul setzt das Aufbaumodul Kubernetes Workloads & Konfiguration — die Objekte für den Alltag voraus. Pod-Lifecycle, ConfigMap und Secret werden dort erklärt und hier nicht erneut eingeführt.

Wer emptyDir bereits als Sidecar-Sharing-Mechanismus kennengelernt hat und stattdessen die Multi-Container- und Runtime-Absicherungs-Perspektive vertiefen will – Sidecar/ Ambassador/Adapter, Job/CronJob, securityContext und ServiceAccount – findet das im gleichrangigen, unabhängigen Vertiefungsmodul Kubernetes Anwendungsdesign — Multi-Container-Patterns, Jobs & Security Context.

Dieses Modul ist unabhängig von den fünf weiteren Vertiefungsmodulen auf Kubernetes Workloads & Konfiguration: Kubernetes Administration — RBAC, Node-Betrieb und Cluster-Netzwerk, Kubernetes Networking Vertiefung — Service Discovery, DNS und Ingress-Pfadregeln, Kubernetes: Monitoring & Troubleshooting, Kubernetes Ressourcenmanagement & Autoscaling — Requests, Limits und HorizontalPodAutoscaler und Helm — Paketmanagement für Kubernetes. Storage-Requests einer PersistentVolumeClaim (dieses Modul) und Compute-Requests/-Limits eines Containers (dort) sind zwei getrennte Konzepte. Alle setzen nur das Workloads-Modul voraus, nicht sich gegenseitig, und lassen sich in beliebiger Reihenfolge buchen.

Wer PersistentVolume, PersistentVolumeClaim und StorageClass aus diesem Modul als Baustein für zustandsbehaftete Workloads mit stabiler Pro-Replica-Identität weiterdenken will – volumeClaimTemplates für automatisches Pro-Replica-PVC-Provisioning, geordnetes Scaling über podManagementPolicy sowie die Kopplung an einen Headless Service für stabile Pro-Pod-DNS-Namen – findet das im Aufbaumodul Kubernetes StatefulSets — Stabile Identität für zustandsbehaftete Workloads, das dieses Modul und “Kubernetes Networking Vertiefung” gemeinsam voraussetzt.

Hands-on Inhalte (Auszug)

PVC anlegen und Pod starten

  • Eine PersistentVolumeClaim mit accessModes: [ReadWriteOnce] und angeforderter Größe anwenden
  • Einen Pod starten, der die PVC über volumes.persistentVolumeClaim.claimName mountet, und mit kubectl get pvc den Status Bound prüfen

Daten schreiben

  • Über kubectl exec eine Datei in den gemounteten Pfad schreiben
  • Den Inhalt der Datei einmal live bestätigen, bevor der Pod gelöscht wird

Pod löschen und neu erstellen

  • Den Pod löschen, die PVC dabei ausdrücklich nicht anfassen
  • Einen neuen Pod mit derselben PVC anwenden

Persistenz live nachweisen

  • Im neuen Pod dieselbe Datei auslesen und ihren unveränderten Inhalt zeigen
  • Den Kontrast zu emptyDir einordnen, wo dieselbe Übung die Datei nicht überleben ließe

Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit bis zum erfolgreich nachgewiesenen PVC-Lebenszyklus) und werten sie im Anschluss transparent aus. Ergebnisse veröffentlichen wir, sobald sie belastbar sind.

Bereit, das Modul zu buchen?

Wir passen die Hands-on-Übung auf euren Erfahrungsstand und eure Zielumgebung an.

Academy Briefing anfragen