Todos los productos
Search
Centro de documentos

:Use CNFS to automatically expand NAS volumes

Última actualización: Oct 09, 2026

Puede definir políticas de expansión automática para los volúmenes de File Storage NAS (NAS) que gestiona Container Network File System (CNFS). De este modo, los volúmenes NAS se expanden automáticamente cuando el uso del almacenamiento supera el umbral establecido. En este tema se describe cómo usar CNFS para expandir automáticamente volúmenes NAS.

Requisitos previos

  • El clúster debe poder usar CNFS para gestionar sistemas de archivos NAS. Para obtener más información, consulte Manage NAS file systems using CNFS.

  • El clúster utiliza el plugin CSI y los componentes relacionados con el almacenamiento deben cumplir a continuación los siguientes requisitos:

    • Las versiones de csi-plugin y csi-provisioner deben ser 1.20.5-ff6490f-aliyun o posteriores. Para obtener más información sobre cómo actualizar csi-plugin y csi-provisioner, consulte Upgrade CSI components.

    • El valor predeterminado de dnsPolicy en csi-plugin es ClusterFirst. Si desea usar CNFS para expandir automáticamente los volúmenes NAS, debe cambiar el valor predeterminado de dnsPolicy de ClusterFirst a ClusterFirstWithHostNet.

    • La versión de storage-operator debe ser 1.18.8.56-2aa33ba-aliyun o posterior. Para obtener más información, consulte storage-operator.

Paso 1: Configurar el componente storage-operator y habilitar la expansión automática

El componente storage-auto-expander predeterminado dentro de storage-operator se encarga de expandir automáticamente los recursos de almacenamiento. Conéctese al clúster y ejecute el siguiente comando para modificar el archivo ConfigMap de storage-operator y habilitar la función de expansión automática:

kubectl patch configmap/storage-operator \
  -n kube-system \
  --type merge \
  -p '{"data":{"storage-auto-expander":"{\"imageRep\":\"acs/storage-auto-expander\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-auto-expander/install.yaml\",\"type\":\"deployment\"}"}}'

Paso 2: Configurar una política de expansión automática

  1. Consulte el estado del objeto CNFS. Compruebe que el objeto CNFS se encuentre en el estado Available.

    1. Consulte el objeto CNFS.

      kubectl get cnfs

      Resultado esperado:

      NAME                                      AGE
      default-cnfs-nas-837d6ea-20210819155623   14d
    2. Consulte el estado del objeto CNFS.

      kubectl get cnfs <The CNFS object queried in the previous step> -o yaml | grep Available

      Resultado esperado:

      status: Available
  2. Utilice la siguiente plantilla YAML para crear una política de expansión automática para un volumen NAS.

    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1alpha1
    kind: StorageAutoScalerPolicy
    metadata:
      name: hybrid-expand-policy
    spec:
      pvcSelector:
        matchLabels:
          app: nginx      # You must specify the label that is added to the persistent volume claim (PVC) and the Deployment to which the NAS volume is mounted. In this example, app: nginx is specified. 
      namespaces:
        - default
        - nginx
      conditions:
        - name: condition1
          key: volume-capacity-used-percentage
          operator: Gt
          values:
            - "80"
      actions:
        - name: action1
          type: volume-expand
          params:
            scale: 100%
            limits: 500Gi
    EOF

    Parámetro

    Descripción

    pvcSelector

    Etiqueta que se usa para vincular la política de expansión con la PVC donde se monta el volumen NAS. En este ejemplo se utiliza nginx.

    namespaces

    Namespace de la PVC donde se monta el volumen NAS. Si se especifican varios namespaces, el operador lógico entre ellos es OR. Valor predeterminado: default. En este ejemplo se indican default y nginx.

    conditions

    Condiciones que desencadenan la acción. Cuando hay varias conditions, el operador lógico entre ellas es AND. Cada condition incluye los siguientes parámetros:

    • key: tipo de métrica.

    • volume-capacity-used-percentage: indica que el umbral de uso del almacenamiento se expresa en porcentaje.

    • operator: operador de comparación. Puede ser Gt (mayor que), Lt (menor que), Eq (igual a) o Ne (distinto de). El valor no distingue entre mayúsculas y minúsculas.

    • values: valor del umbral.

    En el ejemplo, la condición establece que la action se activa cuando el uso del almacenamiento de la PVC supera el 80 %.

    actions

    Acciones que se ejecutan cuando se cumplen las conditions anteriores. Se permiten varias acciones. Cada una incluye los siguientes parámetros:

    • type: tipo de acción. Solo se admite volume-expand.

    • scale: tamaño del almacenamiento que desea agregar al volumen. Unidades válidas: GiB y porcentaje (%).

    • limits: capacidad máxima de la PVC si se ejecuta la action.

    Si en la sección actions se especifican varias actions, solo se ejecuta la primera action cuyas condiciones se cumplan. Las demás actions se omiten.

    En este ejemplo, action1 indica que, al cumplirse las condiciones, el volumen NAS se expande un 100 %. La capacidad máxima a la que puede llegar el volumen NAS es de 500 GiB.

  3. Utilice la siguiente plantilla YAML para crear una PVC y un Deployment.

    Importante

    La política de expansión automática se aplica a la PVC y al Deployment que tengan la etiqueta especificada. En este ejemplo, el parámetro pvcSelector.matchLabels de la política tiene el valor app: nginx. Por lo tanto, la política afecta a la PVC y al Deployment cuyo parámetro labels esté configurado como app: nginx.

    cat << EOF | kubectl apply -f -
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-nas-pvc
      labels:
        app: nginx   # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. 
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alibabacloud-cnfs-nas
      resources:
        requests:
          storage: 50Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnfs-nas-deployment
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx   # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. 
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            volumeMounts:
            - mountPath: "/data"
              name: cnfs-nas-pvc
          volumes:
          - name: cnfs-nas-pvc
            persistentVolumeClaim:
              claimName: cnfs-nas-pvc
    EOF

Paso 3: Comprobar que el volumen NAS se expande automáticamente

  1. Consulte todos los pods del namespace default.

    kubectl get pod

    Resultado esperado:

    NAME                                                            READY   STATUS    RESTARTS   AGE
    cnfs-nas-deployment-56dbcc7fb7-wh79z   1/1      Running            0          20m
  2. Inicie sesión en el pod de la aplicación y escriba 50 GiB de datos en el directorio donde está montado el volumen NAS.

    cd /data
    dd if=<data path> of=<mounted path>
    kubectl exec -it cnfs-nas-deployment-56dbcc7fb7-wh79z -ti -- dd if=/dev/zero of=/data/test1 bs=1G count=50
  3. Revise los eventos relacionados con la expansión del volumen.

    kubectl get events

    El siguiente resultado indica que el uso del almacenamiento del volumen NAS superó el 80 %, lo cual activó la expansión. El volumen NAS pasó de 50 GiB a 100 GiB.

    12s         Warning   StartExpand                  persistentvolumeclaim/cnfs-nas-pvc          Start to expand of pvc cnfs-nas-pvc from 50Gi to 100Gi, usedCapacityPercentage:96%, freeSize:2048MB.
    12s         Normal    ExternalExpanding            persistentvolumeclaim/cnfs-nas-pvc          waiting for an external controller to expand this PVC
    12s         Normal    Resizing                     persistentvolumeclaim/cnfs-nas-pvc          External resizer is resizing volume nas-462db2b2-717d-44fe-b0b6-fb4db03a****
    12s         Normal    VolumeResizeSuccessful       persistentvolumeclaim/cnfs-nas-pvc          Resize volume succeeded
  4. Revise la información de uso del volumen en el panel de CSI NAS.

    1. Inicie sesión en la consola de ACK. 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. Luego, en el panel de navegación izquierdo, seleccione Operations > Prometheus Monitoring.

    3. En la página Prometheus Monitoring, elija Storage Monitoring > CSI NAS.

    4. En la pestaña CSI NAS, seleccione el namespace donde se encuentra el volumen de almacenamiento NAS y la PVC correspondiente. Después podrá consultar la capacidad del volumen NAS en la sección de capacidad total.

      En este ejemplo, establezca Namespace en default y PVC en cnfs-nas-pvc. NAS存储卷容量

      La gráfica anterior muestra que la expansión ocurrió a las 10:23:30 y que el volumen NAS aumentó hasta 100 GiB.