Este tema explica cómo montar un volumen de Network Attached Storage (NAS) de Alibaba Cloud en los pods de un clúster de Container Service for Kubernetes (ACK) mediante aprovisionamiento estático. El aprovisionamiento estático permite conectar los pods a un sistema de archivos NAS existente para obtener almacenamiento persistente y compartido entre varios pods de manera simultánea.
Requisitos previos
Se creó un clúster ACK Serverless. Para más información, consulte Create an ACK Serverless cluster.
-
Se creó un sistema de archivos NAS. Para más información, consulte Create a file system.
Si necesita cifrar los datos del PersistentVolume (PV) de NAS, configure el tipo de cifrado al crear el sistema de archivos NAS.
-
Se creó un punto de montaje NAS. Para más información, consulte Manage mount targets.
El punto de montaje NAS debe estar en la misma VPC que los nodos del clúster.
kubectl conectado al clúster. Para más información, consulte Obtain a kubeconfig file and connect to a cluster by using kubectl
Casos de uso
Aplicaciones con requisitos altos de E/S de disco.
Admite el uso compartido de archivos entre hosts; por ejemplo, como servidor de archivos.
Notas
Cuando se utiliza un sistema de archivos Extreme NAS, el
pathconfigurado para el PersistentVolume (PV) debe usar /share como directorio principal. Por ejemplo, el subdirectorio del sistema de archivos NAS que monta un pod se puede establecer en /share/path1.-
NAS admite el montaje simultáneo por parte de varios pods. En este caso, varios pods pueden modificar los mismos datos de forma concurrente, por lo que la aplicación debe implementar la sincronización de datos por su cuenta.
NotaEl directorio / en el almacenamiento NAS no admite la modificación de permisos, propietario ni grupo.
-
Si configura el parámetro securityContext.fsgroup en una plantilla de aplicación, Kubelet ejecutará operaciones
chmodochowndespués de montar el PersistentVolume (PV), lo cual aumenta el tiempo de montaje.NotaSi ya configuró el parámetro securityContext.fsgroup y necesita reducir el tiempo de montaje, consulte NAS volume FAQ.
Montar un volumen NAS desde la consola
Paso 1: Crear un PV
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Cluster List, haga clic en el nombre del clúster de destino o haga clic en Details en la columna Actions.
En el panel de navegación izquierdo de la página de administración del clúster, elija .
En la página Persistent Volumes, haga clic en Create en la esquina superior derecha.
-
En el cuadro de diálogo Create PV, configure los parámetros.
Parámetro
Nota
PV Type
En este ejemplo, se selecciona NAS.
Name
Nombre del PersistentVolume (PV) que se va a crear. Debe ser único dentro del clúster. En este ejemplo, el nombre es pv-nas.
Capacity
Capacidad del PersistentVolume (PV) que se va a crear. Tenga en cuenta que el sistema de archivos NAS no impone límites de uso por sí mismo. Este valor no representa una cuota del sistema de archivos NAS, sino una declaración de capacidad para el PV que se crea.
Access Mode
Seleccione ReadWriteMany y ReadWriteOnce. El valor predeterminado es ReadWriteMany.
Mount Target Domain Name:
Puede definir la dirección de montaje del clúster en el punto de montaje NAS mediante Select Mount Target o Custom.
Advanced Options (Optional)
Mount Path
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,pathdebe comenzar con/share, como/share/data.
Reclaim Policy
Retain (predeterminado): cuando se elimina el PVC, no se eliminan el PV ni los archivos de NAS. Debe eliminarlos manualmente.
Mount Options
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.Labels
Agregue etiquetas a este PersistentVolume (PV).
Después de configurar los parámetros, haga clic en Create.
Paso 2: Crear un PVC
En el panel de navegación izquierdo de la página de administración del clúster, elija .
En la página Persistent Volume Claims, haga clic en Create en la esquina superior derecha.
-
En el cuadro de diálogo Create PVC que aparece, complete los parámetros.
Parámetro
Nota
PVC Type
En este ejemplo, se selecciona NAS.
Name
El nombre del PersistentVolumeClaim (PVC) que se va a crear debe ser único dentro del clúster.
Allocation Mode
Seleccione un PersistentVolume (PV) existente.
NotaSi no se ha creado ningún PV, puede establecer Allocation Mode en Create PV para configurar los parámetros de creación de un PV. Para más información, consulte Create a PV.
Existing Volumes
Haga clic en Select PV y luego, en la columna Actions a la derecha del PV de destino, haga clic en Select Node para seleccionar el PV.
Capacity
Capacidad del PersistentVolume (PV) que se va a crear.
NotaLa capacidad del PersistentVolumeClaim (PVC) que se va a crear no puede superar la capacidad del PersistentVolume (PV) que se va a montar.
-
Haga clic en Create.
Una vez creado el PersistentVolumeClaim (PVC), podrá verlo en la lista ya vinculado al PersistentVolume (PV) correspondiente.
Paso 3: Crear una aplicación
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
-
En la página Deployments, haga clic en Create from Image y configure los parámetros de la aplicación.
A continuación se describen los parámetros principales. Puede conservar los valores predeterminados para el resto de los parámetros. Para más información, consulte Create a stateless workload (Deployment).
Categoría
Parámetro
Descripción
Basic Information
Application Name
Nombre del Deployment.
Replicas:
Número de réplicas del Deployment.
Esta configuración le permite comprobar la función de almacenamiento compartido de NAS.
Container
Image Name
Dirección de la imagen de la aplicación.
Required Resources
Recursos de vCPU y memoria obligatorios.
Volume
Haga clic en Add PVC y configure los parámetros.
Mount Source: seleccione el PVC que creó anteriormente.
Container Path: ruta dentro del contenedor donde se montará el sistema de archivos NAS, como
/data.
Cuando finalice el despliegue, vaya a la página Deployments y haga clic en el nombre de la aplicación. En la pestaña Pods, compruebe que los pods estén en estado Running.
Montar un volumen NAS con kubectl
-
Ejecute el siguiente comando para crear un PV estático.
kubectl create -f pv-nas.yamlA continuación se muestra un archivo YAML de ejemplo para crear un PV estático.
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas volumeAttributes: server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com" path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3Parámetro
Nota
name
Nombre del PV.
labels
Establezca las etiquetas del PV.
storage
Capacidad disponible de NAS.
accessModes
Configure el modo de acceso.
driver
Tipo de controlador. En este ejemplo, el valor es
nasplugin.csi.alibabacloud.com, lo que indica que se usa el plugin CSI de NAS de Alibaba Cloud.volumeHandle
Configure un identificador único para el PV. Si se usan varios PV de forma simultánea, este valor debe ser distinto para cada uno.
server
Punto de montaje de NAS.
path
Subdirectorio de montaje. Para Extreme NAS, debe usarse /share como directorio principal.
vers
Versión del protocolo NFS para montar el PersistentVolume (PV) de NAS. Se recomienda la versión 3. Extreme NAS solo admite la versión 3.
-
Ejecute el siguiente comando para crear un PVC estático.
Cree un PersistentVolumeClaim (PVC) de NAS y use
selectorpara filtrar los PV y configurar con precisión el vínculo entre el PVC y el PV.kubectl create -f pvc-nas.yamlA continuación se muestra un archivo YAML de ejemplo para crear un PVC estático.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nasParámetro
Nota
name
Nombre del PVC.
accessModes
Configure el modo de acceso.
storage
Declare el uso de la aplicación, que no puede superar la capacidad total del PersistentVolume (PV).
matchLabels
Introduzca la etiqueta del PV para asociarlo.
-
Ejecute el siguiente comando para crear una aplicación llamada nas-static y montar el PVC.
kubectl create -f nas.yamlA continuación se muestra un archivo nas.yaml de ejemplo para crear la aplicación nas-static.
apiVersion: apps/v1 kind: Deployment metadata: name: nas-static labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: "/data" volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nasParámetro
Nota
mountPath
Ruta de montaje de NAS en el contenedor.
claimName
Nombre del PVC, utilizado para vincularlo.
-
Ejecute el siguiente comando para consultar la información de los pods.
kubectl get podSalida esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
Comprobar el almacenamiento persistente de NAS
-
Consulte la aplicación desplegada y los archivos de NAS.
-
Ejecute el siguiente comando para consultar el nombre de la aplicación desplegada.
kubectl get podSalida esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Ejecute el siguiente comando para consultar los archivos de la ruta /data de cualquier aplicación. En este ejemplo se usa el pod llamado
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataNo se devuelve ninguna salida, lo que indica que no hay archivos en la ruta /data.
-
-
Ejecute el siguiente comando para crear un archivo nas en la ruta /data del pod llamado
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
Ejecute el siguiente comando para consultar los archivos de la ruta /data del pod llamado
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSalida esperada:
nas -
Ejecute el siguiente comando para eliminar el pod.
kubectl delete pod nas-static-5b5cdb85f6-n**** -
Al mismo tiempo, en otra ventana, ejecute el siguiente comando para observar el proceso de eliminación del pod y su recreación por parte de Kubernetes.
kubectl get pod -w -l app=nginx -
Compruebe si los archivos creados en NAS siguen existiendo después de eliminar el pod.
-
Ejecute el siguiente comando para consultar el nombre del pod que recreó Kubernetes.
kubectl get podSalida esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Ejecute el siguiente comando para consultar los archivos de la ruta /data del pod llamado
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSalida esperada:
nasEl archivo nas sigue existiendo, lo que indica que los datos de NAS se almacenan de forma persistente.
-
Comprobar el almacenamiento compartido
-
Consulte los pods donde se ejecuta la aplicación desplegada y los archivos de NAS.
-
Ejecute el siguiente comando para consultar los nombres de los pods donde se ejecuta la aplicación.
kubectl get podSalida esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Ejecute el siguiente comando para consultar los archivos de la ruta /data de los dos pods.
kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data kubectl exec nas-static-c5bb4746c-4**** -- ls /data
-
-
Ejecute el siguiente comando para crear un archivo nas en la ruta /data de cualquier pod.
kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
Ejecute el siguiente comando para consultar los archivos de la ruta /data de los dos pods.
-
Ejecute el siguiente comando para consultar los archivos de la ruta /data del pod llamado
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSalida esperada:
nas -
Ejecute el siguiente comando para consultar los archivos de la ruta /data del pod llamado
nas-static-c5bb4746c-4****.kubectl exec nas-static-c5bb4746c-4**** -- ls /dataSalida esperada:
nasSi el archivo creado en la ruta /data de cualquier pod aparece en la ruta /data de ambos pods, significa que los dos pods comparten el mismo NAS.
-