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
Mit dem TridentVolumeReference CR können Sie ReadWriteMany (RWX) NFS-Volumes sicher über einen oder mehrere Kubernetes-Namespaces hinweg freigeben. 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
Die Einrichtung der NFS-Volume-Freigabe ist in wenigen Schritten erledigt.
Konfigurieren Sie den Quell-PVC so, dass er das Volume gemeinsam nutzt.Der 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 eine TridentVolumeReference im Ziel-Namespace.Der Eigentümer des Ziel-Namespace 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 von Namespaces über verschiedene Namensräume 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: PVC erstellen(
pvc1) im Quell-Namespace, der die Berechtigung zur gemeinsamen Nutzung mit dem Ziel-Namespace erteilt(namespace2) unter Verwendung dershareToNamespaceAnmerkung.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 zugehöriges NFS-Speichervolume.
-
Sie können die PVC mithilfe einer durch Kommas getrennten Liste an mehrere Namensräume weitergeben. Zum Beispiel,
trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4. -
Sie können die Freigabe für alle Namensräume nutzen
*. Zum Beispiel,trident.netapp.io/shareToNamespace: * -
Sie können das PVC aktualisieren, um Folgendes einzuschließen:
shareToNamespaceAnmerkungen jederzeit möglich.
-
-
Clusteradministrator: Stellen Sie sicher, dass das richtige RBAC vorhanden ist, um dem Besitzer des Zielnamespace die Berechtigung zum Erstellen des TridentVolumeReference CR im Zielnamespace zu erteilen.
-
Inhaber des Ziel-Namespace: Erstellen Sie im Ziel-Namespace eine TridentVolumeReference CR, 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 -
Inhaber des Ziel-Namensraums: Erstellen Sie eine PVC(
pvc2) im Ziel-Namespace(namespace2) unter Verwendung dershareFromPVCAnmerkung zur Kennzeichnung des Quell-PVC.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-Rohrs muss kleiner oder gleich der Größe des Quell-PVC-Rohrs sein.
Trident liest die shareFromPVC Es wird eine Annotation auf dem Ziel-PVC vorgenommen und das Ziel-PV als untergeordnetes Volume ohne eigene Speicherressource erstellt, das auf das Quell-PV verweist und die Speicherressource des Quell-PV mitnutzt. Die Ziel-PVC und PV scheinen normal verbunden zu sein.
Ein freigegebenes Volume löschen
Sie können ein Volume löschen, das von mehreren Namespaces gemeinsam genutzt wird. Trident wird den Zugriff auf das Volume im Quell-Namespace entfernen und den Zugriff für andere Namespaces, die das Volume gemeinsam nutzen, aufrechterhalten. Wenn alle Namespaces, die auf das Volume verweisen, entfernt werden, löscht Trident das Volume.
Verwenden tridentctl get Abfrage untergeordneter Volumes
Verwenden des[tridentctl Mit diesem Dienstprogramm können Sie das ausführen get Befehl zum Abrufen untergeordneter Volumes. Weitere Informationen finden Sie unter folgendem Link:../trident-reference/tridentctl.html[tridentctl Befehle und Optionen].
Usage: tridentctl get [option]
Flaggen:
-
``-h, --help`Hilfe für Bände.
-
--parentOfSubordinate string: Beschränken Sie die Abfrage auf das untergeordnete Quellvolume. -
--subordinateOf string: Beschränke die Abfrage auf untergeordnete Elemente des Volumens.
Einschränkungen
-
Trident kann nicht verhindern, dass Ziel-Namespaces auf das gemeinsam genutzte Volume schreiben. Sie sollten Dateisperrungen oder andere Verfahren verwenden, um das Überschreiben von gemeinsam genutzten Datenträgerdaten zu verhindern.
-
Der Zugriff auf die Quell-PVC kann nicht durch Entfernen der
shareToNamespaceodershareFromNamespaceAnmerkungen oder das Löschen derTridentVolumeReferenceCR. Um den Zugriff zu widerrufen, müssen Sie die untergeordnete PVC löschen. -
Snapshots, Klone und Spiegelungen sind auf untergeordneten Volumes nicht möglich.
Weitere Informationen
Um mehr über den Volume-Zugriff über Namespaces hinweg zu erfahren:
-
Sehen Sie sich die Demo an auf"NetAppTV" .