Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use CNFS to manage shared NAS volumes (recommended)

Última atualização: Sep 25, 2026

É possível montar e usar o CNFS do ACK como um volume de armazenamento NAS compartilhado. Conforme demonstrado por uma aplicação StatefulSet, o CNFS permite montar o mesmo diretório de um sistema de arquivos NAS em várias aplicações ou Pods para resolver problemas de compartilhamento de dados entre Pods.

Pré-requisitos

  • O NAS está ativado.

    Se for a primeira vez que você acessa a página do produto NAS, siga as instruções na tela para ativar o serviço NAS.

  • Um cluster do Container Service for Kubernetes (ACK) que executa o Kubernetes 1.20 ou posterior foi criado. O cluster utiliza o plug-in Container Storage Interface (CSI) como plug-in de volume. Para mais informações, consulte Create an ACK managed cluster.

  • As versões do csi-plugin e do csi-provisioner devem ser v1.24.11-5221f79-aliyun ou superiores. Para saber mais sobre como atualizar o csi-plugin e o csi-provisioner, consulte Install and update the CSI components.

  • A versão do storage-operator deve ser v1.24.105-825188d-aliyun ou superior. Para obter mais detalhes sobre como atualizar o storage-operator, consulte Manage components.

  • Um cliente kubectl está conectado ao seu cluster. Para instruções de conexão, consulte Connect to an ACK cluster using kubectl.

    Nota

    Para saber mais sobre o CNFS, consulte CNFS.

    Para detalhes sobre o uso do CNFS no gerenciamento de sistemas de arquivos NAS, consulte Manage NAS file systems using CNFS.

Etapa 1: Crie uma carga de trabalho para um volume compartilhado

  • Crie um volume persistente (PV) chamado cnfs-nas-static-pv. O PV referencia um CNFS chamado cnfs-nas-filesystem, correspondente ao sistema de arquivos NAS criado.

  • Crie um persistent volume claim (PVC) chamado cnfs-nas-static-pvc e vincule o PV ao PVC.

  • Crie um StatefulSet chamado cnfs-nas-static-sts. O StatefulSet usa uma imagem busybox para montar o PVC e grava 1 GB de dados temporários 1G.tmpfile no ponto de montagem.

Mostrar conteúdo YAML:

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: cnfs-nas-static-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 50Gi
  csi:
    driver: nasplugin.csi.alibabacloud.com
    fsType: nfs
    volumeAttributes:
      containerNetworkFileSystem: cnfs-nas-filesystem # Reference the CNFS named 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:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: cnfs-nas-sc
  volumeMode: Filesystem
  volumeName: cnfs-nas-static-pv # Reference the PV named cnfs-nas-static-pv. 
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 50Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: cnfs-nas-static-sts
  labels:
    app: busybox
spec:
  serviceName: "busybox"
  replicas: 2
  selector:
    matchLabels:
      app: busybox
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ["/bin/sh"]
        args: ["-c", "sleep 3600;"]
        volumeMounts:
        - mountPath: "/data"
          name: cnfs-nas-static-pvc
      volumes:
      - name: cnfs-nas-static-pvc
        persistentVolumeClaim:
          claimName: cnfs-nas-static-pvc # Reference the PVC named cnfs-nas-static-pvc. 
EOF

Etapa 2: Visualize o resultado da montagem

Visualize o resultado da montagem:

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

Saída esperada:

971134b0e8-****.cn-zhangjiakou.nas.aliyuncs.com:/ on /data type nfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

A saída esperada exibe um ponto de montagem, indicando que o volume foi montado com sucesso.

Etapa 3: Verifique se os dados foram persistidos no volume

Grave um arquivo temporário de 1 GB no diretório:

kubectl exec cnfs-nas-static-sts-0 -ti -- sh -c 'dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;'

Verifique se o arquivo temporário foi gravado no diretório:

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

Saída esperada:

total 1G
-rw-r--r--    1 root     root        1.0G Dec 15 12:11 1G.tmpfile

A saída indica que o arquivo 1G.tmpfile foi gravado no diretório /data.

Etapa 4: Verifique se os dados estão compartilhados com outros pods

Verifique se o arquivo temporário de 1 GB está compartilhado no pod cnfs-nas-static-sts-1:

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

Saída esperada:

total 1G
-rw-r--r--    1 root     root        1.0G Dec 15 12:11 1G.tmpfile

A saída indica que o arquivo 1G.tmpfile existe nos pods cnfs-nas-static-sts-0 e cnfs-nas-static-sts-1.

Nota

Ao gravar dados de armazenamento compartilhado em diferentes Pods, o CNFS não garante a consistência dos dados. Evite escrever no mesmo arquivo várias vezes para prevenir sua corrupção.

Referências