Con el aprovisionamiento dinámico de File Storage NAS, puede aprovisionar automáticamente almacenamiento para las cargas de trabajo bajo demanda. Esto elimina la necesidad de crear PV por adelantado. Esta función proporciona persistencia y uso compartido de datos, lo que permite que varios Pods lean y escriban de forma simultánea. Además, simplifica la gestión del almacenamiento en escenarios como aplicaciones web y retención de registros.
Cómo funciona
Con los volúmenes dinámicos, cuando una aplicación crea un PVC, el sistema genera automáticamente un nuevo volumen de almacenamiento y su PV correspondiente bajo demanda. Este aprovisionamiento se determina mediante el StorageClass especificado en el PVC. Este modo ofrece mayor flexibilidad y admite la expansión automática de los volúmenes de almacenamiento.
Modo de montaje
Puede especificar el modo de montaje con el parámetro volumeAs dentro de un StorageClass. Este parámetro define la relación entre un PV y el sistema de archivos NAS.
|
Modo de montaje |
Descripción |
Escenario |
|
En el modo subpath, cada PV se asigna a un subdirectorio único dentro de un sistema de archivos NAS. Este modo facilita el aislamiento de datos. |
|
|
|
En el modo sharepath, todos los PV se asignan al mismo directorio NAS definido en el StorageClass. Por lo tanto, todos los PVC que usan este StorageClass acceden al mismo directorio compartido. |
Varios Pods en distintos namespaces necesitan montar el mismo subdirectorio NAS. |
|
|
filesystem (no recomendado) |
En el modo de sistema de archivos, se crea dinámicamente una nueva instancia dedicada de sistema de archivos NAS para cada PV. |
Este método es adecuado para aplicaciones que requieren un aislamiento estricto en términos de rendimiento y seguridad. Permite crear y eliminar dinámicamente sistemas de archivos NAS independientes y destinos de montaje para cada aplicación, aunque implica costos más altos. |
Flujo de trabajo
A continuación se describe el flujo de trabajo para montar un volumen dinámico de NAS.
|
|
|
Requisitos previos
-
Los componentes csi-plugin y csi-provisioner están instalados.
Los componentes CSI se instalan de forma predeterminada. Compruebe que sigan instalados. Puede consultar el estado de instalación en la página . Se recomienda upgrading the CSI components a la versión más reciente.
-
Para usar subpath y sharepath, necesita un sistema de archivos Apsara File Storage NAS que cumpla con los siguientes requisitos. De lo contrario, create a file system.
NAS tiene limitations sobre la conectividad de montaje, la cantidad de sistemas de archivos y los tipos de protocolo.
Protocol: solo se admite NFS.
VPC: el sistema de archivos Apsara File Storage NAS debe estar en la misma VPC que su clúster. Apsara File Storage NAS admite el montaje entre zonas, pero no entre distintas VPC.
Mount Target: agregue un destino de montaje que esté en la misma VPC que su clúster y que se encuentre activo. Para obtener más información, consulte Manage mount targets. Tome nota de la dirección del destino de montaje.
(Opcional) Encryption Type: para cifrar los datos de un volumen, configure el tipo de cifrado cuando cree el sistema de archivos Apsara File Storage NAS.
Notas de uso
No elimine los destinos de montaje: para evitar errores de E/S en los nodos, no elimine un destino de montaje en la consola de NAS mientras su volumen correspondiente esté en uso.
-
Escrituras simultáneas: NAS proporciona almacenamiento compartido. Cuando varios Pods montan el mismo volumen, su aplicación debe manejar los posibles problemas de consistencia de datos derivados de las escrituras simultáneas.
Para obtener más información sobre las limitaciones de las escrituras simultáneas en NAS, consulte Multiple processes writing to the same log file y Latency in reading updated file content across ECS instances .
-
Rendimiento de montaje: si configura el parámetro
securityContext.fsgroupen su aplicación, kubelet ejecuta de forma recursivachmodochowndespués de montar el volumen. Esto aumenta significativamente el tiempo de inicio del Pod.Para optimizar el rendimiento de montaje, consulte NAS volume FAQ .
Método 1: montar un volumen mediante subpath
Con este método, el aprovisionador CSI crea automáticamente una subruta dedicada en el sistema de archivos NAS para cada PersistentVolumeClaim (PVC). Dicha subruta funciona como el PersistentVolume (PV).
La versión del plugin de CSI debe ser 1.31.4 o posterior. Para actualizar el plugin, consulte Upgrade the CSI plug-in.
Ya creó un sistema de archivos NAS y cuenta con su mount target.
1. Crear un StorageClass
Un StorageClass actúa como plantilla para aprovisionar volúmenes dinámicos y define el origen y el comportamiento de los recursos de almacenamiento.
kubectl
-
Cree un archivo llamado
alicloud-nas-subpath.yamlcon el siguiente contenido:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: # The name of the StorageClass, which must be unique within the cluster. name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: # Set to subpath. volumeAs: subpath # The format of the server field is <nas-server-address>:/<path>. server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s" archiveOnDelete: "true" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retain allowVolumeExpansion: trueParámetro
Descripción
mountOptionsLas opciones de montaje para NAS, incluida la versión del protocolo NFS. De forma predeterminada, los volúmenes se montan con NFSv3. Puede especificar una versión distinta con una opción como
vers=4.0. Para obtener información sobre los protocolos NFS compatibles con los distintos tipos de NAS, consulte NFS protocols.parameters.volumeAsEl modo de aprovisionamiento del volumen. Establézcalo en
subpath.parameters.serverEl destino de montaje de NAS y la subruta que se va a montar, con el formato
<nas-server-address>:/<path>.-
<nas-server-address>: el destino de montaje del sistema de archivos NAS. Para obtener más información, consulte Manage mount targets. -
:/<path>: la subruta de NAS que se va a montar. Si no se establece este parámetro o la subruta especificada no existe, se monta el directorio raíz de forma predeterminada.-
NAS de propósito general: el directorio raíz es
/. -
Extreme NAS: el directorio raíz es
/share. Cuando monte una subruta, el valor depathdebe comenzar con/share, por ejemplo,/share/data.
-
parameters.archiveOnDeleteIndica si se eliminan los datos del almacenamiento del backend cuando se elimina un PVC y su
reclaimPolicyestá establecido enDelete.Esta opción actúa como medida de protección para evitar la pérdida accidental de datos en el almacenamiento NAS compartido.
-
true(predeterminado): el directorio y sus archivos no se eliminan. En su lugar, se archivan y se les cambia el nombre con el formatoarchived-{pvName}.{timestamp}. -
false: el directorio correspondiente y sus datos se eliminan de forma permanente.Esta operación elimina la subruta de NAS y sus archivos, no el sistema de archivos NAS en sí.
Para eliminar un sistema de archivos NAS, consulte Delete a file system.
En escenarios donde los PV se crean y eliminan con frecuencia, establecer este parámetro en
falsepuede bloquear la cola de tareas del controlador CSI, lo que impide crear nuevos PV. Para obtener más información, consulte The controller's task queue is full and new PVs cannot be created when you use a dynamic NAS volume.provisionerEl controlador. Establezca este parámetro en
nasplugin.csi.alibabacloud.comcuando use el plugin de CSI de NAS de Alibaba Cloud.reclaimPolicyLa directiva de recuperación del PV.
-
Delete(predeterminado): cuando se elimina el PVC, los datos del almacenamiento del backend se procesan según la configuración dearchiveOnDelete. -
Retain: cuando se elimina el PVC, el PV y los datos del sistema de archivos NAS no se eliminan, por lo que deben eliminarse manualmente. Se recomienda esta directiva para escenarios que requieren alta seguridad de datos y así evitar pérdidas accidentales.
allowVolumeExpansionCompatible únicamente con NAS de propósito general.
Permite expandir dinámicamente los PV creados por este StorageClass al modificar la capacidad del PVC.
Este StorageClass utiliza la función directory quota de NAS para gestionar la capacidad del PV, lo que permite un control preciso del tamaño. Puede expandir el volumen en línea si edita el campo
spec.resources.requests.storagedel PVC. Para obtener más información, consulte Set directory quotas for dynamic NAS volumes.Las cuotas de directorio de NAS se aplican de forma asíncrona. Si ejecuta escrituras de datos rápidas y de gran volumen inmediatamente después de crear o expandir un PV, podría superar la capacidad especificada porque la cuota aún no se aplica por completo. Para obtener más información, consulte Usage limits.
-
-
Cree el StorageClass.
kubectl create -f alicloud-nas-subpath.yaml
Console
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
-
Haga clic en Create, especifique un nombre único para el StorageClass dentro del clúster, seleccione NAS como PV Type y siga las instrucciones en pantalla para crear el StorageClass.
A continuación se describen los parámetros clave.
Parámetro
Descripción
Select Mount Target
El destino de montaje del sistema de archivos NAS.
Volume Mode
El modo de aprovisionamiento del volumen. Seleccione Subdirectory. Se crea automáticamente una subruta bajo la ruta de montaje especificada. Los datos se almacenan en
<NAS mount target>:<mount path>/<pv-name>/.Mount Path
El subdirectorio de NAS que se va a montar. Si no se especifica este parámetro, se monta el directorio raíz de forma predeterminada.
Si el directorio no existe en el sistema de archivos NAS, se crea automáticamente y luego se monta.
-
NAS de propósito general: el directorio raíz es
/. -
Extreme NAS: el directorio raíz es
/share. Cuando monte un subdirectorio, el valor depathdebe comenzar con/share, por ejemplo,/share/data.
Reclaim Policy
La directiva de recuperación del PV.
-
Delete(predeterminado): cuando se elimina el PVC, los datos del almacenamiento del backend se procesan según la configuración dearchiveOnDelete. -
Retain: cuando se elimina el PVC, el PV y los datos del sistema de archivos NAS no se eliminan, por lo que deben eliminarse manualmente. Se recomienda esta directiva para escenarios que requieren alta seguridad de datos y así evitar pérdidas accidentales.
Mount Options
Las opciones de montaje para NAS, incluida la versión del protocolo NFS. De forma predeterminada, los volúmenes se montan con NFSv3. Puede especificar una versión distinta con una opción como
vers=4.0. Para obtener información sobre los protocolos NFS compatibles con los distintos tipos de NAS, consulte NFS protocols.Una vez creado el StorageClass, podrá consultarlo en la lista StorageClasses.
-
2. Crear un PVC
Un PersistentVolumeClaim (PVC) es la solicitud de almacenamiento de una aplicación que activa un StorageClass asociado para aprovisionar y vincular dinámicamente un PersistentVolume (PV) coincidente.
kubectl
-
Cree un archivo llamado
nas-pvc.yamlcon el siguiente contenido:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc spec: accessModes: - ReadWriteMany # Specify the StorageClass to use. storageClassName: alicloud-nas-subpath resources: requests: # Declare the required capacity of the storage volume. storage: 20GiParámetro
Descripción
accessModesEl modo de acceso. Valores válidos:
-
ReadWriteMany(predeterminado): varios nodos pueden montar el volumen con permisos de lectura y escritura. -
ReadWriteOnce: un solo nodo puede montar el volumen con permisos de lectura y escritura. -
ReadOnlyMany: varios nodos pueden montar el volumen con permisos de solo lectura.
storageClassNameEl nombre del StorageClass que se va a usar.
storageLa capacidad requerida del volumen de almacenamiento. De forma predeterminada, esta declaración actúa como una solicitud de recursos y no limita el espacio de almacenamiento real disponible para el pod.
El límite de capacidad de un sistema de archivos NAS se determina según sus especificaciones. Para obtener más información, consulte General-purpose NAS y Extreme NAS.
Sin embargo, cuando
allowVolumeExpansionen el StorageClass se establece entrue, este valor se convierte en un límite estricto. El plugin de CSI establece la cuota del directorio NAS con base en esta configuración para limitar la capacidad disponible del PV. -
-
Cree el PVC.
kubectl create -f nas-pvc.yaml -
Compruebe el PV.
kubectl get pvEl resultado esperado es similar al siguiente, lo que indica que el StorageClass aprovisionó automáticamente un PersistentVolume (PV) y lo vinculó al PVC.
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-a7540d97-0f53-4e05-b7d9-557309****** 20Gi RWX Retain Bound default/nas-csi-pvc alicloud-nas-subpath <unset> 5m
Console
En el panel de navegación izquierdo de la página de gestión del clúster, elija .
-
En la página Persistent Volume Claims, haga clic en Create, configure los parámetros del PVC y luego haga clic en Create.
Parámetro
Descripción
PVC Type
Seleccione NAS.
Name
El nombre del PVC. Debe ser único dentro del namespace.
Allocation Mode
Seleccione Use StorageClass.
Existing Storage Class
Haga clic en Select Storage Class y elija el StorageClass que creó.
Total Capacity
La capacidad requerida del volumen de almacenamiento. De forma predeterminada, esta declaración actúa como una solicitud de recursos y no limita el espacio de almacenamiento real disponible para el pod.
El límite de capacidad de un sistema de archivos NAS se determina según sus especificaciones. Para obtener más información, consulte General-purpose NAS y Extreme NAS.
Sin embargo, cuando
allowVolumeExpansionen el StorageClass se establece entrue, este valor se convierte en un límite estricto. El plugin de CSI establece la cuota del directorio NAS con base en esta configuración para limitar la capacidad disponible del PV.Access Mode
El modo de acceso. Valores válidos:
-
ReadWriteMany(predeterminado): varios nodos pueden montar el volumen con permisos de lectura y escritura. -
ReadWriteOnce: un solo nodo puede montar el volumen con permisos de lectura y escritura. -
ReadOnlyMany: varios nodos pueden montar el volumen con permisos de solo lectura.
-
3. Cree una aplicación y monte NAS
Una vez creado el PVC, puede montar el volumen en una aplicación. En esta sección se muestra cómo crear dos Deployments que hacen referencia al mismo PVC. Esto permite que varios pods compartan la misma subruta de NAS.
kubectl
Cree dos Deployments que hagan referencia al mismo PVC para permitirles compartir la misma subruta del sistema de archivos NAS.
Para montar distintas subrutas del mismo sistema de archivos NAS en diferentes pods, debe crear un StorageClass único y su PVC correspondiente para cada subruta.
-
Cree dos archivos llamados
nginx-1.yamlynginx-2.yamlcon a continuación contenido.Las configuraciones de ambas aplicaciones son casi idénticas. Ambas hacen referencia al mismo PVC.
-
-
Cree los dos Deployments.
kubectl create -f nginx-1.yaml -f nginx-2.yaml -
Compruebe el estado de los pods.
kubectl get pod -l app=nginxSalida esperada:
NAME READY STATUS RESTARTS AGE nas-test-1-b75d5b6bc-***** 1/1 Running 0 51s nas-test-2-b75d5b6bc-***** 1/1 Running 0 44s -
Inspeccione cada pod para comprobar que utiliza el PersistentVolumeClaim (PVC) correcto.
Reemplace
<podName>por el nombre real de cada pod.kubectl describe pod <podName> | grep "ClaimName:"En la salida esperada, ambos pods utilizan el mismo PVC. Esto confirma que comparten la misma subruta del sistema de archivos NAS.
Console
Repita a continuación pasos para crear dos Deployments que utilicen el mismo PVC. De este modo, podrán compartir la misma subruta del sistema de archivos NAS.
En la página ACK Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
-
Haga clic en y siga las instrucciones en pantalla para configurar y crear la aplicación.
A continuación se describen los parámetros clave. Puede conservar los valores predeterminados para el resto de los parámetros. Para obtener más información, consulte Create a stateless application (Deployment).
Sección
Parámetro
Descripción
Basic Information
Replicas:
El número de réplicas del Deployment.
Container
Image
La dirección de la imagen utilizada para desplegar la aplicación.
Required Resources
Los recursos de vCPU y memoria que requiere el contenedor.
Volumes
Haga clic en Add PVC y configure los parámetros.
-
Mount Source: seleccione el PVC que creó.
-
Container Path: introduzca la ruta dentro del contenedor donde se montará el sistema de archivos NAS.
Cuando finalice el despliegue, haga clic en el nombre de la aplicación en la página Deployments y compruebe la pestaña Pods para confirmar que los pods se ejecutan correctamente (su estado es Running).
-
Para comprobar que el almacenamiento se comparte y es persistente, consulte Verify shared and persistent storage.
Método 2: montaje mediante el modo sharepath
En este modo, cuando se crean PV para los PVC que utilizan este StorageClass, el aprovisionador no crea directorios nuevos. En su lugar, todos los PV usan la ruta definida en el StorageClass, lo que asigna cada PV al mismo directorio de NAS.
1. Cree un StorageClass
Un StorageClass actúa como plantilla para aprovisionar volúmenes dinámicos y define el origen y el comportamiento de los recursos de almacenamiento.
kubectl
-
Cree un archivo llamado alicloud-nas-sharepath.yaml con a continuación contenido.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-sharepath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: sharepath # The format of the server field is <nas-server-address>:/<path> server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainParámetro
Descripción
mountOptionsLas opciones de montaje para NAS, incluida la versión del protocolo NFS. De forma predeterminada, los volúmenes se montan con NFSv3. Puede especificar una versión distinta con una opción como
vers=4.0. Para obtener información sobre los protocolos NFS compatibles con los distintos tipos de NAS, consulte NFS protocols.parameters.volumeAsEl modo de aprovisionamiento del volumen. Establézcalo en
sharepath.parameters.serverEl destino de montaje de NAS y la subruta que se va a montar, con el formato
<nas-server-address>:/<path>.-
<nas-server-address>: el destino de montaje del sistema de archivos NAS. Para obtener más información, consulte Manage mount targets. -
:/<path>: la subruta de NAS que se va a montar. Si no se establece este parámetro o la subruta especificada no existe, se monta el directorio raíz de forma predeterminada.-
NAS de uso general: el directorio raíz es
/. -
Extreme NAS: el directorio raíz es
/share. Al montar una subruta, el valor depathdebe comenzar con/share, por ejemplo,/share/data.
-
provisionerEl controlador. Establezca este parámetro en
nasplugin.csi.alibabacloud.comcuando utilice el complemento CSI de NAS de Alibaba Cloud.reclaimPolicyLa directiva de recuperación del PV. Para el modo
sharepath, debe ser Retain. -
-
Cree el StorageClass.
kubectl create -f alicloud-nas-sharepath.yaml
Console
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
-
Haga clic en Create, especifique un nombre único para el StorageClass y seleccione NAS como PV Type.
Parámetro
Descripción
Select Mount Target
El destino de montaje del sistema de archivos NAS.
Volume Mode
El modo de aprovisionamiento del volumen. En este ejemplo, seleccione Shared Directory, que habilita el modo sharepath.
Mount Path
El subdirectorio de NAS que se va a montar. Si no se especifica este parámetro, se monta el directorio raíz de forma predeterminada.
Si el directorio no existe en el sistema de archivos NAS, se crea automáticamente y luego se monta.
-
NAS de uso general: el directorio raíz es
/. -
Extreme NAS: el directorio raíz es
/share. Al montar un subdirectorio, el valor depathdebe comenzar con/share, por ejemplo,/share/data.
Reclaim policy
Para el modo
sharepath, debe ser Retain.Mount options
Las opciones de montaje para NAS, incluida la versión del protocolo NFS. De forma predeterminada, los volúmenes se montan con NFSv3. Puede especificar una versión distinta con una opción como
vers=4.0. Para obtener información sobre los protocolos NFS compatibles con los distintos tipos de NAS, consulte NFS protocols. -
2. Cree un PVC
Un PersistentVolumeClaim (PVC) es una solicitud de almacenamiento de una aplicación que activa un StorageClass asociado para aprovisionar y vincular dinámicamente un PersistentVolume (PV) coincidente.
Para habilitar el uso compartido de datos entre namespaces, cree un PVC con el mismo nombre en dos namespaces distintos. Aunque los PVC comparten nombre, son recursos independientes porque están en namespaces diferentes. El StorageClass aprovisiona un PV independiente para cada PVC, y ambos PV apuntan al mismo directorio compartido en el sistema de archivos NAS.
kubectl
-
Cree dos namespaces,
ns1yns2.kubectl create ns ns1 kubectl create ns ns2 -
Cree un archivo llamado pvc.yaml con a continuación contenido para crear un PVC con el mismo nombre en los namespaces
ns1yns2.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns1 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20Gi --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns2 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20GiParámetro
Descripción
accessModesEl modo de acceso. Valores válidos:
-
ReadWriteMany(predeterminado): varios nodos pueden montar el volumen con permisos de lectura y escritura. -
ReadWriteOnce: un solo nodo puede montar el volumen con permisos de lectura y escritura. -
ReadOnlyMany: varios nodos pueden montar el volumen con permisos de solo lectura.
storageClassNameEl nombre del StorageClass que se va a utilizar.
storageLa capacidad requerida del volumen de almacenamiento. De forma predeterminada, esta declaración actúa como una solicitud de recursos y no limita el espacio de almacenamiento real disponible para el pod.
El límite de capacidad de un sistema de archivos NAS depende de sus especificaciones. Para obtener más información, consulte General-purpose NAS y Extreme NAS.
Sin embargo, cuando
allowVolumeExpansionen el StorageClass se establece entrue, este valor se convierte en un límite estricto. El complemento CSI establece la cuota del directorio de NAS según esta configuración para limitar la capacidad disponible del PV. -
-
Cree los PVC.
kubectl create -f pvc.yaml -
Compruebe el estado de los PV para confirmar que se crearon automáticamente y se vincularon a los PVC.
kubectl get pvLa salida esperada es similar a la siguiente. El estado de ambos PV es
Bound, y la columnaCLAIMmuestra que cada PV está vinculado a un PVC en un namespace distinto (ns1/nas-csi-pvcyns2/nas-csi-pvc).NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-0b448885-6226-4d22-8a5b-d0768c****** 20Gi RWX Retain Bound ns1/nas-csi-pvc alicloud-nas-sharepath <unset> 74s nas-bcd21c93-8219-4a11-986b-fd934a****** 20Gi RWX Retain Bound ns2/nas-csi-pvc alicloud-nas-sharepath <unset> 74s
Console
-
Cree los namespaces.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Namespaces and Quotas.
Haga clic en Launch y siga las instrucciones en pantalla para crear los namespaces
ns1yns2.
En el panel de navegación izquierdo de la página de gestión del clúster, elija .
-
En el namespace
ns1, cree una solicitud de almacenamiento.En la página Persistent Volume Claims, seleccione
ns1en la lista desplegable Namespace y siga las instrucciones en pantalla para crear el PVC.Parámetro
Descripción
PVC Type
Seleccione NAS.
Name
El nombre del PVC. El nombre debe ser único dentro del namespace.
Allocation Mode
Seleccione Use StorageClass.
Existing Storage Class
Haga clic en Select Storage Class y elija el StorageClass que creó.
Capacity
La capacidad requerida del volumen de almacenamiento. De forma predeterminada, esta declaración actúa como una solicitud de recursos y no limita el espacio de almacenamiento real disponible para el pod.
El límite de capacidad de un sistema de archivos NAS depende de sus especificaciones. Para obtener más información, consulte General-purpose NAS y Extreme NAS.
Sin embargo, cuando
allowVolumeExpansionen el StorageClass se establece entrue, este valor se convierte en un límite estricto. El complemento CSI establece la cuota del directorio de NAS según esta configuración para limitar la capacidad disponible del PV.Access Mode
El modo de acceso. Valores válidos:
-
ReadWriteMany(predeterminado): varios nodos pueden montar el volumen con permisos de lectura y escritura. -
ReadWriteOnce: un solo nodo puede montar el volumen con permisos de lectura y escritura. -
ReadOnlyMany: varios nodos pueden montar el volumen con permisos de solo lectura.
-
-
Siga el paso anterior para crear otro PVC en el namespace
ns2.Después de la creación, vuelva a la página Persistent Volume Claims. En los namespaces
ns1yns2, confirme que ambos PVC están vinculados a sus PV creados automáticamente.
3. Cree una aplicación y monte NAS
Una vez creados los PVC, puede montar sus PV vinculados en las aplicaciones. En esta sección, creará una aplicación en cada uno de los dos namespaces y montará el PVC correspondiente. Esta configuración permite que ambas aplicaciones compartan el subdirectorio de NAS definido en el StorageClass.
kubectl
-
Cree dos archivos llamados
nginx-ns1.yamlynginx-ns2.yamlcon a continuación contenido.Las configuraciones de ambas aplicaciones son casi idénticas. Cada una se vincula al PVC de su respectivo namespace.
-
-
Cree los dos Deployments.
kubectl create -f nginx-ns1.yaml -f nginx-ns2.yaml -
Compruebe el estado de los pods.
kubectl get pod -A -l app=nginxSalida esperada:
NAMESPACE NAME READY STATUS RESTARTS AGE ns1 nas-test-b75d5b6bc-***** 1/1 Running 0 2m19s ns2 nas-test-b75d5b6bc-***** 1/1 Running 0 2m11s -
Revise la configuración detallada de un pod para confirmar el montaje del PVC.
Reemplace
<namespace-name>y<pod-name>por el namespace y el nombre reales del pod.kubectl describe pod -n <namespace-name> <pod-name> | grep "ClaimName:"En la salida esperada, los dos pods montan
ns1/nas-csi-pvcyns2/nas-csi-pvc, respectivamente.
Console
En la página ACK Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
-
En el namespace
ns1, cree un Deployment y monte el PVC correspondiente.Seleccione Namespace en la lista desplegable Namespace y haga clic en Create from Image.
-
Siga las instrucciones en pantalla para crear la aplicación.
A continuación se describen los parámetros clave. Conserve los valores predeterminados para el resto de los parámetros. Para obtener más información, consulte Create a stateless workload (Deployment).
Sección
Parámetro
Descripción
Basic Information
Replicas:
El número de réplicas del Deployment.
Container
Image
La dirección de la imagen utilizada para desplegar la aplicación.
Required Resources
Los recursos de vCPU y memoria necesarios.
Volumes
Haga clic en Add PVC y configure los parámetros.
-
Mount Source: seleccione el PVC que creó.
-
Container Path: introduzca la ruta dentro del contenedor donde se montará el sistema de archivos NAS, por ejemplo, /data.
-
-
Siga el paso anterior para crear otro Deployment en el namespace
ns2y monte el PVC correspondiente.Vuelva a la página Deployments . En los namespaces
ns1yns2, compruebe el estado de cada Deployment para confirmar que los pods se están ejecutando y que han montado los PVC correctos.
Para comprobar los resultados, consulte Verify shared and persistent storage.
Método 3: Montar un volumen en modo filesystem
El modo filesystem permite crear y gestionar de forma dinámica un sistema de archivos NAS dedicado y un destino de montaje para una aplicación. A diferencia del modo sharepath, cada PV creado en este modo corresponde a una instancia independiente del sistema de archivos NAS.
Cada PV de tipo filesystem corresponde a un sistema de archivos NAS dedicado y a un único destino de montaje.
-
De manera predeterminada, cuando se elimina un PV de tipo
filesystem, se conservan el sistema de archivos NAS y el destino de montaje correspondientes. Para eliminar automáticamente el sistema de archivos NAS y el destino de montaje al borrar el PV, agregue los siguientes parámetros a la StorageClass:reclaimPolicy: Deleteparameters.deleteVolume: "true"
-
Si utiliza un clúster dedicado de ACK, otorgue los permisos necesarios al componente csi-provisioner.
1. Crear una StorageClass
2. Crear una PVC
3. Crear la aplicación y montar NAS
Comprobar el almacenamiento compartido y persistente
Después de desplegar la aplicación correctamente, compruebe que el volumen de almacenamiento funciona según lo esperado. En esta sección se usa el modo subpath para crear nas-test-1 y nas-test-2 como ejemplo de comprobación.
|
Almacenamiento compartido |
Almacenamiento persistente |
|
Para comprobar el almacenamiento compartido, cree un archivo en un Pod y consúltelo desde otro.
|
Para comprobar el almacenamiento persistente, reinicie el Deployment y verifique si los datos siguen presentes en el sistema de archivos del nuevo Pod.
|
Para entornos de producción
-
Seguridad y protección de datos
Use la directiva de recuperación Retain: Establezca el parámetro
reclaimPolicyde su StorageClass enRetain. Esto evita la pérdida de datos si se elimina una PVC por accidente.Utilice grupos de permisos para el control de acceso: NAS emplea permission groups para gestionar el acceso de red. Aplique el principio de privilegio mínimo: agregue al grupo de permisos únicamente las direcciones IP privadas de los nodos del clúster o sus bloques CIDR de vSwitch. Evite permisos demasiado amplios, como
0.0.0.0/0.
-
Optimización de rendimiento y costos
Seleccione un tipo de NAS adecuado: Consulte File system selection para elegir un tipo de NAS que cumpla con los requisitos de IOPS y throughput de su aplicación.
Optimice las opciones de montaje (
mountOptions): Ajuste los parámetros de montaje NFS según las características de su carga de trabajo. Por ejemplo, usar versiones de protocolo comovers=4.0overs=4.1mejora el rendimiento y las capacidades de bloqueo de archivos en ciertos escenarios. En cargas de trabajo con operaciones de E/S de archivos a gran escala, pruebe distintos valores dersizeywsizepara optimizar el throughput de lectura y escritura.
-
Operaciones y confiabilidad
Configure comprobaciones de estado: Defina una sonda de actividad (liveness probe) para los Pods de su aplicación y compruebe así que el punto de montaje funciona correctamente. Si un punto de montaje deja de responder, ACK reinicia automáticamente el Pod y vuelve a montar el volumen de almacenamiento.
Configure el monitoreo y las alertas: Utilice container storage monitoring para establecer alertas que detecten oportunamente problemas en los volúmenes de almacenamiento o cuellos de botella de rendimiento.
Liberación de recursos
Para evitar cargos inesperados, libere los recursos asociados en el siguiente orden cuando ya no necesite el volumen de almacenamiento NAS.
-
Elimine la carga de trabajo
Acción: Elimine todas las cargas de trabajo (como Deployments y StatefulSets) que usen el volumen de almacenamiento NAS. Esto impide que los Pods de la aplicación remonten el volumen o lean y escriban datos en él.
Comando de ejemplo:
kubectl delete deployment <your-deployment-name>
-
Elimine la PVC
-
Acción: Elimine la PVC asociada a la carga de trabajo. Una vez eliminada la PVC, el comportamiento del PV vinculado y del backend NAS depende del parámetro
reclaimPolicydefinido en la StorageClass correspondiente.-
Modo subpath
Si
reclaimPolicyesRetain: Tras eliminar la PVC, su PV vinculado pasa al estadoReleased. Se conservan el objeto PV, el subdirectorio correspondiente y los datos en el backend NAS, por lo que deben eliminarse manualmente.-
Si
reclaimPolicyesDelete: Tras eliminar la PVC, su PV vinculado se borra automáticamente. El tratamiento del subdirectorio en el backend NAS depende del parámetroarchiveOnDelete:Si
archiveOnDeletees"true": Los datos del backend no se eliminan, sino que se renombran y archivan comoarchived-{pvName}.{timestamp}.Si
archiveOnDeletees"false": El subdirectorio correspondiente al PV en el backend NAS y todos sus datos se eliminan de forma permanente. Proceda con precaución.
En un clúster serverless de ACK, debido a restricciones de permisos, aunque se configure
reclaimPolicy: Delete, el directorio y los datos del backend NAS no se eliminan ni se archivan. Solo se elimina el objeto PV.
-
Modo sharepath
Este modo solo admite un valor de
reclaimPolicyigual aRetain. Tras eliminar la PVC, su PV vinculado pasa al estadoReleased. Se conservan el objeto PV, el directorio compartido del backend y todos los datos. -
Modo filesystem
Si
reclaimPolicyesRetain: Tras eliminar la PVC, su PV vinculado pasa al estadoReleased. Se conservan el objeto PV, el sistema de archivos NAS del backend creado de forma dinámica y el punto de montaje.-
Si
reclaimPolicyesDelete: Tras eliminar la PVC, su PV vinculado se borra automáticamente. El tratamiento del sistema de archivos NAS del backend depende del parámetrodeleteVolume:Si
deleteVolumees"false": Se conservan el sistema de archivos NAS del backend y el punto de montaje, por lo que deben eliminarse manualmente.Si
deleteVolumees"true": El sistema de archivos NAS del backend y el punto de montaje se eliminan automáticamente. Proceda con precaución.
-
Comando de ejemplo:
kubectl delete pvc <your-pvc-name>
-
-
Elimine el PV
Acción: Puede eliminar un PV cuando se encuentra en estado
AvailableoReleased. Esta acción solo quita la definición del PV del clúster de Kubernetes, pero no elimina ningún dato del sistema de archivos NAS del backend.Comando de ejemplo:
kubectl delete pv <your-pv-name>
-
Elimine el sistema de archivos NAS del backend (opcional)
Modos
subpathysharepath: Consulte Delete a file system. Esta operación elimina de forma permanente todos los datos de NAS y no se pueden recuperar. Proceda con precaución. Antes de ejecutarla, confirme que NAS no tiene dependencias de negocio.Modo
filesystem: Si el sistema de archivos NAS del backend no se eliminó automáticamente al borrar la PVC, consulte Delete a file system para localizar y eliminar manualmente el sistema de archivos correspondiente.
Documentos relacionados
-
Si encuentra problemas al montar o usar volúmenes de almacenamiento NAS, consulte los siguientes documentos para solucionarlos.
Puede usar CNFS para gestionar de forma independiente los sistemas de archivos NAS y mejorar así el rendimiento y el control de QoS. Para obtener instrucciones detalladas, consulte Manage NAS file systems by using CNFS.
Los volúmenes de almacenamiento NAS montados con subpath admiten cuotas de directorio. Para obtener más información, consulte Set directory quotas for dynamic NAS storage volumes.