Todos os produtos
Search
Central de documentação

File Storage NAS:Montar um volume NAS persistente estático usando NFS

Última atualização: Aug 27, 2026

Os volumes NAS oferecem persistência de dados, evitando perdas quando um pod é recriado, e permitem o compartilhamento de dados, possibilitando que vários pods leiam e escrevam simultaneamente. O Container Service for Kubernetes (ACK) permite montar sistemas de arquivos NAS existentes em workloads como volumes persistentes estáticos.

  • Volume estático: Crie um PV antecipadamente para representar um recurso de armazenamento existente, como um sistema de arquivos NAS. A aplicação cria um PVC para solicitar armazenamento e o sistema vincula esse PVC a um PV pré-provisionado adequado. Esse é um método comum para gerenciar recursos de armazenamento existentes. No entanto, o PVC vinculado não suporta expansão online por padrão.

    Para usar a expansão automática de volume, consulte Use dynamic NAS volumes ou Use CNFS to automatically expand NAS volumes .
  • Volume dinâmico: Não é necessário criar um PV com antecedência. Quando uma aplicação cria um PVC, o sistema provisiona automaticamente um novo volume e um PV correspondente sob demanda, com base na StorageClass especificada no PVC. Essa abordagem é mais flexível e suporta expansão de volume.

Fluxo de trabalho

Este diagrama ilustra o fluxo de trabalho para montar um volume de armazenamento NAS estático em um cluster ACK.

image
  1. Criar um PV: Registre um sistema de arquivos NAS existente no cluster declarando seu ponto de montagem (o diretório raiz ou um subdiretório específico), capacidade, modo de acesso e outras propriedades.

  2. Criar um PVC: A aplicação usa um PVC para reivindicar recursos de armazenamento registrados. O Kubernetes vincula automaticamente o PVC a um PV correspondente.

  3. Criar uma aplicação: Monte o PVC vinculado em um pod da aplicação como um diretório persistente dentro do contêiner.

Pré-requisitos

  • Os componentes csi-plugin e csi-provisioner devem estar instalados.

    Os componentes CSI são instalados por padrão. Verifique se eles permanecem instalados. Confira o status da instalação na página Add-ons . Recomendamos upgrading the CSI components para a versão mais recente.
  • O sistema de arquivos NAS deve atender às seguintes condições. Caso contrário, create a file system ou use a dynamically provisioned NAS volume.

    O NAS possui limitations sobre conectividade de montagem, número de sistemas de arquivos e tipos de protocolo.
    • Protocol Type: Deve ser NFS.

    • VPC: O sistema de arquivos NAS deve estar na mesma VPC do cluster. O NAS suporta montagem entre zonas de disponibilidade, mas não entre VPCs.

    • Mount Target: Adicione um ponto de montagem na mesma VPC do cluster. O status deve ser Available. Para obter detalhes, consulte Manage mount targets. Anote o endereço do ponto de montagem.

    • (Opcional) Encryption Type: Para criptografar os dados do volume, configure o tipo de criptografia ao criar o sistema de arquivos NAS.

Observações de uso

  • Não exclua pontos de montagem: Para evitar erros de E/S nos nós, não exclua um ponto de montagem no console NAS enquanto o volume correspondente estiver em uso.

  • Escritas simultâneas: O NAS fornece armazenamento compartilhado. Quando vários Pods montam o mesmo volume, a aplicação deve lidar com possíveis problemas de consistência de dados decorrentes de escritas concorrentes.

    Para mais informações sobre limitações de escritas simultâneas no NAS, consulte Multiple processes writing to the same log file e Latency in reading updated file content across ECS instances .
  • Desempenho de montagem: Se você configurar o parâmetro securityContext.fsgroup na aplicação, o kubelet executa recursivamente chmod ou chown após a montagem do volume, aumentando significativamente o tempo de inicialização do Pod.

    Para otimizar o desempenho de montagem, consulte NAS volume FAQ .

Etapa 1: Criar um PersistentVolume

Crie um PersistentVolume (PV) para disponibilizar um sistema de arquivos NAS existente no cluster.

Kubectl

  1. Crie um arquivo chamado pv-nas.yaml com o seguinte conteúdo.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # The name of the PV, which must be unique in the cluster.
      name: pv-nas  
      # The label of the PV, used for matching with a PVC.
      labels:  
        alicloud-pvname: pv-nas
    spec:
      capacity:
        # This capacity is for matching purposes only. The actual capacity is determined by the NAS file system.
        storage: 5Gi  
      accessModes:
        - ReadWriteMany
      # The reclaim policy for the PV.
      persistentVolumeReclaimPolicy: Retain
      csi:
        # The driver. This value is fixed when you use a NAS volume.
        driver: nasplugin.csi.alibabacloud.com  
        # Must be the same as metadata.name.
        volumeHandle: pv-nas   
        volumeAttributes:
          server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com"  # Replace this value with the address of your NAS mount target.
          # The NAS subdirectory to mount. If the subdirectory does not exist, it is automatically created.
          path: "/csi"
      mountOptions:
      - nolock,tcp,noresvport
      - vers=3

    Parâmetro

    Descrição

    storage

    Capacidade do PV. Este valor serve apenas para correspondência com um PersistentVolumeClaim (PVC) e não limita a capacidade real disponível. A capacidade de armazenamento disponível para a aplicação é limitada pela capacidade total do sistema de arquivos NAS.

    A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.

    accessModes

    Modo de acesso. Valores válidos:

    • ReadWriteMany (padrão): O volume pode ser montado como leitura e escrita por vários nós.

    • ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó.

    • ReadOnlyMany: O volume pode ser montado como somente leitura por vários nós.

    persistentVolumeReclaimPolicy

    Política de recuperação do PV. Define o que acontece com o PV e com os dados do backend NAS quando o PersistentVolumeClaim (PVC) vinculado é excluído.

    • Retain (Recomendado): Após a exclusão do PVC, o PV entra no estado Released. Os dados do backend NAS são retidos e devem ser excluídos manualmente.

    • Delete: Exclui o PV quando o PVC associado é removido. Esta política requer archiveOnDelete. No entanto, PVs estáticos não suportam archiveOnDelete. Portanto, quando esta política é definida como Delete, excluir o PVC não remove o PV nem os arquivos no sistema de arquivos NAS.

      Para configurar archiveOnDelete, consulte Use dynamically provisioned NAS volumes.

    driver

    Driver. Defina este parâmetro como nasplugin.csi.alibabacloud.com ao usar o plug-in CSI do Alibaba Cloud NAS.

    volumeHandle

    Identificador exclusivo para o volume no sistema de armazenamento de backend. Deve ser igual ao nome do PV (metadata.name). Se você usar vários PVs, este valor deve ser único para cada PV.

    server

    Endereço do ponto de montagem do NAS.

    Para encontrar o endereço do ponto de montagem, consulte Manage mount targets.

    path

    Subdiretório do NAS a ser montado. Se este parâmetro não for especificado, o diretório raiz será montado por padrão.

    Se o diretório não existir no sistema de arquivos NAS, ele será criado automaticamente e depois montado.
    • NAS de uso geral: O diretório raiz é /.

    • Extreme NAS: O diretório raiz é /share. Ao montar um subdiretório, o path deve começar com /share, como /share/data.

    mountOptions

    Opções de montagem para NAS, incluindo a versão do protocolo NFS. Por padrão, os volumes são montados usando NFSv3. Você pode especificar uma versão diferente com uma opção como vers=4.0. Para informações sobre os protocolos NFS suportados por diferentes tipos de NAS, consulte NFS protocols.

  2. Crie o PV.

    kubectl create -f pv-nas.yaml
  3. Verifique o status e as propriedades do PV.

    kubectl get pv

    Saída esperada:

    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM    STORAGECLASS     VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-nas   5Gi        RWX            Retain           Available                             <unset>                          25s

    A saída mostra que o PV foi criado com sucesso com capacidade de 5 Gi e tem status Available, indicando que ainda não está vinculado a um PersistentVolumeClaim (PVC).

Console

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

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

  3. Na página Persistent Volumes, clique em Create. Na caixa de diálogo exibida, configure os parâmetros e clique em Create.

    Parâmetro

    Descrição

    PV Type

    Selecione NAS.

    Volume Name:

    Nome do PV, que deve ser exclusivo no cluster.

    Capacity

    Capacidade do PV. Este valor serve apenas para correspondência com um PersistentVolumeClaim (PVC) e não limita a capacidade real disponível. A capacidade de armazenamento disponível para a aplicação é limitada pela capacidade total do sistema de arquivos NAS.

    A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.

    Access Mode

    Configure o modo de acesso. Valores válidos:

    • ReadWriteMany: O volume pode ser montado como leitura e escrita por vários nós.

    • ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó.

    Enable CNFS

    Define se deve usar o Container Network File System (CNFS) para aproveitar seus recursos de O&M automatizado, aceleração de cache e monitoramento de desempenho.

    Para usar o CNFS para gerenciar um sistema de arquivos NAS existente, consulte Create a CNFS-managed NAS file system (Recommended).

    Mount Target Domain Name:

    Este parâmetro é exibido apenas quando o CNFS está desativado.

    Endereço do ponto de montagem do NAS.

    Para obter o endereço, consulte Manage mount targets.
    • Select Mount Target: Selecione o endereço de um ponto de montagem adicionado anteriormente.

    • Custom: Use um nome de domínio personalizado como endereço de montagem. Certifique-se de que o nome de domínio personalizado resolva para o ponto de montagem NAS alvo.

    Advanced Options (Optional)

    Mount Path

    Subdiretório do NAS a ser montado. Se este parâmetro não for especificado, o diretório raiz será montado por padrão.

    Se o diretório não existir no sistema de arquivos NAS, ele será criado automaticamente e depois montado.
    • NAS de uso geral: O diretório raiz é /.

    • Extreme NAS: O diretório raiz é /share. Ao montar um subdiretório, o path deve começar com /share, como /share/data.

    Reclaim Policy

    • Retain (padrão): Quando o PVC é excluído, o PV e os arquivos NAS não são removidos. Exclua-os manualmente.

    • Delete: Exclui o PV quando o PVC associado é removido. Esta política requer archiveOnDelete. No entanto, PVs estáticos não suportam archiveOnDelete. Portanto, quando esta política é definida como Delete, excluir o PVC não remove o PV nem os arquivos no sistema de arquivos NAS.

      Para configurar archiveOnDelete, consulte Use dynamically provisioned NAS volumes.

    Mount Options

    Opções de montagem para NAS, incluindo a versão do protocolo NFS. Por padrão, os volumes são montados usando NFSv3. Você pode especificar uma versão diferente com uma opção como vers=4.0. Para informações sobre os protocolos NFS suportados por diferentes tipos de NAS, consulte NFS protocols.

    Labels

    Rótulos a serem aplicados ao PV.

    Após a criação do PV, visualize-o na página Persistent Volumes.

Etapa 2: Criar um PVC

Crie um Persistent Volume Claim (PVC) para solicitar armazenamento persistente para a aplicação.

kubectl

  1. Crie um arquivo chamado pvc-nas.yaml para vincular ao PV criado anteriormente.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nas  # The PVC name, which must be unique within the namespace.
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas   # Matches the PV created earlier by its label.

    Parâmetro

    Descrição

    accessModes

    Modo de acesso. Valores válidos:

    • ReadWriteMany (padrão): O volume pode ser montado como leitura e escrita por vários nós.

    • ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó.

    • ReadOnlyMany: O volume pode ser montado como somente leitura por vários nós.

    storage

    Valor usado para encontrar um PV correspondente. Não limita a capacidade real de armazenamento.

    A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.

    matchLabels

    Especifica o rótulo usado para selecionar um PV para vinculação.

  2. Crie o PVC.

    kubectl create -f pvc-nas.yaml
  3. Verifique o status do PVC.

    kubectl get pvc

    Saída esperada:

    NAME       STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-nas    Bound    pv-nas    5Gi        RWX                           <unset>                 5s

    A saída mostra que o PVC pvc-nas está vinculado (Bound) ao PV pv-nas e pronto para uso pela aplicação.

Console

  1. No painel de navegação à esquerda da página de gerenciamento do cluster, escolha Storage > PVCs.

  2. Na página Persistent Volume Claims, clique em Create e configure os parâmetros conforme descrito na tabela a seguir.

    Parâmetro

    Descrição

    PVC Type

    Selecione NAS.

    Name

    Nome do PVC, que deve ser exclusivo dentro do namespace.

    Allocation Mode

    Selecione Existing Persistent Volume.

    Este tópico usa o PV criado na etapa anterior. Se você não criou um PV, defina o Allocation Mode como Create PV.

    Existing Volumes

    Selecione o PV criado anteriormente.

    Capacity

    Valor usado para encontrar um PV correspondente. Não limita a capacidade real de armazenamento.

    A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.

    Access Mode

    Modo de acesso. Valores válidos:

    • ReadWriteMany (padrão): O volume pode ser montado como leitura e escrita por vários nós.

    • ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó.

    • ReadOnlyMany: O volume pode ser montado como somente leitura por vários nós.

Etapa 3: Criar aplicação e montar NAS

Após criar o PVC, monte o PV vinculado em uma aplicação.

kubectl

  1. Crie um arquivo chamado deploy.yaml com o seguinte conteúdo. Este manifesto referencia o PVC criado anteriormente.

    Esta configuração permite verificar o recurso de armazenamento compartilhado do NAS.

    YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      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: pvc-nas
                # The mount path for the NAS volume.
                mountPath: "/data"  
          volumes:
            # Specify the PVC to use.
            - name: pvc-nas  
              persistentVolumeClaim:
                claimName: pvc-nas
  2. Crie o Deployment.

    kubectl create -f deploy.yaml
  3. Verifique o status dos Pods.

    kubectl get pod -l app=nginx

    Saída esperada:

    NAME                  READY   STATUS    RESTARTS   AGE
    nas-test-****-***a    1/1     Running   0          32s
    nas-test-****-***b    1/1     Running   0          32s

Console

  1. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  2. Na página Deployments, clique em Create from Image e configure os parâmetros da aplicação.

    A tabela a seguir descreve os principais parâmetros. Mantenha os valores padrão para os demais parâmetros. Para mais informações, consulte Create a stateless workload (Deployment).

    Categoria

    Parâmetro

    Descrição

    Basic Information

    Application Name

    Nome do Deployment.

    Replicas:

    Número de réplicas para o Deployment.

    Esta configuração permite verificar o recurso de armazenamento compartilhado do NAS.

    Container

    Image Name

    Endereço da imagem da aplicação.

    Required Resources

    Recursos necessários de vCPU e memória.

    Volume

    Clique em Add PVC e configure os parâmetros.

    • Mount Source: Selecione o PVC criado anteriormente.

    • Container Path: Caminho dentro do contêiner para montar o sistema de arquivos NAS, como /data.

    Quando a implantação terminar, acesse a página Deployments e clique no nome da aplicação. Na aba Pods, verifique se os Pods estão no estado Running.

Verificar armazenamento compartilhado e persistente

Após implantar a aplicação, verifique se o volume funciona conforme o esperado.

Armazenamento compartilhado

Armazenamento persistente

Para verificar o armazenamento compartilhado, crie um arquivo em um pod e verifique sua existência em outro.

  1. Obtenha os nomes dos pods.

    kubectl get pod | grep nas-test

    Saída esperada:

    nas-test-*****a   1/1     Running   0          40s
    nas-test-*****b   1/1     Running   0          40s
  2. Crie um arquivo em um dos pods.

    Por exemplo, use o pod chamado nas-test-*a:

    kubectl exec nas-test-*****a -- touch /data/test.txt
  3. Verifique se o arquivo existe no outro pod.

    Por exemplo, use o pod chamado nas-test-*b:

    kubectl exec nas-test-*****b -- ls /data

    Saída esperada:

    test.txt

    A saída mostra o arquivo, confirmando que os dados são compartilhados entre os pods.

Para verificar o armazenamento persistente, reinicie o Deployment e confirme se os dados persistem nos novos pods.

  1. Reinicie o Deployment para recriar os pods da aplicação.

    kubectl rollout restart deploy nas-test
  2. Verifique o status dos pods e aguarde até que os novos pods iniciem e entrem no estado Running.

    kubectl get pod | grep nas-test

    Saída esperada:

    nas-test-*****c   1/1     Running   0          67s
    nas-test-*****d   1/1     Running   0          49s
  3. Verifique se o arquivo criado anteriormente existe em um novo pod.

    Por exemplo, use o pod chamado nas-test-*c:

    kubectl exec nas-test-*****c -- ls /data

    Saída esperada:

    test.txt

    A saída mostra o arquivo, confirmando que os dados persistem entre reinicializações de pods.

Preparação para produção

  • Segurança e gerenciamento de acesso

    • Use grupos de permissões para controle de acesso: O NAS utiliza permission groups para gerenciar o acesso à rede. Siga o princípio do menor privilégio: adicione apenas os endereços IP privados dos nós do cluster ou seus blocos CIDR de vSwitch ao grupo de permissões. Evite permissões excessivamente amplas, como 0.0.0.0/0.

  • Otimização de desempenho e custos

    • Selecione um tipo de NAS apropriado: Consulte File system selection para escolher um tipo de NAS que atenda aos requisitos de IOPS e throughput da aplicação.

    • Otimize as opções de montagem (mountOptions): Ajuste os parâmetros de montagem NFS com base nas características da carga de trabalho. Por exemplo, usar versões de protocolo como vers=4.0 ou vers=4.1 pode melhorar o desempenho e os recursos de bloqueio de arquivos em alguns cenários. Para cargas de trabalho com E/S de arquivos em grande escala, teste diferentes valores de rsize e wsize para otimizar o throughput de leitura e escrita.

  • Operações e confiabilidade

    • Configure verificações de integridade: Configure uma sonda de atividade (liveness probe) para os pods da aplicação a fim de verificar se o ponto de montagem está íntegro. Se um ponto de montagem deixar de responder, o ACK reinicia automaticamente o pod, acionando uma nova montagem do volume de armazenamento.

    • Configure monitoramento e alertas: Use container storage monitoring para configurar alertas e detectar prontamente problemas em volumes de armazenamento ou gargalos de desempenho.

    • Use a política de recuperação Retain: Para dados de produção, defina a persistentVolumeReclaimPolicy do PV como Retain. Isso evita perda acidental de dados no sistema de arquivos NAS de backend quando o PVC correspondente é removido.

Liberar recursos

Para evitar cobranças inesperadas, libere os recursos na seguinte ordem quando não precisar mais do volume NAS.

  1. Excluir workloads

    • Exclua todas as aplicações, como Deployments e StatefulSets, que usam o volume NAS. Esta ação desmonta o volume dos Pods e interrompe todo o acesso de leitura e escrita.

    • Comando de exemplo: kubectl delete deployment <your-deployment-name>

  2. Excluir o PVC

    • Exclua o PVC associado à aplicação. Após a exclusão do PVC, o destino do PV vinculado depende da sua persistentVolumeReclaimPolicy.

    • Política de recuperação:

      • Retain (recomendado): Após a exclusão de um PVC, seu PV vinculado entra no estado Released. O objeto PV e os dados no sistema de arquivos NAS de backend são retidos. Exclua-os manualmente.

      • Delete: Após a exclusão de um PVC, o objeto PV correspondente também é excluído. Observe o seguinte:

        • Se o PV apontar para o diretório raiz do sistema de arquivos NAS, os dados no sistema de arquivos serão retidos para evitar exclusão acidental.

        • Se o volumeHandle de um PV estático for um sufixo do seu path (por exemplo, se volumeHandle for app e path for /exports/app), excluir o PVC aciona a exclusão automática do subdiretório no sistema de arquivos NAS de backend. Use este recurso com cautela.

    • Comando de exemplo: kubectl delete pvc <your-pvc-name>

    • Excluir o PV

      • Exclua um PV quando seu status for Available ou Released. Esta ação remove apenas a definição do PV do cluster Kubernetes, mas não exclui os dados no sistema de arquivos NAS de backend.

      • Comando de exemplo: kubectl delete pv <your-pv-name>

    • Excluir o sistema de arquivos NAS de backend (opcional)

      • Consulte Delete a file system. Esta ação exclui permanentemente todos os dados no sistema de arquivos NAS e não pode ser desfeita. Antes de prosseguir, certifique-se de que nenhuma workload dependa do sistema de arquivos.

    • Referências