Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Sep 25, 2026

ACK CNFS peut être monté et utilisé comme un volume de stockage partagé NAS. Comme l'illustre une application StatefulSet, CNFS permet de monter le même répertoire d'un système de fichiers NAS sur plusieurs applications ou Pods afin de résoudre les problèmes de partage de données entre Pods.

Prérequis

  • Le service NAS est activé.

    Si vous accédez pour la première fois à la page produit de NAS, suivez les instructions affichées à l'écran pour activer le service NAS.

  • Un cluster Container Service for Kubernetes (ACK) exécutant Kubernetes 1.20 ou une version ultérieure a été créé. Le plug-in Container Storage Interface (CSI) est utilisé en tant que plug-in de volume. Pour plus d'informations, consultez la rubrique Créer un cluster ACK managé.

  • Les versions de csi-plugin et csi-provisioner sont v1.24.11-5221f79-aliyun ou ultérieures. Pour plus d'informations sur la mise à jour de csi-plugin et csi-provisioner, consultez la rubrique Installer et mettre à jour les composants CSI.

  • La version de storage-operator est v1.24.105-825188d-aliyun ou ultérieure. Pour plus d'informations sur la mise à jour de storage-operator, consultez la rubrique Gérer les composants.

  • Un client kubectl est connecté à votre cluster. Pour plus d'informations, consultez la rubrique Se connecter à un cluster ACK à l'aide de kubectl.

    Remarque

    Pour plus d'informations sur CNFS, consultez la rubrique CNFS.

    Pour plus d'informations sur l'utilisation de CNFS pour gérer les systèmes de fichiers NAS, consultez la rubrique Gérer les systèmes de fichiers NAS à l'aide de CNFS.

Étape 1 : Créer une charge de travail pour un volume partagé

  • Créez un volume persistant (PV) nommé cnfs-nas-static-pv. Ce PV fait référence à un CNFS nommé cnfs-nas-filesystem, qui correspond au système de fichiers NAS que vous avez créé.

  • Créez une revendication de volume persistant (PVC) nommée cnfs-nas-static-pvc et liez le PV au PVC.

  • Créez un StatefulSet nommé cnfs-nas-static-sts. Le StatefulSet utilise une image busybox pour monter le PVC et écrit 1 Go de données temporaires 1G.tmpfile dans le point de montage.

Afficher le contenu 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

Étape 2 : Vérifier le résultat du montage

Vérifiez le résultat du montage :

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

Sortie attendue :

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

La sortie attendue affiche un point de montage, ce qui indique que le volume est monté.

Étape 3 : Vérifier si les données sont persistées sur le volume

Écrivez un fichier temporaire de 1 Go dans le répertoire :

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

Vérifiez si le fichier temporaire a bien été écrit dans le répertoire :

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

Sortie attendue :

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

La sortie indique que le fichier 1G.tmpfile a été écrit dans le répertoire /data.

Étape 4 : Vérifier si les données sont partagées avec d'autres pods

Vérifiez si le fichier temporaire de 1 Go est partagé dans un autre Pod, cnfs-nas-static-sts-1 :

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

Sortie attendue :

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

La sortie indique que le fichier 1G.tmpfile existe dans les pods nommés cnfs-nas-static-sts-0 et cnfs-nas-static-sts-1.

Remarque

Lors de l'écriture de données de stockage partagé entre différents Pods, CNFS ne garantit pas la cohérence des données. Évitez d'écrire plusieurs fois dans le même fichier pour prévenir toute corruption de celui-ci.

Références