Todos los productos
Search
Centro de documentos

File Storage NAS:Manage NAS file systems with CNFS

Última actualización: Sep 03, 2026

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.

image

Método

Descripción

Modo de aprovisionamiento de volúmenes

Casos de uso

Method 1: Automatically create and use a NAS file system

CNFS crea y gestiona automáticamente un sistema de archivos NAS con una configuración fija para un montaje rápido.

Volumen dinámico

  • Para validación rápida de funciones.

  • No es necesario gestionar los detalles del almacenamiento subyacente. Sin embargo, el sistema de archivos NAS creado tiene una configuración fija, lo que impide seleccionar el tipo de almacenamiento, personalizar el método de cifrado o gestionar la papelera de reciclaje con controles detallados.

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.

  • Volumen dinámico

  • Volumen estático

Ideal para casos de uso con requisitos específicos de rendimiento, cifrado o costo, o que requieren un control detallado del almacenamiento.

Method 3: Adopt and use an existing NAS file system

CNFS adopta un sistema de archivos NAS existente para su gestión unificada.

  • Volumen dinámico

  • Volumen estático

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 ContainerNetworkFileSystem. Si no especifica el parámetro server u otros parámetros personalizados, CNFS crea automáticamente un sistema de archivos NAS predeterminado.
apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-nas-filesystem
    spec:
      description: "cnfs"
      type: nas
      # Only Retain is supported. Deleting the CNFS resource does not delete the backend NAS instance.
      reclaimPolicy: Retain
      parameters:
        # Specifies the server-side encryption method. SSE-KMS enables encryption with keys managed by NAS.
        encryptType: SSE-KMS
        # Enables the recycle bin feature when set to "true".
        enableTrashCan: "true"

Parámetros

Parámetro

Descripción

description

La descripción del resource de CNFS.

type

El tipo de volumen de almacenamiento que se va a crear. Establezca el valor en nas.

reclaimPolicy

La política de reclamación. Solo se admite Retain. Esta política evita la pérdida de datos al garantizar que el sistema de archivos NAS del backend no se elimine cuando usted elimina el resource de CNFS.

parameters.encryptType

Opcional. Especifica si se debe habilitar encryption method.

  • None: Deshabilita el cifrado.

  • SSE-KMS: Habilita el cifrado del lado del servidor con claves gestionadas por NAS. NAS crea y gestiona una clave en KMS para cifrar cada sistema de archivos.

parameters.enableTrashCan

Especifica si se debe habilitar la función de papelera de reciclaje para evitar interrupciones del servicio o pérdida de datos causados por la eliminación accidental de archivos.

  • true: Habilita la función.

  • false: Deshabilita la función.

  • Ejecute kubectl get cnfs para consultar el sistema de archivos NAS creado.

  • Ejecute kubectl get cnfs/cnfs-nas-filesystem -o yaml para consultar los detalles del sistema de archivos NAS.

    Para obtener más información sobre el archivo YAML, consulte CNFS YAML reference.

2. Crear una StorageClass

Cree un objeto StorageClass para que sirva como plantilla de almacenamiento. Utilice el parámetro containerNetworkFileSystem para asociarlo con el resource de CNFS que creó.
apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-cnfs-nas
    provisioner: nasplugin.csi.alibabacloud.com
    parameters:
      # Creates a separate subdirectory on the NAS file system for each PVC.
      volumeAs: subpath
      # Associates the StorageClass with the CNFS resource defined earlier.
      containerNetworkFileSystem: cnfs-nas-filesystem
      path: "/"
    # Set to Retain to keep the subdirectory data after the PVC is deleted.
    reclaimPolicy: Retain
    # Allows volume expansion.
    allowVolumeExpansion: true
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3

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.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cnfs-nas-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: alibabacloud-cnfs-nas
  resources:
    requests:
      # If allowVolumeExpansion is set to true, the value of storage is used as the quota for the subdirectory that corresponds to this PVC. This sets a quota of 70 GiB for the subdirectory.
      storage: 70Gi  

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.
  • Deployment: Todas las réplicas de pods hacen referencia a la misma PVC y montan el mismo directorio en el sistema de archivos NAS del backend para compartir datos.

    Código de ejemplo

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnfs-nas-deployment
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            volumeMounts:
            - mountPath: "/data"
              name: cnfs-nas-pvc
          volumes:
          - name: cnfs-nas-pvc
            persistentVolumeClaim:
              claimName: cnfs-nas-pvc
  • StatefulSet: Se crea automáticamente una PVC independiente para cada réplica de pod basada en la plantilla volumeClaimTemplates. Cada réplica monta un subdirectorio dedicado en el sistema de archivos NAS del backend para aislar los datos.

    Código de ejemplo

    apiVersion: apps/v1
        kind: StatefulSet
        metadata:
          name: cnfs-nas-sts
          labels:
            app: nginx
        spec:
          serviceName: "nginx"
          replicas: 2
          selector:
            matchLabels:
              app: nginx
          template:
            metadata:
              labels:
                app: nginx
            spec:
              containers:
              - name: nginx
                image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
                volumeMounts:
                - mountPath: "/data"
                  name: www
          volumeClaimTemplates:
          - metadata:
              name: www
            spec:
              accessModes: [ "ReadWriteOnce" ]
              storageClassName: "alibabacloud-cnfs-nas"
              resources:
                requests:
                  # If allowVolumeExpansion is set to true, the storage parameter takes effect. This sets a quota of 50 GiB for the subdirectory.
                  storage: 50Gi 

5. Comprobar el resultado

Console

1. Crear un resource de CNFS

  1. Inicie sesión en la ACK console. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > CNFS.

  3. Haga clic en Create CNFS File System y configure el resource de CNFS según las indicaciones.

    • Seleccione NAS File System.

    • Seleccione Create Default NAS File System.

    • Si es necesario, habilite End-to-end Data Acceleration para acelerar el montaje y optimizar el rendimiento del acceso a los datos. Para obtener más información, consulte Mount a NAS file system by using an EFC client with CNFS.

    Una vez creado el resource de CNFS, búsquelo en la lista y haga clic en su nombre para ver los detalles. Haga clic en el ID de NAS para ir a la página de detalles del sistema de archivos NAS. Haga clic en Mount Targets para obtener la dirección del destino de montaje desde la columna Mount Target.

2. Crear una StorageClass

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > StorageClasses.

  2. En la página StorageClasses, haga clic en Create, seleccione PV Type para NAS y luego configure la StorageClass según las indicaciones.

    La siguiente tabla describe los parámetros clave. Para obtener más información, consulte Create a StorageClass.

    • Select Mount Target: Seleccione el destino de montaje del sistema de archivos NAS que se creó o adoptó mediante CNFS.

      Para obtener más información sobre cómo consultar un destino de montaje, consulte Manage mount targets.
    • Mount Path: El subdirectorio de NAS que se va a montar. Si no se especifica, se monta el directorio raíz (/) de forma predeterminada.

      Si el directorio no existe en el sistema de archivos NAS, el sistema lo crea y lo monta automáticamente.
    • Reclaim Policy:

      • Retain (Recomendado): Después de eliminar la PVC, el PV entra en estado Released. Los datos del backend de NAS se conservan y deben eliminarse manualmente.

      • Delete: Elimina el PV cuando se elimina la PVC asociada. Esta política requiere archiveOnDelete. Sin embargo, los PV estáticos no admiten archiveOnDelete. Por lo tanto, cuando esta política se establece en Delete, eliminar la PVC no elimina el PV ni los archivos en el sistema de archivos NAS.

        Para configurar archiveOnDelete, consulte Use dynamically provisioned NAS volumes.

3. Crear una PersistentVolumeClaim

  1. En el panel de navegación izquierdo de la página de gestión del clúster, elija Storage > PVCs.

  2. En la página Persistent Volume Claims, haga clic en Create, seleccione NAS para PVC Type y luego configure la PVC según las indicaciones.

    • Allocation Mode: El modo en el que se utiliza el volumen de almacenamiento.

    • Existing StorageClass: Haga clic en Select Storage Class y seleccione la StorageClass que creó.

    • Capacity: La capacidad del volumen de almacenamiento. Este valor no puede exceder la capacidad disponible del sistema de archivos NAS subyacente.

    • Access Mode: El valor predeterminado es ReadWriteMany. También puede seleccionar ReadWriteOnce o ReadOnlyMany.

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 /data.

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.

  1. Defina un recurso ContainerNetworkFileSystem para aprovisionar un nuevo sistema de archivos NAS.

  2. 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 ContainerNetworkFileSystem y especifique los detalles de NAS, como el tipo de almacenamiento, el tipo de cifrado y el vSwitch.
apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-nas-filesystem
    spec:
      description: "cnfs"
      type: nas
      reclaimPolicy: Retain
      parameters:
        filesystemType: standard
        storageType: Capacity
        protocolType: NFS
        encryptType: SSE-KMS
        enableTrashCan: "true"
        trashCanReservedDays: "5"
        vSwitchId: vsw-2ze9l3ppwzg6bl02j****

Parámetros

Parámetro

Descripción

description

La descripción del recurso CNFS.

type

El tipo de volumen de almacenamiento que se va a crear. Establezca el valor en nas.

reclaimPolicy

La política de recuperación. Solo se admite Retain. Esta política evita la pérdida de datos al garantizar que el sistema de archivos NAS del backend no se elimine cuando usted elimina el recurso CNFS.

parameters.filesystemType

El tipo de sistema de archivos. El valor predeterminado es standard para NAS de uso general.

parameters.storageType

El tipo de almacenamiento. NAS de uso general admite Performance, Capacity y Premium.

parameters.protocolType

El protocolo de transferencia de archivos. Solo se admite NFS.

parameters.encryptType

Opcional. Especifica si se debe habilitar un encryption method.

  • None: Deshabilita el cifrado.

  • SSE-KMS: Habilita el cifrado del lado del servidor con claves gestionadas por NAS. NAS crea y gestiona una clave en KMS para cifrar cada sistema de archivos.

parameters.enableTrashCan

Especifica si se debe habilitar la función de papelera de reciclaje para evitar interrupciones del servicio o pérdida de datos causados por la eliminación accidental de archivos.

  • true: Habilita la función.

  • false: Deshabilita la función.

parameters.trashCanReservedDays

El período máximo de retención de archivos en la papelera de reciclaje. El valor predeterminado es 7 días. En el ejemplo, trashCanReservedDays: 5 indica que los archivos se conservan hasta por 5 días.

parameters.vSwitchId

El ID del vSwitch para el sistema de archivos NAS.

Para obtener información sobre las regiones y zonas que admiten NAS de uso general, consulte Regions and zones.

  • Ejecute kubectl get cnfs para consultar el sistema de archivos NAS creado.

  • Ejecute kubectl get cnfs/cnfs-nas-filesystem -o yaml para consultar los detalles del sistema de archivos NAS.

    Para obtener más información sobre el archivo YAML, consulte CNFS YAML reference.

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.

  • Volumen persistente estático: Vincule manualmente un volumen persistente a un directorio existente en el sistema de archivos NAS. Esta opción es adecuada para escenarios donde necesita acceder a datos existentes específicos.

  • Clase de almacenamiento dinámica: Cree una clase de almacenamiento que funcione como plantilla para permitir que las aplicaciones creen automáticamente nuevos subdirectorios independientes bajo demanda.

Aprovisionamiento estático

apiVersion: v1
kind: PersistentVolume
metadata:
  name: cnfs-nas-pv
  labels:
    alicloud-pvname: cnfs-nas-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  csi:
    driver: nasplugin.csi.alibabacloud.com
    # Must be the same as the PV name.
    volumeHandle: cnfs-nas-pv 
    volumeAttributes:
      # Specify the CNFS resource to use.
      containerNetworkFileSystem: cnfs-nas-filesystem
      # The mount path used by the volume in CNFS.
      path: "/"
  mountOptions:
    - nolock,tcp,noresvport
    - vers=3
Para obtener más información sobre los parámetros del volumen persistente, consulte Use a static NAS volume.

Aprovisionamiento dinámico

apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-nas-cnfs
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath
      # Specify the CNFS resource to use.
      containerNetworkFileSystem: cnfs-nas-filesystem
      # The mount path used by the volume in CNFS.
      path: "/"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    # Set to true to allow the directory quota of the volume to be expanded.
    allowVolumeExpansion: true
Para 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ático

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cnfs-nas-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  selector:
    matchLabels:
      # Precisely match the persistent volume created earlier by using a label.
      alicloud-pvname: cnfs-nas-pv   

Aprovisionamiento dinámico

apiVersion: v1
    kind: PersistentVolumeClaim
    metadata: 
      name: cnfs-nas-pvc
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alibabacloud-nas-cnfs
      resources: 
        requests:
          storage: 70Gi

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.

Código de ejemplo

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cnfs-nas-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          volumeMounts:
            - name: cnfs-nas-pvc
              mountPath: "/data"
      volumes:
        - name: cnfs-nas-pvc
          persistentVolumeClaim:
            claimName: cnfs-nas-pvc

5. Comprobar el resultado

Console

  1. Crear un recurso CNFS

  1. Inicie sesión en la ACK console. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > CNFS.

  3. Haga clic en Create CNFS File System y configure el recurso CNFS según las indicaciones.

    • Seleccione un sistema de archivos NAS

    • Seleccione Select Existing NAS File System y luego haga clic en Create NAS File System para crear un sistema de archivos NAS personalizado. Una vez creado el sistema de archivos, selecciónelo.

      Para obtener más información sobre cómo crear un sistema de archivos NAS, consulte Create a general-purpose NAS file system in the console.
    • Si es necesario, habilite End-to-end Data Acceleration para utilizar la función de aceleración elástica durante el montaje y optimizar el rendimiento del acceso a los datos. Para obtener más información, consulte Use an EFC client to mount a NAS file system through CNFS.

  1. Crear un volumen persistente o una clase de almacenamiento

PV

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > Persistent Volumes.

  2. Haga clic en Create, seleccione PV Type para PV Type y luego configure el volumen persistente según las indicaciones.

    Los parámetros clave se describen a continuación. Para obtener descripciones detalladas de todos los parámetros, consulte Create a PV.

    • Capacity: La capacidad del volumen persistente. Kubernetes utiliza este valor para vincular el PV a un PVC y no aplica un límite de capacidad. El almacenamiento utilizable real corresponde a la capacidad total del sistema de archivos NAS subyacente.

      El límite de capacidad real de un sistema de archivos NAS depende de sus especificaciones. Para obtener más información, consulte General-purpose NAS.
    • Enable CNFS: Especifica si se debe usar un recurso CNFS para gestionar el volumen.

    • Select CNFS: El recurso CNFS que se va a utilizar.

    • Advanced Options (Optional):

      • Mount Path: El subdirectorio de NAS que se va a montar. Si no especifica este parámetro, se monta el directorio raíz de forma predeterminada. El directorio raíz de un sistema de archivos NAS de uso general es /.

        Si el directorio no existe en el sistema de archivos NAS, el sistema lo crea y lo monta automáticamente.
      • Reclaim Policy: CNFS solo admite Retain.

      • Enable CNFS Acceleration: Especifica si se debe habilitar la función de aceleración de CNFS. Para obtener más información, consulte Use an EFC client to mount a NAS file system through CNFS.

Clase de almacenamiento

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > StorageClasses.

  2. En la página StorageClasses, haga clic en Create, seleccione PV Type para NAS y luego configure la StorageClass según las indicaciones.

    La siguiente tabla describe los parámetros clave. Para obtener más información, consulte Create a StorageClass.

    • Select Mount Target: Seleccione el destino de montaje del sistema de archivos NAS que se creó o adoptó mediante CNFS.

      Para obtener más información sobre cómo consultar un destino de montaje, consulte Manage mount targets.
    • Mount Path: El subdirectorio de NAS que se va a montar. Si no se especifica, se monta el directorio raíz (/) de forma predeterminada.

      Si el directorio no existe en el sistema de archivos NAS, el sistema lo crea y lo monta automáticamente.
    • Reclaim Policy:

      • Retain (Recomendado): Después de eliminar el PVC, el PV entra en estado Released. Los datos de NAS del backend se conservan y deben eliminarse manualmente.

      • Delete: Elimina el PV cuando se elimina el PVC asociado. Esta política requiere archiveOnDelete. Sin embargo, los PV estáticos no admiten archiveOnDelete. Por lo tanto, cuando esta política se establece en Delete, eliminar el PVC no elimina el PV ni los archivos en el sistema de archivos NAS.

        Para configurar archiveOnDelete, consulte Use dynamically provisioned NAS volumes.
  1. Crear un PVC

  1. En el panel de navegación izquierdo de la página de gestión del clúster, seleccione Storage > PVCs.

  2. En la página Persistent Volume Claims, haga clic en Create, seleccione NAS para PVC Type y luego configure el PVC según las indicaciones.

    • Allocation Mode: El modo en el que se utiliza el volumen de almacenamiento.

    • Existing StorageClass: Haga clic en Select Storage Class y seleccione la StorageClass que creó.

    • Capacity: La capacidad del volumen de almacenamiento. Este valor no puede exceder la capacidad disponible del sistema de archivos NAS subyacente.

    • Access Mode: El valor predeterminado es ReadWriteMany. También puede seleccionar ReadWriteOnce o ReadOnlyMany.

  1. Crear una aplicación y montar el sistema de archivos NAS

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 /data.

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 ContainerNetworkFileSystem que haga referencia a un destino de montaje NAS.

apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-nas-filesystem
    spec:
      description: "cnfs"
      type: nas
      reclaimPolicy: Retain
      parameters:
        server: 17f7e4****-h****.cn-beijing.nas.aliyuncs.com

Parámetros

Parámetro

Descripción

description

Descripción del resource de CNFS.

type

Tipo de almacenamiento que se va a crear.

reclaimPolicy

La política de recuperación. Solo se admite Retain. Esta política evita la pérdida de datos al garantizar que el sistema de archivos NAS del backend no se elimine cuando usted elimina el resource de CNFS.

parameters.server

Dirección del destino de montaje NAS.

  • Ejecute kubectl get cnfs para consultar el sistema de archivos NAS creado.

  • Ejecute kubectl get cnfs/cnfs-nas-filesystem -o yaml para consultar los detalles del sistema de archivos NAS.

    Para obtener más información sobre el archivo YAML, consulte CNFS YAML reference.

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.

  • Volumen persistente estático: Vincule manualmente un volumen persistente a un directorio existente en el sistema de archivos NAS. Esta opción es adecuada para escenarios donde necesita acceder a datos específicos ya existentes.

  • Clase de almacenamiento dinámica: Cree una clase de almacenamiento que funcione como plantilla para permitir que las aplicaciones creen automáticamente subdirectorios nuevos e independientes bajo demanda.

Aprovisionamiento estático

apiVersion: v1
kind: PersistentVolume
metadata:
  name: cnfs-nas-pv
  labels:
    alicloud-pvname: cnfs-nas-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  csi:
    driver: nasplugin.csi.alibabacloud.com
    # Must be the same as the PV name.
    volumeHandle: cnfs-nas-pv 
    volumeAttributes:
      # Specify the CNFS resource to use.
      containerNetworkFileSystem: cnfs-nas-filesystem
      # The mount path used by the volume in CNFS.
      path: "/"
  mountOptions:
    - nolock,tcp,noresvport
    - vers=3
Para obtener más información sobre los parámetros del volumen persistente, consulte Use a static NAS volume.

Aprovisionamiento dinámico

apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-nas-cnfs
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath
      # Specify the CNFS resource to use.
      containerNetworkFileSystem: cnfs-nas-filesystem
      # The mount path used by the volume in CNFS.
      path: "/"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    # Set to true to allow the directory quota of the volume to be expanded.
    allowVolumeExpansion: true
Para 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ático

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cnfs-nas-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  selector:
    matchLabels:
      # Precisely match the persistent volume created earlier by using a label.
      alicloud-pvname: cnfs-nas-pv   

Aprovisionamiento dinámico

apiVersion: v1
    kind: PersistentVolumeClaim
    metadata: 
      name: cnfs-nas-pvc
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alibabacloud-nas-cnfs
      resources: 
        requests:
          storage: 70Gi

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.

Código de ejemplo

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cnfs-nas-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          volumeMounts:
            - name: cnfs-nas-pvc
              mountPath: "/data"
      volumes:
        - name: cnfs-nas-pvc
          persistentVolumeClaim:
            claimName: cnfs-nas-pvc

5. Comprobar el resultado

Console

  1. Crear un resource de CNFS a partir de un sistema de archivos NAS existente

  1. Inicie sesión en la ACK console. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > CNFS.

  3. Haga clic en Create CNFS File System y configure el resource de CNFS según las indicaciones.

  4. En el panel Create CNFS File System, configure los parámetros y haga clic en OK.

    • Seleccione un sistema de archivos NAS.

    • Seleccione Select Existing NAS File System y luego elija un destino de montaje NAS existente en la lista desplegable.

    • Si es necesario, habilite End-to-end Data Acceleration para acelerar el montaje y optimizar el rendimiento del acceso a los datos. Para obtener más información, consulte Mount a NAS file system by using an EFC client with CNFS.

  1. Crear un volumen persistente o una clase de almacenamiento

PV

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > Persistent Volumes.

  2. Haga clic en Create, seleccione PV Type para PV Type y luego configure el volumen persistente según las indicaciones.

    Los parámetros clave se describen a continuación. Para ver descripciones detalladas de todos los parámetros, consulte Create a PV.

    • Capacity: Capacidad del volumen persistente. Kubernetes utiliza este valor para vincular el PV a un PVC, pero no impone un límite de capacidad. El almacenamiento utilizable real corresponde a la capacidad total del sistema de archivos NAS subyacente.

      El límite de capacidad real de un sistema de archivos NAS depende de sus especificaciones. Para obtener más información, consulte General-purpose NAS.
    • Enable CNFS: Especifica si se debe usar un resource de CNFS para gestionar el volumen.

    • Select CNFS: Resource de CNFS que se va a utilizar.

    • Advanced Options (Optional):

      • Mount Path: Subdirectorio NAS que se va a montar. Si no especifica este parámetro, se monta el directorio raíz de forma predeterminada. El directorio raíz de un sistema de archivos NAS de uso general es /.

        Si el directorio no existe en el sistema de archivos NAS, el sistema lo crea y lo monta automáticamente.
      • Reclaim Policy: CNFS solo admite Retain.

      • Enable CNFS Acceleration: Especifica si se debe habilitar la función de aceleración de CNFS. Para obtener más información, consulte Use an EFC client to mount a NAS file system through CNFS.

Clase de almacenamiento

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Volumes > StorageClasses.

  2. En la página StorageClasses, haga clic en Create, seleccione PV Type para NAS y luego configure la StorageClass según las indicaciones.

    La siguiente tabla describe los parámetros clave. Para obtener más información, consulte Create a StorageClass.

    • Select Mount Target: Seleccione el destino de montaje del sistema de archivos NAS que se creó o integró mediante CNFS.

      Para obtener más información sobre cómo consultar un destino de montaje, consulte Manage mount targets.
    • Mount Path: Subdirectorio NAS que se va a montar. Si no se especifica, se monta el directorio raíz (/) de forma predeterminada.

      Si el directorio no existe en el sistema de archivos NAS, el sistema lo crea y lo monta automáticamente.
    • Reclaim Policy:

      • Retain (Recomendado): Después de eliminar el PVC, el PV pasa al estado Released. Los datos del backend NAS se conservan y deben eliminarse manualmente.

      • Delete: Elimina el PV cuando se elimina el PVC asociado. Esta política requiere archiveOnDelete. Sin embargo, los PV estáticos no admiten archiveOnDelete. Por lo tanto, cuando esta política se establece en Delete, la eliminación del PVC no borra el PV ni los archivos en el sistema de archivos NAS.

        Para configurar archiveOnDelete, consulte Use dynamically provisioned NAS volumes.
  1. Crear un PVC

  1. En el panel de navegación izquierdo de la página de gestión del clúster, seleccione Storage > PVCs.

  2. En la página Persistent Volume Claims, haga clic en Create, seleccione NAS para PVC Type y luego configure el PVC según las indicaciones.

    • Allocation Mode: Modo en el que se utiliza el volumen de almacenamiento.

    • Existing StorageClass: Haga clic en Select Storage Class y seleccione la StorageClass que creó.

    • Capacity: Capacidad del volumen de almacenamiento. Este valor no puede superar la capacidad disponible del sistema de archivos NAS subyacente.

    • Access Mode: El valor predeterminado es ReadWriteMany. También puede seleccionar ReadWriteOnce o ReadOnlyMany.

  1. Crear una aplicación y montar el sistema de archivos NAS

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 /data.

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 path declarada 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ámetro persistentVolumeClaim.claimName dentro del campo volumes con el mismo nombre de PVC.

1. Cree un PV y una PVC que apunten a un directorio específico

View sample code

apiVersion: v1
kind: PersistentVolume
metadata:
  name: cnfs-nas-static-pv
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 50Gi
  csi:
    driver: nasplugin.csi.alibabacloud.com
    fsType: nfs
    volumeAttributes:
      # Specify the CNFS resource.
      containerNetworkFileSystem: cnfs-nas-filesystem
      mountProtocol: nfs
      path: /
      volumeAs: subpath
      volumeCapacity: "true"
    volumeHandle: cnfs-nas-static-pv
  mountOptions:
  - nolock,tcp,noresvport
  - vers=3
  persistentVolumeReclaimPolicy: Retain
  storageClassName: cnfs-nas-sc
  volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cnfs-nas-static-pvc
  namespace: default
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 50Gi
  storageClassName: cnfs-nas-sc
  volumeMode: Filesystem
  # Reference the PV.
  volumeName: cnfs-nas-static-pv
status:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 50Gi

2. Cree un despliegue de ejemplo

View sample code

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cnfs-nas-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
        volumeMounts:
        - mountPath: "/data"
          # Reference the volume defined under volumes.
          name: cnfs-nas-pvc
      volumes:
      # Define a volume named cnfs-nas-pvc.
      - name: cnfs-nas-pvc
        # All pod replicas reference the same PVC through this configuration to enable shared storage.
        persistentVolumeClaim:
          claimName: cnfs-nas-static-pvc

3. Compruebe el resultado

  1. Check the mount status

    Compruebe el estado de montaje del pod.

    kubectl exec cnfs-nas-deployment-*****a -- mount | grep nfs

    La salida esperada incluye el punto de montaje, lo que confirma que se montó correctamente.

    66bd9493d6-*****.cn-zhangjiakou.nas.aliyuncs.com:/ on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.XX.XX.199,mountvers=3,mountport=2049,mountproto=tcp,local_lock=all,addr=10.XX.XX.199)
  2. Verify the shared and persistent storage of the deployment.

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 path declarada. 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 de parameters para crear un subdirectorio aislado para cada PVC.

    • En el statefulset, defina volumeClaimTemplates para crear y vincular automáticamente una PVC independiente para cada pod.

1. Cree una clase de almacenamiento compatible con subdirectorios dinámicos

View sample code

Esta clase de almacenamiento hace referencia al CNFS especificado, y volumeAs: subpath indica al controlador CSI que cree dinámicamente un subdirectorio aislado para cada solicitud de PVC.

apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: cnfs-nas-sc
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      # The core parameter for implementing isolated storage volumes.
      volumeAs: subpath
      # Reference the created CNFS resource.
      containerNetworkFileSystem: cnfs-nas-filesystem
      # Specify the root path for creating subdirectories on the NAS file system.
      # The CSI driver creates a subdirectory under this path. The directory name is the same as the automatically generated PV name.
      path: "/"
      archiveOnDelete: "false"
    provisioner: nasplugin.csi.alibabacloud.com
    # Automatically deletes the corresponding NAS subdirectory when the PVC is deleted.
    reclaimPolicy: Delete
    allowVolumeExpansion: true

2. Cree un statefulset de ejemplo

View sample code

Crea y monta dinámicamente un volumen de almacenamiento aislado para cada pod basándose en volumeClaimTemplates.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: cnfs-nas-sts
  labels:
    app: nginx
spec:
  serviceName: "nginx"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
        command: ["/bin/sh"]
        args: ["-c", "sleep 3600;"]
        volumeMounts:
        - mountPath: "/data"
          name: pvc
  # The volumeClaimTemplates section automatically creates a PVC for each pod based on the following template.
  volumeClaimTemplates:
  - metadata:
      name: pvc
    spec:
      accessModes: [ "ReadWriteOnce" ]
      # Reference the previously created storage class.
      storageClassName: "cnfs-nas-sc" 
      resources:
        requests:
          # This is used only for scheduling decisions and does not represent a real quota limit. The actual available capacity is the total capacity of the NAS file system.
          storage: 50Gi  

3. Compruebe el resultado

  1. Check the mount status

    Consulte la información de montaje de un pod, por ejemplo, cnfs-nas-sts-0.

    kubectl exec cnfs-nas-sts-0 -- mount |grep nfs

    La salida esperada muestra que un subdirectorio del sistema de archivos NAS se montó correctamente en la ruta /data del pod.

    66bd9493d6-*****.cn-zhangjiakou.nas.aliyuncs.com:/nas-e7242ba0-47ec-4410-9107-b0e247a***** on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.XX.XX.199,mountvers=3,mountport=2049,mountproto=tcp,local_lock=all,addr=10.XX.XX.199)
  2. Verify the data isolation and persistent storage of the statefulset.

Recomendaciones para entornos de producción

  • Seguridad de los datos

    • Cifrado de datos: Al crear un nuevo sistema de archivos NAS, configure parameters como encryptType: SSE-KMS en 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 reclaimPolicy para CNFS está fijada como Retain. 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 como Retain para 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: true en la StorageClass para ampliar la cuota de directorio del volumen de almacenamiento.

      El valor requests.storage en 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

    Steps

    Almacenamiento compartido

    Almacenamiento persistente

    Cree un archivo en un pod y véalo en otro para verificar el almacenamiento compartido.

    1. Enumere los pods para obtener sus nombres.

      kubectl get pod | grep cnfs-nas-deployment

      Salida esperada:

      cnfs-nas-deployment-*****a 1/1 Running 0 40s
          cnfs-nas-deployment-*****b 1/1 Running 0 40s
    2. Cree un archivo en uno de los pods. Este ejemplo utiliza el pod llamado cnfs-nas-deployment-*a:

      kubectl exec cnfs-nas-deployment-*****a -- touch /data/test.txt
    3. Compruebe si el archivo existe en el otro pod. Este ejemplo utiliza el pod llamado cnfs-nas-deployment-*b:

      kubectl exec cnfs-nas-deployment-*****b -- ls /data

      Salida esperada:

      test.txt

      Esta salida confirma que los datos se comparten entre los pods.

      Importante

      CNFS no garantiza la consistencia de los datos cuando varios pods escriben en el almacenamiento compartido. Para evitar la corrupción de archivos, evite escrituras simultáneas en el mismo archivo.

    Vuelva a crear el despliegue y compruebe si existen datos en los nuevos pods para verificar el almacenamiento persistente.

    1. Reinicie el despliegue para activar la recreación de los pods.

      kubectl rollout restart deploy cnfs-nas-deployment
    2. Enumere los pods y espere a que los nuevos pods se inicien y entren en estado Running.

      kubectl get pod | grep cnfs-nas-deployment

      Salida esperada:

      cnfs-nas-deployment-*****c 1/1 Running 0 67s
          cnfs-nas-deployment-*****d 1/1 Running 0 49s
    3. En un nuevo pod, compruebe si existe el archivo creado anteriormente. Este ejemplo utiliza el pod llamado cnfs-nas-deployment-*c:

      kubectl exec cnfs-nas-deployment-*****c -- ls /data

      Salida esperada:

      test.txt

      Esta salida confirma que el almacenamiento es persistente.

  • Verificación de aislamiento de datos y almacenamiento persistente para un StatefulSet

    Steps

    Cada pod en un StatefulSet tiene su propia PVC, por lo que sus datos se mantienen aislados.

    Aislamiento de datos

    Almacenamiento persistente

    Cree un archivo en un pod y confirme que no existe en otro. Esto verifica el aislamiento de datos entre los volúmenes de almacenamiento de los pods.

    1. Enumere los pods para obtener sus nombres.

      kubectl get pod | grep cnfs-nas-sts

      Salida esperada:

      cnfs-nas-sts-0 1/1 Running 0 5m
          cnfs-nas-sts-1 1/1 Running 0 5m
    2. Cree un archivo en uno de los pods. El siguiente ejemplo utiliza el pod llamado cnfs-nas-sts-0 para crear un archivo con un nombre distintivo:

      kubectl exec cnfs-nas-sts-0 -- touch /data/sts-0-data.txt
    3. Compruebe si el archivo existe en el otro pod. Este ejemplo utiliza el pod llamado cnfs-nas-sts-1:

      kubectl exec cnfs-nas-sts-1 -- ls /data

      La salida esperada no muestra el archivo creado en cnfs-nas-sts-0. Esto confirma que cada pod del StatefulSet utiliza un volumen de almacenamiento independiente y que los datos están aislados.

    Elimine un pod específico, espere a que se vuelva a crear y compruebe si los datos aún existen en el nuevo pod.

    1. Elimine un pod para activar su recreación. Este ejemplo elimina cnfs-nas-sts-0:

      kubectl delete pod cnfs-nas-sts-0
    2. Enumere los pods y espere a que el pod con el mismo nombre alcance el estado Running. Un StatefulSet vuelve a crear un pod con el mismo nombre e identidad.

      kubectl get pod | grep cnfs-nas-sts

      Salida esperada:

      cnfs-nas-sts-0                        1/1     Running   0          19s
          cnfs-nas-sts-1                        1/1     Running   0          102s
    3. En el nuevo pod, compruebe si existe el archivo creado anteriormente.

      kubectl exec cnfs-nas-sts-0 -- ls /data

      Esta salida confirma que el almacenamiento es persistente.

      sts-0-data.txt

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

YAML

apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"storage.alibabacloud.com/v1beta1","kind":"ContainerNetworkFileSystem","metadata":{"annotations":{},"name":"cnfs-nas-filesystem"},"spec":{"description":"cnfs","parameters":{"encryptType":"SSE-KMS","enableTrashCan":"true","filesystemType":"standard","protocolType":"NFS","storageType":"Capacity","trashCanReservedDays":"5","vSwitchId":"vsw-2ze9l3ppwzg6bl02j****"},"reclaimPolicy":"Retain","type":"nas"}}
  creationTimestamp: "20**-05-14T08:20:09Z"
  finalizers:
  - protection.alibabacloud.com/cnfs
  generation: 6
  name: cnfs-nas-filesystem
  resourceVersion: "122342382"
  uid: a9e9650c-68b2-405b-8274-0f5b6063****
spec:
  description: "cnfs"
  reclaimPolicy: Retain
  type: nas
  parameters:
    encryptType: SSE-KMS
    enableTrashCan: "true"
    filesystemType: standard
    protocolType: NFS
    storageType: Capacity
    trashCanReservedDays: "5"
    vSwitchId: vsw-2ze9l3ppwzg6bl02j****
status:
  conditions:
  - lastProbeTime: "20**-05-14 16:20:15"
    reason: The nas filesystem and mount target complete initialization.
    status: Ready
  fsAttributes:
    accessGroupName: DEFAULT_VPC_GROUP_NAME
    encryptType: SSE-KMS
    enableTrashCan: "true"
    filesystemId: 17f7e*****
    filesystemType: standard
    protocolType: NFS
    regionId: cn-beijing
    server: 17f7e48ece-h****.cn-beijing.nas.aliyuncs.com
    storageType: Capacity
    vSwitchId: vsw-2ze9l3ppwzg6bl02j****
    vpcId: vpc-2ze9sgmehjvwv5x74****
    zoneId: cn-beijing-h
  status: Available

Parámetros

Parameters

Parámetro

Descripción

status

El estado actual del objeto CNFS. Los valores posibles incluyen Pending, Creating, Initialization (se está creando el sistema de archivos), Available, Unavailable (se puede restaurar), Fatal (no se puede restaurar) y Terminating.

conditions.lastProbeTime

La marca de tiempo de la última prueba de estado.

conditions.reason

El motivo del estado actual.

conditions.status

Ready indica que el recurso está disponible; NotReady indica que no está disponible.

fsAttributes.accessGroupName

El nombre del grupo de permisos aplicado al destino de montaje. Actualmente, solo se admite DEFAULT_VPC_GROUP_NAME (el grupo de permisos VPC predeterminado).

fsAttributes.encryptType

Opcional. Especifica si se debe habilitar un encryption method.

  • None: Deshabilita el cifrado.

  • SSE-KMS: Habilita el cifrado del lado del servidor con claves gestionadas por NAS. NAS crea y gestiona una clave en KMS para cifrar cada sistema de archivos.

fsAttributes.enableTrashCan

Especifica si se debe habilitar la función de papelera de reciclaje para evitar interrupciones del servicio o pérdida de datos causados por la eliminación accidental de archivos.

  • true: Habilita la función.

  • false: Deshabilita la función.

fsAttributes.filesystemId

El ID del sistema de archivos.

fsAttributes.filesystemType

El tipo de sistema de archivos. El valor predeterminado es NAS de uso general, especificado como standard.

fsAttributes.protocolType

El tipo de protocolo de transferencia de archivos. Actualmente, solo se admite NFS protocol.

fsAttributes.regionId

La región donde se encuentra el objeto CNFS.

fsAttributes.server

La dirección del destino de montaje NAS.

fsAttributes.storageType

El tipo de almacenamiento. NAS de uso general admite los tipos Performance, Capacity y Premium.

fsAttributes.vSwitchId

El vSwitch utilizado por el objeto CNFS.

fsAttributes.vpcId

La VPC donde se encuentra el objeto CNFS.

fsAttributes.zoneId

La zona de disponibilidad donde se encuentra el objeto CNFS.

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.

  1. 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>

  2. 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ámetro archiveOnDelete en la StorageClass.

        • "true" (predeterminado): En lugar de eliminarse, el directorio y los archivos se renombran a archived-{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>

  3. 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 Released porque su política de recuperación está configurada como Retain.

      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>

  4. 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>

  5. 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.