Ein NFS-Volume über Namespaces hinweg freigeben
Mit Trident können Sie ein Volume in einem primären Namespace erstellen und es in einem oder mehreren sekundären Namespaces freigeben.
Features
Das TridentVolumeReference CR ermöglicht es Ihnen, ReadWriteMany (RWX)-NFS-Volumes sicher über einen oder mehrere Kubernetes-Namespaces hinweg freizugeben. Diese Kubernetes-native Lösung bietet folgende Vorteile:
-
Mehrere Zugriffskontrollebenen zur Gewährleistung der Sicherheit
-
Funktioniert mit allen Trident NFS-Volume-Treibern
-
Keine Abhängigkeit von tridentctl oder anderen nicht-nativen Kubernetes-Funktionen
Dieses Diagramm veranschaulicht die gemeinsame Nutzung von NFS-Volumes über zwei Kubernetes-Namespaces hinweg.
Schnellstart
Sie können die NFS-Volume-Freigabe in nur wenigen Schritten einrichten.
Konfigurieren Sie den Quell-PVC, um das Volume freizugebenDer Inhaber des Quell-Namespace erteilt die Berechtigung zum Zugriff auf die Daten im Quell-PVC.
Erteilen Sie die Berechtigung zum Erstellen eines CR im Ziel-NamespaceDer Clusteradministrator erteilt dem Eigentümer des Ziel-Namespace die Berechtigung, die TridentVolumeReference CR zu erstellen.
Erstellen Sie TridentVolumeReference im Ziel-NamespaceDer Eigentümer des Ziel-Namensraums erstellt die TridentVolumeReference CR, um auf die Quell-PVC zu verweisen.
Erstellen Sie den untergeordneten PVC im Ziel-NamespaceDer Eigentümer des Ziel-Namensraums erstellt den untergeordneten PVC, um die Datenquelle aus dem Quell-PVC zu verwenden.
Konfigurieren Sie die Quell- und Ziel-Namespaces
Um die Sicherheit zu gewährleisten, erfordert die gemeinsame Nutzung über verschiedene Namespaces hinweg die Zusammenarbeit und das Handeln des Quell-Namespace-Inhabers, des Cluster-Administrators und des Ziel-Namespace-Inhabers. Die Benutzerrolle wird in jedem Schritt festgelegt.
-
Quellnamespace-Inhaber: Erstellen Sie die PVC (
pvc1im Quellnamespace, die die Berechtigung zur gemeinsamen Nutzung mit dem Zielnamespace (namespace2mithilfe dershareToNamespaceAnnotation gewährt.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc1 namespace: namespace1 annotations: trident.netapp.io/shareToNamespace: namespace2 spec: accessModes: - ReadWriteMany storageClassName: trident-csi resources: requests: storage: 100GiTrident erstellt das PV und sein Backend-NFS-Speichervolume.
-
Sie können die PVC mithilfe einer durch Kommas getrennten Liste für mehrere Namensräume freigeben. Zum Beispiel
trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4. -
Sie können für alle Namensräume freigeben
*. Zum Beispiel,trident.netapp.io/shareToNamespace: * -
Sie können die PVC jederzeit aktualisieren, um die
shareToNamespaceAnnotation einzuschließen.
-
-
Cluster-Administrator: Stellen Sie sicher, dass die korrekte RBAC-Konfiguration vorhanden ist, um dem Besitzer des Ziel-Namespace die Berechtigung zum Erstellen des TridentVolumeReference CR im Ziel-Namespace zu erteilen.
-
Ziel-Namespace-Inhaber: Erstellen Sie eine TridentVolumeReference CR im Ziel-Namespace, die auf den Quell-Namespace verweist
pvc1.apiVersion: trident.netapp.io/v1 kind: TridentVolumeReference metadata: name: my-first-tvr namespace: namespace2 spec: pvcName: pvc1 pvcNamespace: namespace1 -
Ziel-Namespace-Inhaber: Erstellen Sie einen PVC (
pvc2im Ziel-Namespace (namespace2unter Verwendung dershareFromPVC-Annotation, um den Quell-PVC zu kennzeichnen.kind: PersistentVolumeClaim apiVersion: v1 metadata: annotations: trident.netapp.io/shareFromPVC: namespace1/pvc1 name: pvc2 namespace: namespace2 spec: accessModes: - ReadWriteMany storageClassName: trident-csi resources: requests: storage: 100GiDie Größe des Ziel-PVC muss kleiner oder gleich der des Quell-PVC sein.
Trident liest die shareFromPVC Annotation auf dem Ziel-PVC und erstellt das Ziel-PV als untergeordnetes Volume ohne eigene Speicherressource, das auf das Quell-PV verweist und die Speicherressource des Quell-PV mitnutzt. Das Ziel-PVC und -PV erscheinen wie gewohnt verbunden.
Löschen eines freigegebenen Volumes
Sie können ein Volume löschen, das von mehreren Namespaces gemeinsam genutzt wird. Trident entfernt den Zugriff auf das Volume im Quell-Namespace und erhält den Zugriff für andere Namespaces, die das Volume gemeinsam nutzen. Wenn alle Namespaces, die auf das Volume verweisen, entfernt wurden, löscht Trident das Volume.
Verwenden Sie tridentctl get zur Abfrage untergeordneter Volumes
Mit dem[tridentctl Dienstprogramm können Sie den get Befehl ausführen, um untergeordnete Volumes abzurufen. Weitere Informationen finden Sie unter tridentctl commands and options.
Usage: tridentctl get [option]
Flags:
-
`-h, --help: Hilfe für Bände. -
--parentOfSubordinate string: Beschränken Sie die Abfrage auf das untergeordnete Quellvolume. -
--subordinateOf string: Beschränken Sie die Abfrage auf untergeordnete Elemente des Volumens.
Einschränkungen
-
Trident kann nicht verhindern, dass Ziel-Namespaces auf das gemeinsam genutzte Volume schreiben. Sie sollten Dateisperren oder andere Verfahren verwenden, um das Überschreiben von Daten auf dem gemeinsam genutzten Volume zu verhindern.
-
Sie können den Zugriff auf die Quell-PVC nicht widerrufen, indem Sie die
shareToNamespaceodershareFromNamespaceAnmerkungen entfernen oder dieTridentVolumeReferenceCR löschen. Um den Zugriff zu widerrufen, müssen Sie die untergeordnete PVC löschen. -
Snapshots, Klone und Spiegelungen sind auf untergeordneten Volumes nicht möglich.
Für weitere Informationen
Um mehr über den Volume-Zugriff über Namespaces hinweg zu erfahren:
-
Besuchen Sie "Gemeinsame Nutzung von Volumes zwischen Namespaces: Sagen Sie Hallo zum namespace-übergreifenden Volume-Zugriff".
-
Sehen Sie sich die Demo auf "NetAppTV" an.