Comparte un volumen NFS entre espacios de nombres
Con Trident, puedes crear un volumen en un espacio de nombres primario y compartirlo en uno o más espacios de nombres secundarios.
Funciones
El CR TridentVolumeReference te permite compartir de forma segura volúmenes NFS ReadWriteMany (RWX) entre uno o varios espacios de nombres de Kubernetes. Esta solución nativa de Kubernetes tiene los siguientes beneficios:
-
Múltiples niveles de control de acceso para garantizar la seguridad
-
Funciona con todos los controladores de volumen NFS de Trident
-
No depende de tridentctl ni de ninguna otra función no nativa de Kubernetes
Este diagrama ilustra el uso compartido de volúmenes NFS en dos espacios de nombres de Kubernetes.
Inicio rápido
Puedes configurar el uso compartido de volúmenes NFS en unos pocos pasos.
Configura el PVC de origen para compartir el volumenEl propietario del espacio de nombres de origen otorga permiso para acceder a los datos en el PVC de origen.
Otorga permiso para crear una CR en el espacio de nombres de destinoEl administrador del clúster otorga permiso al propietario del espacio de nombres de destino para crear el CR TridentVolumeReference.
Crea TridentVolumeReference en el espacio de nombres de destinoEl propietario del espacio de nombres de destino crea el CR TridentVolumeReference para hacer referencia al PVC de origen.
Crea la PVC subordinada en el espacio de nombres de destinoEl propietario del espacio de nombres de destino crea el PVC subordinado para usar la fuente de datos del PVC de origen.
Configura los espacios de nombres de origen y destino
Para garantizar la seguridad, el uso compartido entre espacios de nombres requiere la colaboración y acción del propietario del espacio de nombres de origen, el administrador del clúster y el propietario del espacio de nombres de destino. El rol del usuario se designa en cada paso.
-
Propietario del espacio de nombres de origen: Crea el PVC (
pvc1) en el espacio de nombres de origen que da permiso para compartir con el espacio de nombres de destino (namespace2) usando la anotaciónshareToNamespace.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 el PV y su volumen de almacenamiento NFS de backend.
-
Puedes compartir el PVC con varios espacios de nombres usando una lista separada por comas. Por ejemplo,
trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4. -
Puedes compartir a todos los espacios de nombres usando
*. Por ejemplo,trident.netapp.io/shareToNamespace: * -
Puedes actualizar el PVC para incluir la anotación
shareToNamespaceen cualquier momento.
-
-
Administrador del clúster: Asegúrate de que existe el RBAC adecuado para conceder permiso al propietario del espacio de nombres de destino para crear el CR TridentVolumeReference en el espacio de nombres de destino.
-
Propietario del espacio de nombres de destino: crea una TridentVolumeReference CR en el espacio de nombres de destino que hace referencia al espacio de nombres de origen
pvc1.apiVersion: trident.netapp.io/v1 kind: TridentVolumeReference metadata: name: my-first-tvr namespace: namespace2 spec: pvcName: pvc1 pvcNamespace: namespace1 -
Propietario del espacio de nombres de destino: crea un PVC (
pvc2) en el espacio de nombres de destino (namespace2) usando la anotaciónshareFromPVCpara designar el PVC de origen.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: 100GiEl tamaño del PVC de destino debe ser menor o igual que el PVC de origen.
Trident lee la shareFromPVC anotación en el PVC de destino y crea el PV de destino como un volumen subordinado sin recurso de almacenamiento propio que apunta al PV de origen y comparte el recurso de almacenamiento del PV de origen. El PVC y el PV de destino aparecen vinculados de forma normal.
Eliminar un volumen compartido
Puedes eliminar un volumen que está compartido entre varios espacios de nombres. Trident quitará el acceso al volumen en el espacio de nombres de origen y mantendrá el acceso para los demás espacios de nombres que comparten el volumen. Cuando se eliminan todos los espacios de nombres que hacen referencia al volumen, Trident elimina el volumen.
Usa tridentctl get para consultar volúmenes subordinados
Usando la utilidad[tridentctl, puedes ejecutar el comando get para obtener volúmenes subordinados. Para más información, consulta el enlace:../trident-reference/trident-cl.html[tridentctl comandos y opciones].
Usage: tridentctl get [option]
Banderas:
-
`-h, --help: ayuda para volúmenes. -
--parentOfSubordinate string: limitar la consulta al volumen fuente subordinado. -
--subordinateOf string: limitar la consulta a los subordinados del volumen.
Limitaciones
-
Trident no puede evitar que los espacios de nombres de destino escriban en el volumen compartido. Deberías usar el bloqueo de archivos u otros procesos para evitar sobrescribir los datos del volumen compartido.
-
No puedes revocar el acceso al PVC de origen eliminando las anotaciones
shareToNamespaceoshareFromNamespaceo eliminando elTridentVolumeReferenceCR. Para revocar el acceso, tienes que borrar el PVC subordinado. -
Las instantáneas, clones y la replicación no son posibles en volúmenes subordinados.
Para más información
Para obtener más información sobre el acceso a volúmenes entre espacios de nombres: