Todos os produtos
Search
Central de documentação

:Use CNFS to automatically expand NAS volumes

Última atualização: Jul 05, 2026

Defina políticas de expansão automática para volumes do File Storage NAS (NAS) gerenciados pelo Container Network File System (CNFS). Assim, os volumes do NAS se expandem automaticamente quando o uso de armazenamento ultrapassa o limiar definido. Este tópico descreve como usar o CNFS para essa expansão automática.

Pré-requisitos

  • O cluster deve usar o CNFS para gerenciar sistemas de arquivos NAS. Para mais informações, consulte Gerenciar sistemas de arquivos NAS usando o CNFS.

  • O cluster usa o plug-in CSI e os componentes de armazenamento atendem aos seguintes requisitos:

    • As versões do csi-plugin e do csi-provisioner são 1.20.5-ff6490f-aliyun ou posteriores. Para atualizar esses componentes, consulte Atualizar componentes CSI.

    • O valor padrão de dnsPolicy do csi-plugin é ClusterFirst. Para usar o CNFS na expansão automática de volumes NAS, altere a dnsPolicy padrão de ClusterFirst para ClusterFirstWithHostNet.

    • A versão do storage-operator é 1.18.8.56-2aa33ba-aliyun ou posterior. Para mais detalhes, consulte storage-operator.

Etapa 1: Configure o componente storage-operator e ative a expansão automática

O recurso storage-auto-expander padrão do componente storage-operator expande automaticamente os recursos de armazenamento. Conecte-se ao cluster e execute o comando abaixo para modifique o arquivo ConfigMap do storage-operator e ative a expansão 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\"}"}}'

Etapa 2: Configure uma política de expansão automática

  1. Verifique o status do objeto CNFS. Confirme se ele está no estado Available.

    1. Consulte o objeto CNFS.

      kubectl get cnfs

      Saída esperada:

      NAME                                      AGE
      default-cnfs-nas-837d6ea-20210819155623   14d
    2. Visualize o status do objeto CNFS.

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

      Saída esperada:

      status: Available
  2. Use o modelo YAML a seguir para crie uma política de expansão automática para um volume 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

    Descrição

    pvcSelector

    Rótulo usado para associar a política de expansão à PVC que monta o volume NAS. Neste exemplo, usa-se nginx.

    namespaces

    Namespace da PVC que monta o volume NAS. Se houver vários namespaces, o operador lógico entre eles é OR. Valor padrão: default. O exemplo especifica default e nginx.

    conditions

    Condições que disparam a ação. Entre múltiplas conditions, o operador lógico é AND. Cada condition inclui os seguintes parâmetros:

    • key: tipo da métrica.

    • volume-capacity-used-percentage: indica que o limiar de uso de armazenamento é expresso em porcentagem.

    • operator: operador de comparação. Pode ser Gt (maior que), Lt (menor que), Eq (igual a) ou Ne (diferente de). O valor não diferencia maiúsculas de minúsculas.

    • values: valor do limiar.

    No exemplo, a condição aciona a action quando a utilização de armazenamento da PVC supera 80%.

    actions

    Ações executadas quando as conditions anteriores são satisfeitas. Várias ações são permitidas. Cada ação inclui os seguintes parâmetros:

    • type: tipo da ação. Apenas volume-expand é suportado.

    • scale: quantidade de armazenamento a adicionar ao volume. Unidades válidas: GiB e porcentagem (%).

    • limits: capacidade máxima da PVC após a execução da action.

    Se a seção actions contiver múltiplas actions, apenas a primeira cujas condições forem atendidas será executada. As demais actions serão ignoradas.

    Neste exemplo, action1 define que, ao cumprir as condições, o volume NAS expande em 100%, até o limite máximo de 500 GiB.

  3. Use o modelo YAML abaixo para crie uma PVC e um Deployment.

    Importante

    A política de expansão automática aplica-se apenas à PVC e ao Deployment com o rótulo especificado. No exemplo, pvcSelector.matchLabels foi definido como app: nginx na política. Portanto, ela se aplica à PVC e ao Deployment cujo parâmetro labels esteja definido 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

Etapa 3: Verifique a expansão automática do volume NAS

  1. Liste todos os pods no namespace default.

    kubectl get pod

    Saída esperada:

    NAME                                                            READY   STATUS    RESTARTS   AGE
    cnfs-nas-deployment-56dbcc7fb7-wh79z   1/1      Running            0          20m
  2. Acesse o pod da aplicação e grave 50 GiB de dados no diretório onde o volume NAS está montado.

    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. Verifique os eventos relacionados à expansão de volume.

    kubectl get events

    A saída a seguir indica que o uso de armazenamento do volume NAS excedeu 80%, o que disparou a expansão. O volume NAS passou de 50 GiB para 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. Verifique as informações de uso do volume no painel CSI NAS.

    1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Operations > Prometheus Monitoring.

    3. Na página Prometheus Monitoring, escolha Storage Monitoring > CSI NAS.

    4. Na aba CSI NAS, selecione o namespace do volume de armazenamento NAS e a PVC correspondente. Em seguida, visualize a capacidade do volume NAS na seção de capacidade total.

      Neste exemplo, defina Namespace como default e PVC como cnfs-nas-pvc. NAS存储卷容量

      O gráfico acima mostra que a expansão ocorreu às 10:23:30 e o volume NAS foi expandido para 100 GiB.