Kubernetes-Controller für persistente Volumes
Überblick
- Ein Controller, der Kubernetes PersistentVolumes (PV) und PersistentVolumeClaims (PVC) synchronisiert
- Verwaltet bidirektionale „Zeiger“ zwischen PVC und PV, um Datenverlust zu verhindern
- Arbeitet im Hochverfügbarkeitsmodus und unterstützt Fälle, in denen ein PVC ein bestimmtes PV anfordert oder ein PV für ein bestimmtes PVC reserviert ist
Hauptfunktionen
- Synchronisiert regelmäßig den Status von PVCs und PVs
- Wenn ein PVC kein bestimmtes PV anfordert, findet er das am besten passende PV und bindet es
- Wenn ein PVC ein bestimmtes PV anfordert, prüft er, ob dieses PV existiert und die Bedingungen erfüllt, und bindet es dann
- Wenn ein PVC bereits gebunden ist, prüft er den Status und korrigiert ihn bei Bedarf
Funktionsweise
- Wenn ein PVC erstellt oder aktualisiert wird, wird die Methode
syncClaim aufgerufen
- Wenn ein PVC nicht gebunden ist, wird die Methode
syncUnboundClaim aufgerufen
- Wenn ein PVC gebunden ist, wird die Methode
syncBoundClaim aufgerufen
- Wenn ein PV erstellt oder aktualisiert wird, wird die Methode
syncVolume aufgerufen
Wichtige Methoden
syncClaim
- Ruft je nach Status des PVC
syncUnboundClaim oder syncBoundClaim auf
syncUnboundClaim
- Wenn ein PVC kein bestimmtes PV anfordert, versucht die Methode, das am besten passende PV zu finden und zu binden
- Wenn ein PVC ein bestimmtes PV anfordert, prüft sie, ob dieses PV existiert und die Bedingungen erfüllt, und bindet es dann
syncBoundClaim
- Wenn ein PVC bereits gebunden ist, prüft die Methode den Status und korrigiert ihn bei Bedarf
syncVolume
- Führt je nach Status des PV die passende Aktion aus
- Wenn ein PV nicht verwendet wird, wird der Status auf „Available“ aktualisiert
- Wenn ein PV an ein bestimmtes PVC gebunden ist, wird der Status dieses PVC geprüft und bei Bedarf korrigiert
GN⁺-Zusammenfassung
- Dieses Dokument bietet eine detaillierte Erklärung des Kubernetes-Controllers für persistente Volumes
- Es hilft dabei, die Binding-Logik zwischen Persistent Volumes und Persistent Volume Claims zu verstehen
- Behandelt die Funktionsweise im Hochverfügbarkeitsmodus sowie den Umgang mit verschiedenen Ausnahmesituationen
- Nützliches Material für Entwickler, die sich für das Storage-Management in Kubernetes interessieren
- Andere Projekte mit ähnlicher Funktionalität sind unter anderem OpenEBS und Rook
1 Kommentare
Hacker-News-Kommentar
Die Space-Shuttle-Software ist sehr stabil und hat kaum Bugs
Der Code ist generisch und in Go geschrieben, daher etwas ausschweifend
Die Codebasis des neuen Unternehmens ist gut aufgeräumt, sodass es Freude macht, sich darin zu bewegen
Die Sicherheitsbilanz des Space Shuttle ist nicht gut, daher ist es heute nicht mehr im Einsatz
Mit strukturellem Pattern Matching ließen sich
if-/else-Blöcke vereinfachenDer Code ist nicht schlecht und folgt einer einzigen Regel
Link zu einer Diskussion aus dem Jahr 2018 bereitgestellt
Es hat Spaß gemacht, einen Kubernetes-CSI-Treiber zu schreiben
Dass zu jedem
if-Statement einelsegehört, gilt als SicherheitspraktikErläuterung, wie man bei GitHub-Dateilinks auf einen bestimmten Zeilenbereich verlinkt