Container Network File System (CNFS) permite gestionar los sistemas de archivos NAS como objetos nativos de Kubernetes que se pueden crear y utilizar de forma declarativa. Esto proporciona volúmenes persistentes sencillos y eficientes para cargas de trabajo como sitios web y análisis de datos, además de admitir diversos casos de uso, como el aislamiento y la compartición de datos.
Requisitos previos
-
Se requiere un clúster administrado ACK Pro con la versión 1.20 o posterior. Para actualizar el clúster, consulte Manually upgrade a cluster.
La gestión de CNFS con kubectl requiere la versión 1.20 o posterior.
-
Es obligatorio contar con las siguientes versiones de complementos de almacenamiento. 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.
-
El servicio File Storage NAS debe estar activado. A continuación se detallan los límites aplicables a los sistemas de archivos NAS. Para obtener más información, consulte Limitations.
Solo son compatibles los sistemas de archivos NAS de propósito general de los tipos Capacity, Performance y Premium; Extreme NAS no es compatible.
Existe un upper limit en la cantidad de sistemas de archivos NAS que se pueden crear por cuenta en una sola región.
Para usar el cifrado KMS en un sistema de archivos NAS, active el servicio KMS. Para obtener más información, consulte Activate Key Management Service.
Crear un sistema de archivos NAS
Crear y usar un sistema de archivos NAS
Antes de empezar, elija cómo proporcionar un sistema de archivos NAS a su clúster.
Método | Descripción | Método 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 montajes rápidos. | volumen dinámico |
| |
CNFS crea un nuevo sistema de archivos NAS personalizable según los parámetros que especifique. |
| Cuando tiene requisitos específicos de rendimiento, cifrado o costo, o necesita una gestión detallada del almacenamiento. | |
CNFS integra un sistema de archivos NAS existente para su gestión centralizada. |
| Para integrar un sistema de archivos NAS existente en su clúster. |
Método 1: Crear automáticamente un sistema de archivos NAS
Puede usar Container Network File System (CNFS) para crear automáticamente un sistema de archivos NAS con una configuración predeterminada. CNFS crea el sistema de archivos según el entorno de su clúster. De forma predeterminada, el sistema de archivos no está cifrado. Si Capacity NAS no es compatible con la región actual, se crea un sistema de archivos Performance NAS en su lugar.
Después de crear un recurso CNFS y una StorageClass, su carga de trabajo puede solicitar almacenamiento mediante un PersistentVolumeClaim (PVC). Esto crea dinámicamente un PersistentVolume (PV) en el sistema de archivos NAS y lo monta en un Pod.
kubectl
1. Crear un CNFS Cree un objeto |
|
2. Crear una StorageClass Cree un objeto | |
3. Crear un PVC La aplicación solicita un volumen mediante un PVC y hace referencia a la StorageClass como su plantilla de configuración. | |
4. Crear una aplicación y montar el PVC Una vez creado el PVC, despliegue una aplicación de ejemplo, como un Deployment o un StatefulSet, y monte el PV vinculado al PVC en la aplicación. |
|
5. Comprobar los resultados |
|
Console
1. Crear un CNFS |
|
2. Crear una StorageClass |
|
3. Crear un PVC |
|
4. Crear una aplicación y montar el sistema de archivos NAS | Al crear un Deployment o un StatefulSet, puede montar un PVC en un contenedor desde la sección Volumes de la página Container. El siguiente ejemplo muestra cómo montar el sistema de archivos NAS creado con CNFS en la ruta /data de un contenedor. Detalles de configuración: Establezca Volume Type en Cloud Storage, seleccione el PVC de CNFS NAS correspondiente (por ejemplo, |
Método 2: Crear un sistema de archivos NAS personalizado
Utilice Container Network File System (CNFS) para crear un sistema de archivos NAS con parámetros personalizados.
Defina un recurso
ContainerNetworkFileSystempara aprovisionar un nuevo sistema de archivos NAS.Ponga el sistema de archivos a disposición de las aplicaciones del clúster mediante la creación de un volumen persistente (PV) estático o una StorageClass dinámica.
kubectl
1. Crear un sistema de archivos NAS personalizado Cree un objeto |
|
2. Crear un PV o una StorageClass Una vez creado el CNFS, elija cómo se conectará y utilizará su aplicación el sistema de archivos NAS.
| PV estáticoPara obtener más información sobre los parámetros de PV, consulte Use static NAS volumes. StorageClass dinámicaPara obtener más información sobre los parámetros de StorageClass, consulte Use dynamic NAS volumes. |
3. Crear una PVC Cree una solicitud de volumen persistente (PVC) que haga referencia al sistema de archivos NAS basándose en el volumen persistente estático o la StorageClass dinámica que creó anteriormente. | PV estáticoStorageClass dinámica |
4. Crear una aplicación y montar el sistema de archivos NAS Una vez creada la solicitud de volumen persistente (PVC), monte el PV vinculado en su aplicación. | |
5. Comprobar el resultado |
|
Consola
|
|
| PV
StorageClass
|
|
|
| Al crear un Deployment o un StatefulSet, puede montar una PVC en un contenedor desde la sección Volumes de la página Container. El siguiente ejemplo muestra cómo montar el sistema de archivos NAS creado con CNFS en la ruta /data dentro de un contenedor. Detalles de configuración: Establezca Volume Type en Cloud Storage, seleccione la PVC de NAS CNFS correspondiente (por ejemplo, |
Método 3: Uso de un sistema de archivos NAS existente
Utilice CNFS para conectar un sistema de archivos NAS existente a su clúster y ponerlo a disposición de las aplicaciones.
kubectl
1. Creación de un CNFS para un sistema de archivos NAS existente Cree un recurso |
|
2. Creación de un PV o StorageClass Una vez creado el CNFS, elija cómo se conectará y utilizará su aplicación el sistema de archivos NAS.
| PV estáticoPara obtener más información sobre los parámetros de PV, consulte Use static NAS volumes. StorageClass dinámicaPara obtener más información sobre los parámetros de StorageClass, consulte Use dynamic NAS volumes. |
3. Creación de un PVC Cree una solicitud de volumen persistente (PVC) que haga referencia al sistema de archivos NAS según el volumen persistente estático o la StorageClass dinámica que creó anteriormente. | PV estáticoStorageClass dinámica |
4. Creación de una aplicación y montaje del sistema de archivos NAS Una vez creada la solicitud de volumen persistente (PVC), monte el PV vinculado en su aplicación. | |
5. Comprobación del resultado |
|
Console
|
|
| PV
StorageClass
|
|
|
| Al crear un Deployment o un StatefulSet, puede montar un PVC en un contenedor desde la sección Volumes de la página Container. El siguiente ejemplo muestra cómo montar el sistema de archivos NAS creado con CNFS en la ruta /data de un contenedor. Detalles de configuración: Establezca Volume Type en Cloud Storage, seleccione el PVC de CNFS NAS correspondiente (por ejemplo, |
Configuración de almacenamiento compartido y aislado
Una vez creado un sistema de archivos NAS, puede configurarlo como almacenamiento compartido o aislado para cumplir con los requisitos de su aplicación.
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 como un volumen compartido.
Funcionamiento: Este método utiliza un volumen estático. La
pathespecificada en el PersistentVolume (PV) es exactamente el directorio que monta el controlador CSI. Cuando varios pods montan este PV mediante el mismo PersistentVolumeClaim (PVC), todos acceden al mismo directorio, lo que permite compartir datos.Configuración clave: En la sección
volumesde la plantilla de pod de su carga de trabajo (.spec.template), establezca el parámetropersistentVolumeClaim.claimNamecon el mismo nombre de PVC.
1. Crear un PV y un PVC que apunten a un directorio específico | |
2. Crear un Deployment de ejemplo | |
3. Comprobar el resultado |
Configuración de un volumen NAS aislado
Para casos de uso que requieren aislamiento de datos, como entornos multiinquilino, puede asignar a cada pod o grupo de pods un directorio de almacenamiento dedicado.
Funcionamiento: Este método utiliza un volumen dinámico. El controlador CSI crea automáticamente un subdirectorio dedicado con el mismo nombre que el PV dentro de la
pathespecificada para usarlo como punto de montaje. Dado que cada PVC se vincula a un subdirectorio independiente, se garantiza el aislamiento de los datos.-
Configuración clave:
En la sección
parametersde su StorageClass, asegúrese de quevolumeAs: subpathesté configurado. Esta opción (que es el valor predeterminado) crea un subdirectorio dedicado para cada PVC.En la definición del StatefulSet, utilice la sección
volumeClaimTemplatespara crear y vincular automáticamente un PVC único para cada pod.
1. Crear una StorageClass para la creación dinámica de subdirectorios | |
2. Crear un StatefulSet de ejemplo | |
3. Comprobar el resultado |
Recomendaciones para producción
-
Seguridad de los datos
Cifrado de datos: Al crear un nuevo sistema de archivos NAS, configure
encryptType: SSE-KMSen losparametersdel objeto CNFS. Esto habilita el cifrado del lado del servidor y mejora la seguridad de los datos.Protección de datos y directiva de recuperación: La
reclaimPolicyde un objeto CNFS siempre esRetain, lo que significa que eliminar el objeto CNFS en Kubernetes no elimina la instancia NAS del backend. Sin embargo, la directiva de recuperación de un PV se define en su StorageClass. Para entornos de producción, establezca la directiva de recuperación enRetainpara evitar la pérdida accidental de datos.Papelera de reciclaje: Al crear un sistema de archivos NAS, habilite la papelera de reciclaje mediante
enableTrashCan: "true"para prevenir la eliminación accidental de datos.Escrituras simultáneas: Cuando varios pods montan el mismo volumen de almacenamiento compartido, evite que múltiples instancias de la aplicación escriban en el mismo archivo a nivel de aplicación. Esto previene la corrupción de archivos por escrituras concurrentes.
-
Operaciones y gestión
Aislamiento de rendimiento: Los volúmenes de almacenamiento aislados solo proporcionan aislamiento a nivel de datos. Todos los volúmenes aislados comparten las IOPS y el throughput de la misma instancia NAS del backend. Para aplicaciones críticas con requisitos estrictos de rendimiento de E/S y necesidad de latencia estable, aprovisione un sistema de archivos NAS dedicado.
-
Gestión de capacidad: Configure
allowVolumeExpansion: trueen su StorageClass para permitir la expansión de la cuota de directorio del volumen de almacenamiento.El valor de
requests.storageen un PVC se usa principalmente para decisiones de programación y no establece una cuota estricta en 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 throughput de su sistema de archivos NAS. Esto le ayuda a identificar rápidamente cuellos de botella de capacidad o rendimiento.
-
Optimización de costos
Elección del 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 es una opción de menor costo adecuada para tareas no sensibles a la latencia, como compartir archivos o archivado.
Liberación oportuna de recursos: Tras dar de baja una aplicación, libere todos los recursos no utilizados. Además, delete el sistema de archivos NAS del backend si ya no es necesario para evitar costos inesperados.
Referencias
Verificación de almacenamiento compartido, aislamiento de datos y almacenamiento persistente
Después de montar el sistema de archivos NAS, compruebe que el almacenamiento se comporta como se espera.
-
Verificación de almacenamiento compartido y persistente para un deployment
-
Verificación de aislamiento de datos y almacenamiento persistente para un StatefulSet
YAML de CNFS
Ejecute kubectl get cnfs/<cnfsName> -o yaml para ver la configuración completa y el estado en tiempo real del objeto CNFS.
Esta sección proporciona un ejemplo de ejecución del comando kubectl get cnfs/cnfs-nas-filesystem -o yaml en Method 2 para ver el YAML de cnfs-nas-filesystem.
Ejemplo de YAML
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 estén en uso.
-
Eliminar la carga de trabajo
Acción: Elimine todas las aplicaciones que usen los PVC relevantes, como deployments y StatefulSets. Esta acción detiene los pods y desmonta los volúmenes.
Comando de ejemplo:
kubectl delete deployment <YOUR-DEPLOYMENT-NAME>
-
Eliminar los PVC
-
Acción: Elimine el PVC asociado a la aplicación. El resultado de la eliminación del PV depende de la directiva de recuperación (
reclaimPolicy).Retain(Recomendado): Después de eliminar el PVC, los datos y directorios en el NAS del backend se conservan por completo.-
Delete: Cuando se elimina un PVC, también se elimina su PV vinculado. Los datos y directorios en el NAS del backend se manejarán según la configuración del parámetroarchiveOnDeleteen laStorageClass."true"(predeterminado): El directorio o archivo no se elimina realmente. En su lugar, se renombra aarchived-{pvName}.{timestamp}."false": Los datos se eliminan permanentemente. Esta operación es irreversible. Úsela con precaución.
Comando de ejemplo:
kubectl delete pvc <YOUR-PVC-NAME>
-
-
Eliminar el PV
-
Operación: Elimine el PV. Esta operación es principalmente para PV estáticos o para PV que están en estado
Releaseddespués de aplicar la directivaRetainen el paso anterior.Esta acción solo elimina la definición del recurso de Kubernetes. No elimina los datos en el NAS del backend.
Comando de ejemplo:
kubectl delete pv <YOUR-PV-NAME>
-
-
Eliminar definiciones de almacenamiento de Kubernetes (Opcional)
-
Acción: Elimine los objetos StorageClass y CNFS que ya no sean necesarios.
Esta acción solo elimina las definiciones de recursos de Kubernetes. No elimina los datos en el NAS del backend.
Comandos de ejemplo:
kubectl delete sc <YOUR-STORAGECLASS-NAME>ykubectl delete cnfs <YOUR-CNFS-NAME>
-
-
Eliminar el sistema de archivos NAS del backend
Acción: Consulte Delete a file system. Esta acción irreversible elimina permanentemente todos los datos en el NAS. Úsela con extrema precaución. Antes de continuar, asegúrese de que ningún otro servicio dependa de este sistema de archivos NAS.