Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Use static NAS volumes

Dernière mise à jour :Aug 31, 2026

Les volumes NAS assurent la persistance des données, évitant ainsi toute perte en cas de recréation d'un pod, et permettent le partage des données, offrant un accès simultané en lecture et en écriture à plusieurs pods. Container Service for Kubernetes (ACK) vous permet de monter des systèmes de fichiers NAS existants sur vos charges de travail sous forme de volumes persistants statiques.

  • Volume statique : Vous devez créer un PV au préalable pour représenter une ressource de stockage existante, telle qu'un système de fichiers NAS. Une application crée une PVC pour demander du stockage, puis le système lie cette PVC à un PV pré-provisionné approprié. Il s'agit d'une méthode courante pour gérer les ressources de stockage existantes. Toutefois, la PVC liée ne prend pas en charge l'extension à chaud par défaut.

    Pour utiliser l'extension automatique des volumes, consultez Utiliser des volumes NAS dynamiques ou Utiliser CNFS pour étendre automatiquement les volumes NAS .
  • Volume dynamique : Vous n'avez pas besoin de créer un PV au préalable. Lorsqu'une application crée une PVC, le système provisionne automatiquement un nouveau volume et un PV correspondant à la demande, en fonction de la StorageClass spécifiée dans la PVC. Cette approche est plus flexible et prend en charge l'extension des volumes.

Flux de travail

Ce diagramme illustre le flux de travail pour monter un volume de stockage NAS statique dans un cluster ACK.

image
  1. Créer un PV : Enregistrez un système de fichiers NAS existant auprès du cluster en déclarant son point de montage (le répertoire racine ou un sous-répertoire spécifique), sa capacité, son mode d'accès et d'autres propriétés.

  2. Créer une PVC : Une application utilise une PVC pour revendiquer les ressources de stockage enregistrées. Kubernetes lie alors automatiquement la PVC à un PV correspondant.

  3. Créer une application : Montez la PVC liée sur un pod d'application en tant que répertoire persistant au sein du conteneur.

Prérequis

  • Les composants csi-plugin et csi-provisioner sont installés.

    Les composants CSI sont installés par défaut. Vérifiez qu'ils le sont toujours. Vous pouvez consulter l'état de l'installation sur la page Add-ons . Nous vous recommandons de mettre à niveau les composants CSI vers la dernière version.
  • Votre système de fichiers NAS doit répondre aux conditions suivantes. Sinon, créez un système de fichiers ou utilisez un volume NAS provisionné dynamiquement.

    NAS impose des limitations concernant la connectivité des montages, le nombre de systèmes de fichiers et les types de protocoles.
    • Protocol Type : Doit être NFS.

    • VPC : Le système de fichiers NAS doit se trouver dans le même VPC que le cluster. NAS prend en charge le montage inter-zones de disponibilité, mais pas le montage inter-VPC.

    • Mount Target : Ajoutez une cible de montage dans le même VPC que le cluster. Son statut doit être Available. Pour plus de détails, consultez Gérer les cibles de montage. Notez l'adresse de la cible de montage.

    • (Facultatif) Encryption Type : Pour chiffrer les données du volume, configurez le type de chiffrement lors de la création du système de fichiers NAS.

Notes d'utilisation

  • Ne supprimez pas les cibles de montage : Pour éviter les erreurs d'E/S sur les nœuds, ne supprimez pas une cible de montage dans la console NAS tant que le volume correspondant est utilisé.

  • Écritures concurrentes : NAS fournit un stockage partagé. Lorsque plusieurs pods montent le même volume, votre application doit gérer les éventuels problèmes de cohérence des données liés aux écritures concurrentes.

    Pour plus d'informations sur les limitations des écritures concurrentes sur NAS, consultez Plusieurs processus écrivant dans le même fichier journal et Latence de lecture du contenu mis à jour des fichiers entre les instances ECS .
  • Performances de montage : Si vous configurez le paramètre securityContext.fsgroup dans votre application, kubelet exécute récursivement chmod ou chown après le montage du volume, ce qui augmente considérablement le temps de démarrage du pod.

    Pour optimiser les performances de montage, consultez la FAQ sur les volumes NAS .

Étape 1 : Créer un PersistentVolume

Créez un PersistentVolume (PV) pour rendre un système de fichiers NAS existant disponible dans votre cluster.

Kubectl

  1. Créez un fichier nommé pv-nas.yaml avec le contenu suivant.

    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

    Paramètre

    Description

    storage

    La capacité du PV. Cette valeur sert uniquement à la mise en correspondance avec une PersistentVolumeClaim (PVC) et ne limite pas la capacité réelle disponible. La capacité de stockage disponible pour votre application est limitée par la capacité totale du système de fichiers NAS.

    La capacité maximale d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez General-purpose NAS et Extreme NAS.

    accessModes

    Le mode d'accès. Valeurs possibles :

    • ReadWriteMany (par défaut) : Le volume peut être monté en lecture-écriture par plusieurs nœuds.

    • ReadWriteOnce : Le volume peut être monté en lecture-écriture par un seul nœud.

    • ReadOnlyMany : Le volume peut être monté en lecture seule par plusieurs nœuds.

    persistentVolumeReclaimPolicy

    La politique de récupération du PV. Cette politique définit ce qui arrive au PV et aux données NAS backend lorsque la PersistentVolumeClaim (PVC) liée est supprimée.

    • Retain (Recommandé) : Après la suppression de la PVC, le PV passe à l'état Released. Les données NAS backend sont conservées et doivent être supprimées manuellement.

    • Delete : Supprime le PV lorsque la PVC associée est supprimée. Cette politique nécessite archiveOnDelete. Cependant, les PV statiques ne prennent pas en charge archiveOnDelete. Par conséquent, lorsque cette politique est définie sur Delete, la suppression de la PVC ne supprime ni le PV ni les fichiers sur le système de fichiers NAS.

      Pour configurer archiveOnDelete, consultez Utiliser des volumes NAS provisionnés dynamiquement.

    driver

    Le pilote. Définissez ce paramètre sur nasplugin.csi.alibabacloud.com lorsque vous utilisez le plug-in CSI Alibaba Cloud NAS.

    volumeHandle

    Un identifiant unique pour le volume dans le système de stockage backend. Il doit être identique au nom du PV (metadata.name). Si vous utilisez plusieurs PV, cette valeur doit être unique pour chaque PV.

    server

    L'adresse de la cible de montage NAS.

    Pour trouver l'adresse de la cible de montage, consultez Gérer les cibles de montage.

    path

    Le sous-répertoire NAS à monter. Si ce paramètre n'est pas spécifié, le répertoire racine est monté par défaut.

    Si le répertoire n'existe pas dans le système de fichiers NAS, il est automatiquement créé puis monté.
    • General-purpose NAS : Le répertoire racine est /.

    • Extreme NAS : Le répertoire racine est /share. Lorsque vous montez un sous-répertoire, le path doit commencer par /share, par exemple /share/data.

    mountOptions

    Les options de montage pour NAS, y compris la version du protocole NFS. Par défaut, les volumes sont montés en utilisant NFSv3. Vous pouvez spécifier une version différente avec une option telle que vers=4,0. Pour obtenir des informations sur les protocoles NFS pris en charge par les différents types de NAS, consultez Protocoles NFS.

  2. Créez le PV.

    kubectl create -f pv-nas.yaml
  3. Vérifiez le statut et les propriétés du PV.

    kubectl get pv

    Sortie attendue :

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

    La sortie indique que le PV a été créé avec succès avec une capacité de 5 Gi et présente un statut Available, ce qui signifie qu'il n'est pas encore lié à une PersistentVolumeClaim (PVC).

Console

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Volumes > Persistent Volumes.

  3. Sur la page Persistent Volumes, cliquez sur Create. Dans la boîte de dialogue qui s'affiche, configurez les paramètres, puis cliquez sur Create.

    Paramètre

    Description

    PV Type

    Sélectionnez NAS.

    Volume Name:

    Le nom du PV, qui doit être unique dans le cluster.

    Capacity

    La capacité du PV. Cette valeur sert uniquement à la mise en correspondance avec une PersistentVolumeClaim (PVC) et ne limite pas la capacité réelle disponible. La capacité de stockage disponible pour votre application est limitée par la capacité totale du système de fichiers NAS.

    La capacité maximale d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez General-purpose NAS et Extreme NAS.

    Access Mode

    Configurez le mode d'accès. Valeurs possibles :

    • ReadWriteMany : Le volume peut être monté en lecture-écriture par plusieurs nœuds.

    • ReadWriteOnce : Le volume peut être monté en lecture-écriture par un seul nœud.

    Enable CNFS

    Indique s'il faut utiliser Container Network File System (CNFS) pour bénéficier de ses fonctionnalités d'exploitation et maintenance automatisées, d'accélération du cache et de surveillance des performances.

    Pour utiliser CNFS afin de gérer un système de fichiers NAS existant, consultez Créer un système de fichiers NAS géré par CNFS (Recommandé).

    Mount Target Domain Name:

    Ce paramètre s'affiche uniquement lorsque CNFS est désactivé.

    L'adresse de la cible de montage NAS.

    Pour obtenir l'adresse, consultez Gérer les cibles de montage.
    • Select Mount Target : Sélectionnez l'adresse d'une cible de montage précédemment ajoutée.

    • Custom : Utilisez un nom de domaine personnalisé comme adresse de montage. Assurez-vous que le nom de domaine personnalisé résout vers la cible de montage NAS visée.

    Advanced Options (Optional)

    Mount Path

    Le sous-répertoire NAS à monter. Si ce paramètre n'est pas spécifié, le répertoire racine est monté par défaut.

    Si le répertoire n'existe pas dans le système de fichiers NAS, il est automatiquement créé puis monté.
    • General-purpose NAS : Le répertoire racine est /.

    • Extreme NAS : Le répertoire racine est /share. Lorsque vous montez un sous-répertoire, le path doit commencer par /share, par exemple /share/data.

    Reclaim Policy

    • Retain (par défaut) : Lorsque la PVC est supprimée, le PV et les fichiers NAS ne sont pas supprimés. Vous devez les supprimer manuellement.

    • Delete : Supprime le PV lorsque la PVC associée est supprimée. Cette politique nécessite archiveOnDelete. Cependant, les PV statiques ne prennent pas en charge archiveOnDelete. Par conséquent, lorsque cette politique est définie sur Delete, la suppression de la PVC ne supprime ni le PV ni les fichiers sur le système de fichiers NAS.

      Pour configurer archiveOnDelete, consultez Utiliser des volumes NAS provisionnés dynamiquement.

    Mount Options

    Les options de montage pour NAS, y compris la version du protocole NFS. Par défaut, les volumes sont montés en utilisant NFSv3. Vous pouvez spécifier une version différente avec une option telle que vers=4,0. Pour obtenir des informations sur les protocoles NFS pris en charge par les différents types de NAS, consultez Protocoles NFS.

    Labels

    Libellés à appliquer au PV.

    Une fois le PV créé, vous pouvez le consulter sur la page Persistent Volumes.

Étape 2 : Créer une PVC

Créez une Persistent Volume Claim (PVC) pour demander du stockage persistant pour votre application.

kubectl

  1. Créez un fichier nommé pvc-nas.yaml pour le lier au PV créé précédemment.

    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.

    Paramètre

    Description

    accessModes

    Le mode d'accès. Valeurs possibles :

    • ReadWriteMany (par défaut) : Le volume peut être monté en lecture-écriture par plusieurs nœuds.

    • ReadWriteOnce : Le volume peut être monté en lecture-écriture par un seul nœud.

    • ReadOnlyMany : Le volume peut être monté en lecture seule par plusieurs nœuds.

    storage

    Cette valeur sert à trouver un PV correspondant et ne limite pas la capacité de stockage réelle.

    La capacité maximale d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez General-purpose NAS et Extreme NAS.

    matchLabels

    Spécifie le libellé utilisé pour sélectionner un PV à lier.

  2. Créez la PVC.

    kubectl create -f pvc-nas.yaml
  3. Vérifiez l'état de la PVC.

    kubectl get pvc

    Résultat attendu :

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

    Le résultat indique que la PVC pvc-nas est liée au PV pv-nas et prête à être utilisée par une application.

Console

  1. Dans le volet de navigation de gauche de la page de gestion du cluster, sélectionnez Storage > PVCs.

  2. Sur la page Persistent Volume Claims, cliquez sur Create et configurez les paramètres comme décrit dans le tableau suivant.

    Paramètre

    Description

    PVC Type

    Sélectionnez NAS.

    Name

    Le nom de la PVC, qui doit être unique dans le namespace.

    Allocation Mode

    Sélectionnez Existing Persistent Volume.

    Cette rubrique utilise le PV créé à l'étape précédente. Si vous n'avez pas créé de PV, vous pouvez définir le paramètre Allocation Mode sur Create PV.

    Existing Volumes

    Sélectionnez le PV créé précédemment.

    Capacity

    Cette valeur sert à trouver un PV correspondant et ne limite pas la capacité de stockage réelle.

    La capacité maximale d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez General-purpose NAS et Extreme NAS.

    Access Mode

    Le mode d'accès. Valeurs possibles :

    • ReadWriteMany (par défaut) : Le volume peut être monté en lecture-écriture par plusieurs nœuds.

    • ReadWriteOnce : Le volume peut être monté en lecture-écriture par un seul nœud.

    • ReadOnlyMany : Le volume peut être monté en lecture seule par plusieurs nœuds.

Étape 3 : Créer l'application et monter le NAS

Une fois la PVC créée, vous pouvez monter le PV lié dans une application.

kubectl

  1. Créez un fichier nommé deploy.yaml avec le contenu suivant. Ce manifeste fait référence à la PVC que vous avez créée précédemment.

    Cette configuration vous permet de vérifier la fonctionnalité de stockage partagé du 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. Créez le Deployment.

    kubectl create -f deploy.yaml
  3. Vérifiez l'état des Pods.

    kubectl get pod -l app=nginx

    Résultat attendu :

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

Console

  1. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

  2. Sur la page Deployments, cliquez sur Create from Image et configurez les paramètres de l'application.

    Le tableau suivant décrit les principaux paramètres. Vous pouvez conserver les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez Créer une charge de travail sans état (Deployment).

    Catégorie

    Paramètre

    Description

    Basic Information

    Application Name

    Le nom du Deployment.

    Replicas:

    Le nombre de réplicas pour le Deployment.

    Cette configuration vous permet de vérifier la fonctionnalité de stockage partagé du NAS.

    Container

    Image Name

    L'adresse de l'image de l'application.

    Required Resources

    Les ressources vCPU et mémoire requises.

    Volume

    Cliquez sur Add PVC et configurez les paramètres.

    • Mount Source : Sélectionnez la PVC que vous avez créée précédemment.

    • Container Path : Le chemin dans le conteneur où monter le système de fichiers NAS, par exemple /data.

    Une fois le déploiement terminé, accédez à la page Deployments et cliquez sur le nom de l'application. Dans l'onglet Pods, vérifiez que les Pods sont à l'état Running.

Vérifier le stockage partagé et persistant

Après avoir déployé l'application, vérifiez que le volume fonctionne comme prévu.

Stockage partagé

Stockage persistant

Pour vérifier le stockage partagé, créez un fichier dans un Pod, puis vérifiez sa présence dans un autre.

  1. Récupérez les noms des Pods.

    kubectl get pod | grep nas-test

    Résultat attendu :

    nas-test-*****a   1/1     Running   0          40s
    nas-test-*****b   1/1     Running   0          40s
  2. Créez un fichier dans l'un des Pods.

    Par exemple, utilisez le Pod nommé nas-test-*a :

    kubectl exec nas-test-*****a -- touch /data/test.txt
  3. Vérifiez si le fichier existe dans l'autre Pod.

    Par exemple, utilisez le Pod nommé nas-test-*b :

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

    Résultat attendu :

    test.txt

    Le résultat affiche le fichier, ce qui confirme que les données sont partagées entre les Pods.

Pour vérifier le stockage persistant, redémarrez le Deployment et vérifiez si les données persistent dans les nouveaux Pods.

  1. Redémarrez le Deployment pour recréer les Pods de l'application.

    kubectl rollout restart deploy nas-test
  2. Vérifiez l'état des Pods et attendez que les nouveaux Pods démarrent et passent à l'état Running.

    kubectl get pod | grep nas-test

    Résultat attendu :

    nas-test-*****c   1/1     Running   0          67s
    nas-test-*****d   1/1     Running   0          49s
  3. Vérifiez si le fichier créé précédemment existe dans un nouveau Pod.

    Par exemple, utilisez le Pod nommé nas-test-*c :

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

    Résultat attendu :

    test.txt

    Le résultat affiche le fichier, ce qui confirme que les données persistent après le redémarrage des Pods.

Prêt pour la production

  • Sécurité et gestion des accès

    • Utilisez des groupes d'autorisations pour le contrôle d'accès : le NAS utilise des groupes d'autorisations pour gérer l'accès réseau. Appliquez le principe du moindre privilège : ajoutez uniquement les adresses IP privées des nœuds du cluster ou les blocs CIDR de leurs vSwitch au groupe d'autorisations. Évitez les autorisations trop larges, telles que 0.0.0.0/0.

  • Optimisation des performances et des coûts

    • Sélectionnez un type de NAS approprié : Consultez la section Sélection du système de fichiers pour choisir un type de NAS répondant aux exigences d'IOPS et de débit de votre application.

    • Optimisez les options de montage (mountOptions) : Ajustez les paramètres de montage NFS en fonction des caractéristiques de votre charge de travail. Par exemple, l'utilisation de versions de protocole telles que vers=4.0 ou vers=4.1 peut améliorer les performances et les capacités de verrouillage de fichiers dans certains scénarios. Pour les charges de travail avec des E/S de fichiers à grande échelle, testez différentes valeurs de rsize et wsize afin d'optimiser le débit en lecture et en écriture.

  • Exploitation et fiabilité

    • Configurez des contrôles de santé : Configurez une sonde de vivacité (liveness probe) pour les Pods de votre application afin de vérifier que le point de montage est sain. Si un point de montage devient indisponible, ACK redémarre automatiquement le Pod, ce qui déclenche un remontage du volume de stockage.

    • Mettez en place une surveillance et des alertes : Utilisez la surveillance du stockage des conteneurs pour configurer des alertes permettant de détecter rapidement les problèmes de volume de stockage ou les goulots d'étranglement de performance.

    • Utilisez la politique de récupération Retain : Pour les données de production, définissez la politique persistentVolumeReclaimPolicy du PV sur Retain. Cela empêche la perte accidentelle de données sur le système de fichiers NAS backend lorsque la PVC correspondante est supprimée.

Libérer les ressources

Pour éviter des frais imprévus, libérez les ressources dans l'ordre suivant lorsque vous n'avez plus besoin du volume NAS.

  1. Supprimer les charges de travail

    • Supprimez toutes les applications, telles que les Deployments et les StatefulSets, qui utilisent le volume NAS. Cette action démonte le volume des Pods et arrête tous les accès en lecture et en écriture.

    • Exemple de commande : kubectl delete deployment <your-deployment-name>

  2. Supprimer la PVC

    • Supprimez la PVC associée à l'application. Une fois la PVC supprimée, le sort du PV lié dépend de sa persistentVolumeReclaimPolicy.

    • Politique de récupération :

      • Retain (recommandé) : Après la suppression d'une PVC, le PV lié passe à l'état Released. L'objet PV et les données sur le système de fichiers NAS backend sont conservés. Vous devez les supprimer manuellement.

      • Delete : Après la suppression d'une PVC, l'objet PV correspondant est également supprimé. Notez les points suivants :

        • Si le PV pointe vers le répertoire racine du système de fichiers NAS, les données du système de fichiers sont conservées pour éviter une suppression accidentelle.

        • Si le volumeHandle d'un PV statique est un suffixe de son path (par exemple, si volumeHandle est app et path est /exports/app), la suppression de la PVC déclenche la suppression automatique du sous-répertoire sur le système de fichiers NAS backend. Utilisez cette fonctionnalité avec prudence.

    • Exemple de commande : kubectl delete pvc <your-pvc-name>

  3. Supprimer le PV

    • Vous pouvez supprimer un PV lorsque son état est Available ou Released. Cette action supprime uniquement la définition du PV du cluster Kubernetes, mais ne supprime pas les données du système de fichiers NAS backend.

    • Exemple de commande : kubectl delete pv <your-pv-name>

  4. Supprimer le système de fichiers NAS backend (facultatif)

    • Consultez la section Supprimer un système de fichiers. Cette action supprime définitivement toutes les données du système de fichiers NAS et ne peut pas être annulée. Avant de procéder, assurez-vous qu'aucune charge de travail ne dépend du système de fichiers.

Références