Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use static NAS volumes

Última atualização: Sep 17, 2026

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

  • Volume estático: É necessário criar 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 é preciso criar um PV antecipadamente. 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 oferece maior flexibilidade e suporta a expansão de volumes.

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: Uma 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. Você pode verificar o status da instalação na página Add-ons . Recomendamos upgrading the CSI components para a versão mais recente.
  • Seu 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, quantidade 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 suporta montagem entre VPCs diferentes.

    • Mount Target: Adicione um ponto de montagem na mesma VPC do cluster. O status deve ser Available. Para mais 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, sua 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 sua 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 seu 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

    A 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 sua 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

    O 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

    A política de recuperação do PV. Esta política 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

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

    volumeHandle

    Um 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

    O endereço do ponto de montagem do NAS.

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

    path

    O 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 é /.

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

    mountOptions

    As 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 status Available, indicando que ainda não está vinculado a um PersistentVolumeClaim (PVC).

Console

  1. Faça login no ACK console. 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 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:

    O nome do PV, que deve ser exclusivo no cluster.

    Capacity

    A 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 sua 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

    Especifica se deve usar 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 no gerenciamento de 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.

    O 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 desejado.

    Advanced Options (Optional)

    Mount Path

    O 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 é /.

    • NAS Extreme: 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. Você deve excluí-los 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

    As 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, você poderá visualizá-lo na página Persistent Volumes.

Etapa 2: Criar um PVC

Crie um Persistent Volume Claim (PVC) para solicitar armazenamento persistente para sua 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

    O 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

    Este valor é usado para encontrar um PV correspondente e 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 indica 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

    O nome do PVC, que deve ser exclusivo dentro do namespace.

    Allocation Mode

    Selecione Existing Persistent Volume.

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

    Existing Volumes

    Selecione o PV criado anteriormente.

    Capacity

    Este valor é usado para encontrar um PV correspondente e 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

    O 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 seu 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

    O nome do Deployment.

    Replicas:

    O número de réplicas para o Deployment.

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

    Container

    Image Name

    O endereço da imagem da aplicação.

    Required Resources

    Os 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: O caminho dentro do contêiner para montar o sistema de arquivos NAS, como /data.

    Quando a implantação for concluída, 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 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 exibe 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 exibe o arquivo, confirmando que os dados persistem entre reinicializações dos 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 sua aplicação.

    • Otimize as opções de montagem (mountOptions): Ajuste os parâmetros de montagem NFS com base nas características da sua 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 sua 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 definir alertas que detectem prontamente problemas em volumes de armazenamento ou gargalos de desempenho.

    • Utilize 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 cargas de trabalho

    • Exclua todas as aplicações, como Deployments e StatefulSets, que utilizam 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, o PV vinculado entra no estado Released. O objeto PV e os dados no sistema de arquivos NAS de backend são mantidos. Você deve excluí-los manualmente.

      • Delete: Após a exclusão de um PVC, o objeto PV correspondente também é removido. 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

      • Você pode excluir 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 carga de trabalho dependa do sistema de arquivos.

    • Referências