Partager un volume NFS entre les espaces de noms
Avec Trident, vous pouvez créer un volume dans un espace de noms principal et le partager dans un ou plusieurs espaces de noms secondaires.
Caractéristiques
Le système TridentVolumeReference CR vous permet de partager en toute sécurité des volumes ReadWriteMaly (RWX) NFS sur un ou plusieurs espaces de noms Kubernetes. Cette solution Kubernetes-native présente plusieurs avantages :
-
Plusieurs niveaux de contrôle d'accès pour assurer la sécurité
-
Fonctionne avec tous les pilotes de volume NFS Trident
-
Pas de dépendance à tridentctl ou à toute autre fonctionnalité Kubernetes non native
Ce schéma illustre le partage de volumes NFS entre deux espaces de noms Kubernetes.
Démarrage rapide
Vous pouvez configurer le partage de volumes NFS en quelques étapes seulement.
Le propriétaire de l'espace de noms source autorise l'accès aux données dans la demande de volume persistant source.
L'administrateur de cluster accorde l'autorisation au propriétaire de l'espace de noms de destination pour créer le CR TridentVolumeReference.
Le propriétaire de l'espace de noms de destination crée le CR TridentVolumeReference pour faire référence au PVC source.
Le propriétaire de l'espace de noms de destination crée le PVC subalterne pour utiliser la source de données à partir du PVC source.
Configurer les espaces de noms source et de destination
Pour garantir la sécurité, le partage de l'espace de noms croisé nécessite une collaboration et une action du propriétaire de l'espace de noms source, de l'administrateur de cluster et du propriétaire de l'espace de noms de destination. Le rôle utilisateur est désigné dans chaque étape.
-
Propriétaire de l'espace de noms source: Créez le PVC (
pvc1
) dans l'espace de noms source qui accorde l'autorisation de partager avec l'espace de noms de destination (namespace2
) à l'aide de l'shareToNamespace
annotation.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc1 namespace: namespace1 annotations: trident.netapp.io/shareToNamespace: namespace2 spec: accessModes: - ReadWriteMany storageClassName: trident-csi resources: requests: storage: 100Gi
Trident crée le volume de stockage PV et son volume de stockage NFS back-end.
-
Vous pouvez partager le PVC sur plusieurs espaces de noms à l'aide d'une liste délimitée par des virgules. Par exemple :
trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4
. -
Vous pouvez partager avec tous les espaces de noms à l'aide de
*
. Par exemple :trident.netapp.io/shareToNamespace: *
-
Vous pouvez mettre à jour le PVC pour inclure le
shareToNamespace
annotation à tout moment.
-
-
Cluster admin: Créez le rôle personnalisé et kubeconfig pour accorder l'autorisation au propriétaire de l'espace de noms de destination de créer le CR TridentVolumeReference dans l'espace de noms de destination.
-
Propriétaire de l'espace de noms de destination : Créez un CR TridentVolumeReference dans l'espace de noms de destination qui fait référence à l'espace de noms source
pvc1
.apiVersion: trident.netapp.io/v1 kind: TridentVolumeReference metadata: name: my-first-tvr namespace: namespace2 spec: pvcName: pvc1 pvcNamespace: namespace1
-
Propriétaire de l'espace de noms de destination: Créer un PVC (
pvc2
) dans l'espace de noms de destination (namespace2
) à l'aide de l'shareFromPVC
Annotation pour désigner la PVC source.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: 100Gi
La taille du PVC de destination doit être inférieure ou égale à la PVC source.
Trident lit l' `shareFromPVC`annotation sur la demande de volume de destination et crée le volume persistant de destination en tant que volume subordonné sans ressource de stockage propre qui pointe vers le volume persistant source et partage la ressource de stockage du volume persistant source. La demande de volume persistant et la demande de volume persistant de destination apparaissent comme normales.
Supprimer un volume partagé
Vous pouvez supprimer un volume partagé entre plusieurs namespaces. Trident supprime l'accès au volume sur l'espace de noms source et maintient l'accès aux autres espaces de noms qui partagent le volume. Lorsque tous les espaces de noms qui référencent le volume sont supprimés, Trident supprime le volume.
Utiliser tridentctl get
pour interroger des volumes subordonnés
À l'aide du[tridentctl
vous pouvez exécuter l' get
commande pour obtenir des volumes subordonnés. Pour plus d'informations, consultez le lien :../trident-Reference/tridentctl.html[tridentctl
commandes et options].
Usage: tridentctl get [option]
Alarmes :
-
`-h, --help
: Aide pour les volumes. -
--parentOfSubordinate string
: Limiter la requête au volume source subordonné. -
--subordinateOf string
: Limiter la requête aux subordonnés du volume.
Limites
-
Trident ne peut pas empêcher les espaces de noms de destination d'écrire sur le volume partagé. Nous vous recommandons d'utiliser un verrouillage de fichiers ou d'autres processus pour éviter d'écraser les données du volume partagé.
-
Vous ne pouvez pas révoquer l'accès au PVC source en retirant le
shareToNamespace
oushareFromNamespace
annotations ou suppression duTridentVolumeReference
CR. Pour annuler l'accès, vous devez supprimer le PVC subalterne. -
Les snapshots, clones et la mise en miroir ne sont pas possibles sur les volumes subordonnés.
Pour en savoir plus
Pour en savoir plus sur l'accès aux volumes multi-espaces de noms :