Condividere un volume NFS tra namespace
Utilizzando Trident, puoi creare un volume in uno spazio dei nomi primario e condividerlo in uno o più spazi dei nomi secondari.
Caratteristiche
La CR TridentVolumeReference consente di condividere in modo sicuro volumi NFS ReadWriteMany (RWX) su uno o più namespace Kubernetes. Questa soluzione nativa per Kubernetes offre i seguenti vantaggi:
-
Più livelli di controllo degli accessi per garantire la sicurezza
-
Funziona con tutti i driver di volume Trident NFS
-
Nessuna dipendenza da tridentctl o da qualsiasi altra funzionalità non nativa di Kubernetes
Questo diagramma illustra la condivisione del volume NFS tra due namespace Kubernetes.
Avvio rapido
È possibile configurare la condivisione del volume NFS in pochi semplici passaggi.
Configurare il PVC di origine per condividere il volumeIl proprietario dello spazio dei nomi di origine concede il permesso di accedere ai dati nel source PVC.
Concedere il permesso di creare un CR nello spazio dei nomi di destinazioneL'amministratore del cluster concede il permesso al proprietario dello spazio dei nomi di destinazione di creare il CR TridentVolumeReference.
Creare TridentVolumeReference nello spazio dei nomi di destinazioneIl proprietario dello spazio dei nomi di destinazione crea il TridentVolumeReference CR per fare riferimento al PVC di origine.
Crea il PVC subordinato nello spazio dei nomi di destinazioneIl proprietario dello spazio dei nomi di destinazione crea il PVC subordinato per utilizzare l'origine dati dal PVC di origine.
Configurare gli spazi dei nomi di origine e di destinazione
Per garantire la sicurezza, la condivisione tra namespace richiede la collaborazione e l'azione del proprietario del namespace di origine, dell'amministratore del cluster e del proprietario del namespace di destinazione. Il ruolo dell'utente viene assegnato in ogni fase.
-
Proprietario dello spazio dei nomi di origine: crea il PVC (
pvc1) nello spazio dei nomi di origine che concede l'autorizzazione alla condivisione con lo spazio dei nomi di destinazione (namespace2) utilizzando l'annotazioneshareToNamespace.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 crea il PV e il suo volume di archiviazione NFS backend.
-
È possibile condividere il PVC con più namespace utilizzando un elenco delimitato da virgole. Ad esempio,
trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4. -
Puoi condividere con tutti gli spazi dei nomi utilizzando
*. Ad esempio,trident.netapp.io/shareToNamespace: * -
È possibile aggiornare il PVC per includere l `shareToNamespace`annotazione in qualsiasi momento.
-
-
Amministratore del cluster: assicurarsi che sia presente il corretto RBAC per concedere l'autorizzazione al proprietario dello spazio dei nomi di destinazione di creare il CR TridentVolumeReference nello spazio dei nomi di destinazione.
-
Proprietario dello spazio dei nomi di destinazione: Creare un TridentVolumeReference CR nello spazio dei nomi di destinazione che faccia riferimento allo spazio dei nomi di origine
pvc1.apiVersion: trident.netapp.io/v1 kind: TridentVolumeReference metadata: name: my-first-tvr namespace: namespace2 spec: pvcName: pvc1 pvcNamespace: namespace1 -
Proprietario dello spazio dei nomi di destinazione: Crea un PVC (
pvc2nello spazio dei nomi di destinazione (namespace2utilizzando l'annotazioneshareFromPVCper designare il PVC di origine.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: 100GiLa dimensione del PVC di destinazione deve essere inferiore o uguale a quella del PVC di origine.
Trident legge l' `shareFromPVC`annotazione sul PVC di destinazione e crea il PV di destinazione come volume subordinato, senza risorse di storage proprie, che punta al PV di origine e condivide la risorsa di storage del PV di origine. Il PVC di destinazione e il PV di destinazione appaiono vincolati come di consueto.
Elimina un volume condiviso
È possibile eliminare un volume condiviso tra più namespace. Trident rimuoverà l'accesso al volume nel namespace di origine e manterrà l'accesso per gli altri namespace che condividono il volume. Quando tutti i namespace che fanno riferimento al volume vengono rimossi, Trident elimina il volume.
Utilizzare tridentctl get per interrogare i volumi subordinati
Utilizzando l'[tridentctl`utility, è possibile eseguire il `get`comando per ottenere volumi subordinati. Per ulteriori informazioni, consultare `tridentctl comandi e opzioni.
Usage: tridentctl get [option]
Flag:
-
`-h, --help: Aiuto per i volumi. -
--parentOfSubordinate string: Limita la query al volume sorgente subordinato. -
--subordinateOf string: Limita la query ai subordinati del volume.
Limitazioni
-
Trident non può impedire ai namespace di destinazione di scrivere sul volume condiviso. È consigliabile utilizzare il blocco dei file o altri processi per impedire la sovrascrittura dei dati del volume condiviso.
-
Non è possibile revocare l'accesso al PVC sorgente rimuovendo le
shareToNamespaceoshareFromNamespaceannotazioni o eliminando ilTridentVolumeReferenceCR. Per revocare l'accesso, è necessario eliminare il PVC subordinato. -
Snapshot, cloni e mirroring non sono possibili sui volumi subordinati.
Per ulteriori informazioni
Per saperne di più sull'accesso ai volumi tra namespace:
-
Visita "Condivisione di volumi tra namespace: dai il benvenuto all'accesso cross-namespace ai volumi".
-
Guarda la demo su "NetAppTV".