Container Network File System (CNFS) permite gestionar sistemas de archivos NAS como recursos nativos de Kubernetes. Utilice un enfoque declarativo para crear, adoptar y montar almacenamiento NAS en cargas de trabajo como sitios web y análisis de datos, con soporte flexible para el aislamiento y la compartición de datos.
Requisitos previos
-
Cuenta con un clúster ACK Pro que ejecuta la versión 1.20 o posterior. Para actualizar su clúster, consulte Manually update an ACK cluster.
CNFS es compatible con la versión 1.20 cuando se utiliza con kubectl.
-
Asegúrese de que los componentes de almacenamiento cumplen con los siguientes requisitos de versión. Para actualizar los componentes, consulte Components.
csi-plugin y csi-provisioner: v1.24.11-5221f79-aliyun o posterior.
storage-operator: v1.26.2-1de13b6-aliyun o posterior.
-
Ha habilitado Apsara File Storage NAS. A continuación se describen los límites aplicables a los sistemas de archivos NAS. Para obtener más información, consulte Limits.
Solo se admiten los tipos de almacenamiento Capacity, Performance y Extreme de General-purpose NAS. Extreme Speed NAS no es compatible.
El número de sistemas de archivos NAS que puede crear por cuenta en una sola región es limited.
Para utilizar el cifrado KMS en sus sistemas de archivos NAS, debe habilitar Key Management Service (KMS). Para obtener más información, consulte Purchase a dedicated KMS instance.
Crear un sistema de archivos NAS
Métodos para agregar un sistema de archivos NAS
Elija cómo agregar un sistema de archivos NAS a su clúster.
Método | Descripción | Modo de aprovisionamiento de volúmenes | Casos de uso |
CNFS crea y gestiona automáticamente un sistema de archivos NAS con una configuración fija para un montaje rápido. | Volumen dinámico |
| |
Method 2: Create and use a NAS file system with custom parameters | CNFS crea un nuevo sistema de archivos NAS personalizable basado en los parámetros que usted especifique. |
| Ideal para casos de uso con requisitos específicos de rendimiento, cifrado o costo, o que requieren un control detallado del almacenamiento. |
CNFS adopta un sistema de archivos NAS existente para su gestión unificada. |
| Para integrar sin problemas un sistema de archivos NAS existente en su clúster. |
Método 1: Crear y usar automáticamente un sistema de archivos NAS
CNFS crea automáticamente un sistema de archivos NAS con una configuración predeterminada basada en el entorno de su clúster. El cifrado está deshabilitado de forma predeterminada. Si Capacity NAS no está disponible en la región actual, se utiliza Performance NAS en su lugar.
Después de crear el resource de CNFS y la StorageClass, las cargas de trabajo pueden solicitar almacenamiento mediante una PersistentVolumeClaim (PVC), la cual aprovisiona dinámicamente un PersistentVolume (PV) en el sistema de archivos NAS y lo monta en un pod.
kubectl
1. Crear un resource de CNFS Cree un objeto |
|
2. Crear una StorageClass Cree un objeto | |
3. Crear una PersistentVolumeClaim La aplicación solicita un volumen de almacenamiento mediante una PersistentVolumeClaim (PVC) y hace referencia a la StorageClass como su plantilla de configuración. | |
4. Crear una aplicación y montar la PVC Una vez creada la PVC, despliegue una aplicación de ejemplo, como un Deployment o StatefulSet, y monte el PV vinculado a la PVC en la aplicación. |
|
5. Comprobar el resultado |
|
Console
1. Crear un resource de CNFS |
|
2. Crear una StorageClass |
|
3. Crear una PersistentVolumeClaim |
|
4. Crear una aplicación y montar el volumen NAS | Cuando usted create a Deployment o create a StatefulSet, puede montar una PVC en un contenedor en la sección Volumes de la página Container. Este ejemplo muestra cómo montar la PVC en la ruta /data dentro de un contenedor. Para Volume Type, seleccione Cloud Volume. Para Mount Source, seleccione cnfs-nas-pvc. Para Container Path, introduzca |
Método 2: Crear y usar un sistema de archivos NAS personalizado
Utilice CNFS para crear un sistema de archivos NAS con parámetros personalizados.
Defina un recurso
ContainerNetworkFileSystempara aprovisionar un nuevo sistema de archivos NAS.Haga que el sistema de archivos esté disponible para las aplicaciones en su clúster mediante la creación de un volumen persistente estático o una clase de almacenamiento.
kubectl
1. Crear un sistema de archivos NAS personalizado Cree un objeto |
|
2. Crear un volumen persistente o una clase de almacenamiento Después de crear el recurso CNFS, elija cómo accederán las aplicaciones al sistema de archivos NAS.
| Aprovisionamiento estáticoPara obtener más información sobre los parámetros del volumen persistente, consulte Use a static NAS volume. Aprovisionamiento dinámicoPara obtener más información sobre los parámetros de la clase de almacenamiento, consulte Use a dynamic NAS volume. |
3. Crear una solicitud de volumen persistente Cree una solicitud de volumen persistente que utilice el volumen persistente estático o la clase de almacenamiento que creó. | Aprovisionamiento estáticoAprovisionamiento dinámico |
4. Crear una aplicación y montar el sistema de archivos NAS Una vez creada la solicitud de volumen persistente, móntela en su aplicación. | |
5. Comprobar el resultado |
|
Console
|
|
| PV
Clase de almacenamiento
|
|
|
| Cuando create a Deployment o create a StatefulSet, puede montar un PVC en un contenedor en la sección Volumes de la página Container. Este ejemplo muestra cómo montar el PVC en la ruta /data dentro de un contenedor. Para Volume Type, seleccione Cloud Volume. Para Mount Source, seleccione cnfs-nas-pvc. Para Container Path, introduzca |
Método 3: Uso de un sistema de archivos NAS existente
Utilice CNFS para integrar un sistema de archivos NAS existente en su clúster y permitir que las aplicaciones lo monten y accedan a él.
kubectl
1. Crear un resource de CNFS a partir de un sistema de archivos NAS existente Cree un resource de |
|
2. Crear un volumen persistente o una clase de almacenamiento Una vez creado el resource de CNFS, elija cómo accederán las aplicaciones al sistema de archivos NAS.
| Aprovisionamiento estáticoPara obtener más información sobre los parámetros del volumen persistente, consulte Use a static NAS volume. Aprovisionamiento dinámicoPara obtener más información sobre los parámetros de la clase de almacenamiento, consulte Use a dynamic NAS volume. |
3. Crear una solicitud de volumen persistente Cree una solicitud de volumen persistente que utilice el volumen persistente estático o la clase de almacenamiento que creó previamente. | Aprovisionamiento estáticoAprovisionamiento dinámico |
4. Crear una aplicación y montar el sistema de archivos NAS Una vez creada la solicitud de volumen persistente, móntela en su aplicación. | |
5. Comprobar el resultado |
|
Console
|
|
| PV
Clase de almacenamiento
|
|
|
| Cuando create a Deployment o create a StatefulSet, puede montar un PVC en un contenedor desde la sección Volumes de la página Container. Este ejemplo muestra cómo montar el PVC en la ruta /data dentro de un contenedor. Para Volume Type, seleccione Cloud Volume. Para Mount Source, seleccione cnfs-nas-pvc. Para Container Path, introduzca |
Configuración de almacenamiento compartido y aislado
Después de crear o incorporar un sistema de archivos NAS, configúrelo para el intercambio o el aislamiento de datos según los requisitos de su carga de trabajo.
Configuración de un volumen NAS compartido
Para compartir datos entre pods, monte el mismo directorio de un sistema de archivos NAS en varios pods.
Mecanismo principal: Este método utiliza un volumen de almacenamiento estático. En un volumen persistente (PV), la
pathdeclarada es idéntica a la ruta final que monta la interfaz de almacenamiento de contenedores (CSI). Por lo tanto, cuando varios pods montan este PV estático mediante la misma solicitud de volumen persistente (PVC), todos acceden al mismo directorio de almacenamiento, lo que permite el intercambio de datos.Configuración clave: En la plantilla del pod (
.spec.template) de su carga de trabajo, establezca el parámetropersistentVolumeClaim.claimNamedentro del campovolumescon el mismo nombre de PVC.
1. Cree un PV y una PVC que apunten a un directorio específico | |
2. Cree un despliegue de ejemplo | |
3. Compruebe el resultado |
Configuración de un volumen NAS aislado
Para lograr el aislamiento de datos en escenarios como el multiinquilinaje, puede proporcionar un directorio de almacenamiento independiente y aislado para cada pod o grupo de pods.
Mecanismo principal: Este método utiliza un volumen de almacenamiento dinámico. En la clase de almacenamiento, el controlador CSI crea automáticamente un subdirectorio separado con el mismo nombre que el PV bajo la
pathdeclarada. Este subdirectorio funciona como punto de montaje. Como resultado, cada PVC se vincula a un directorio de almacenamiento distinto, lo que permite el aislamiento de datos.-
Configuración clave:
En la clase de almacenamiento asociada con el statefulset, utilice el parámetro
volumeAs: subpath(el valor predeterminado) dentro deparameterspara crear un subdirectorio aislado para cada PVC.En el statefulset, defina
volumeClaimTemplatespara crear y vincular automáticamente una PVC independiente para cada pod.
1. Cree una clase de almacenamiento compatible con subdirectorios dinámicos | |
2. Cree un statefulset de ejemplo | |
3. Compruebe el resultado |
Recomendaciones para entornos de producción
-
Seguridad de los datos
Cifrado de datos: Al crear un nuevo sistema de archivos NAS, configure
parameterscomoencryptType: SSE-KMSen CNFS para habilitar el cifrado de datos en reposo en el servidor NAS y mejorar la seguridad.Protección de datos y política de recuperación: La
reclaimPolicypara CNFS está fijada comoRetain. Eliminar un objeto CNFS en Kubernetes no elimina la instancia NAS del backend. Sin embargo, la política de recuperación de un PV se define en su StorageClass. En un entorno de producción, se recomienda establecer la política comoRetainpara evitar eliminaciones accidentales.Función de papelera de reciclaje: Al crear un NAS, se recomienda habilitar la función de papelera de reciclaje con el parámetro
enableTrashCan: "true"para prevenir eliminaciones accidentales.Escrituras simultáneas: Cuando varios pods montan el mismo volumen de almacenamiento compartido, diseñe su aplicación para evitar escrituras simultáneas en el mismo archivo, ya que esto puede causar corrupción de datos.
-
Operaciones y gestión
Aislamiento de rendimiento: Aunque los volúmenes de almacenamiento aislados proporcionan aislamiento a nivel de datos, todos comparten las IOPS y el rendimiento de la misma instancia NAS del backend. Para aplicaciones críticas que requieren un rendimiento de E/S estricto y una latencia estable, aprovisione un sistema de archivos NAS dedicado.
-
Gestión de capacidad: Establezca
allowVolumeExpansion: trueen la StorageClass para ampliar la cuota de directorio del volumen de almacenamiento.El valor
requests.storageen una PVC se utiliza principalmente para decisiones de programación y no representa el límite de cuota para todo el sistema de archivos NAS. Monitoreo y alertas: Utilice container storage monitoring para configurar alertas sobre métricas clave como la utilización de capacidad, IOPS y rendimiento, con el fin de identificar proactivamente cuellos de botella de capacidad o rendimiento.
-
Optimización de costos
Elija el tipo de almacenamiento adecuado: Seleccione un tipo de NAS según sus requisitos de costo y rendimiento. Para obtener orientación, consulte Select a NAS type. Por ejemplo, Capacity NAS ofrece un precio más bajo y es adecuado para cargas de trabajo de intercambio de archivos o archivado que no requieren baja latencia.
Libere recursos oportunamente: Cuando una aplicación se da de baja, limpie los recursos no utilizados. Confirme si necesita delete el sistema de archivos NAS del backend para evitar costos innecesarios.
Referencias
Verificación de almacenamiento compartido, aislamiento de datos y almacenamiento persistente
Después de montar el sistema de archivos NAS, siga estos pasos para comprobar que el almacenamiento funciona como se espera.
-
Verificación de almacenamiento compartido y persistente para un despliegue
-
Verificación de aislamiento de datos y almacenamiento persistente para un StatefulSet
YAML de CNFS
Ejecute el comando kubectl get cnfs/<cnfsName> -o yaml para consultar la configuración completa y el estado en tiempo real de un objeto CNFS.
Esta sección proporciona un ejemplo de la salida al ejecutar el comando kubectl get cnfs/cnfs-nas-filesystem -o yaml para el escenario descrito en Method 2.
YAML de ejemplo
Parámetros
Limpieza de recursos
Para evitar cargos inesperados y garantizar la seguridad de los datos, siga estos pasos para liberar los recursos que ya no necesite.
-
Elimine la carga de trabajo
Acción: Elimine todas las aplicaciones que utilicen la PVC correspondiente, como despliegues y StatefulSets. Esta acción detiene los pods y desmonta los volúmenes de almacenamiento.
Comando de ejemplo:
kubectl delete deployment <your-deployment-name>
-
Elimine la PVC
-
Acción: Elimine la PVC asociada con la aplicación. El resultado de la eliminación del PV depende de la
reclaimPolicy.Retain(recomendado): Después de eliminar la PVC, se conservan los datos y el directorio en el NAS del backend.-
Delete: Después de eliminar la PVC, también se elimina el PV vinculado. La forma en que el NAS del backend maneja los datos y el directorio depende del parámetroarchiveOnDeleteen laStorageClass."true"(predeterminado): En lugar de eliminarse, el directorio y los archivos se renombran aarchived-{pvName}.{timestamp}."false": Los datos se eliminan permanentemente. Esta acción es irreversible. Utilice esta configuración con precaución.
Comando de ejemplo:
kubectl delete pvc <your-pvc-name>
-
-
Elimine el PV
-
Acción: Elimine el PV. Este paso se aplica principalmente a PVs aprovisionados estáticamente o a PVs que están en estado
Releasedporque su política de recuperación está configurada comoRetain.Esta acción solo elimina la definición del recurso de Kubernetes y no borra los datos del NAS en el backend.
Comando de ejemplo:
kubectl delete pv <your-pv-name>
-
-
Elimine las definiciones de almacenamiento de Kubernetes (opcional)
-
Acción: Elimine los objetos StorageClass y CNFS si ya no son necesarios.
Esta acción solo elimina las definiciones de recursos de Kubernetes y no borra los datos del NAS en el backend.
Comandos de ejemplo:
kubectl delete sc <your-storageclass-name>,kubectl delete cnfs <your-cnfs-name>
-
-
Elimine el sistema de archivos NAS del backend
Acción: Consulte Delete a file system. Esta acción elimina permanentemente todos los datos en el NAS y es irreversible. Proceda con precaución. Antes de realizar esta acción, asegúrese de que ninguna carga de trabajo dependa de este NAS.