Grâce au provisionnement dynamique pour File Storage NAS, vous pouvez allouer automatiquement du stockage aux workloads à la demande, sans avoir à créer des PV au préalable. Cette fonctionnalité assure la persistance et le partage des données, permettant à plusieurs Pods de lire et d'écrire simultanément, tout en simplifiant la gestion du stockage pour des cas d'usage tels que les applications web ou la rétention des journaux.
Fonctionnement
Avec les volumes dynamiques, lorsqu'une application crée une PVC, le système crée automatiquement un nouveau volume de stockage ainsi qu'un PV correspondant à la demande. Ce provisionnement est déterminé par la StorageClass spécifiée dans la PVC. Ce mode offre une plus grande flexibilité et prend en charge l'extension automatique des volumes de stockage.
Mode de montage
Vous pouvez spécifier le mode de montage à l'aide du paramètre volumeAs dans une StorageClass. Ce paramètre définit la relation entre un PV et le système de fichiers NAS.
Mode de montage | Description | Scénario |
En mode subpath, chaque PV est mappé à un sous-répertoire unique au sein d'un système de fichiers NAS. Ce mode facilite l'isolation des données. |
| |
En mode sharepath, tous les PV sont mappés vers le même répertoire NAS défini dans la StorageClass. Par conséquent, toutes les PVC utilisant cette StorageClass accèdent au même répertoire partagé. | Plusieurs Pods répartis dans différents namespaces doivent monter le même sous-répertoire NAS. | |
filesystem (Non recommandé) | En mode système de fichiers, une nouvelle instance de système de fichiers NAS dédiée est créée dynamiquement pour chaque PV. | Ce mode convient aux applications nécessitant une isolation stricte en termes de performances et de sécurité. Il permet la création et la suppression dynamiques de systèmes de fichiers NAS indépendants et de points de montage pour chaque application, mais engendre des coûts plus élevés. |
Flux de travail général
Le flux de travail pour le montage d'un volume NAS provisionné dynamiquement est le suivant.
Créez une StorageClass. Dans celle-ci, définissez un modèle de stockage, déclarez un point de montage NAS et sélectionnez un mode de montage, tel que subpath ou sharepath, selon vos besoins.
Créez une PersistentVolumeClaim (PVC). Les applications utilisent les PVC pour demander des ressources de stockage. Le système crée automatiquement un PersistentVolume (PV) et le lie à la PVC en fonction de la StorageClass spécifiée dans cette dernière.
Montez la PVC sur un pod. La PVC fournit un répertoire persistant au 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 restent installés. Vous pouvez consulter l'état de l'installation sur la page . Nous vous recommandons de mettre à niveau les composants CSI vers la dernière version.
-
Pour utiliser subpath et sharepath, vous devez disposer d'un système de fichiers Apsara File Storage NAS répondant aux exigences suivantes. Sinon, créez un système de fichiers.
NAS impose des limites concernant la connectivité de montage, le nombre de systèmes de fichiers et les types de protocoles.
Protocol : seul le protocole NFS est pris en charge.
VPC : le système de fichiers Apsara File Storage NAS doit se trouver dans le même VPC que votre cluster. Apsara File Storage NAS prend en charge le montage inter-zones, mais pas le montage inter-VPC.
Mount Target : ajoutez un point de montage situé dans le même VPC que votre cluster et dont l'état est actif. Pour plus d'informations, consultez la rubrique Gérer les points de montage. Notez l'adresse du point de montage.
(Facultatif) Encryption Type : pour chiffrer les données d'un volume, configurez le type de chiffrement lors de la création du système de fichiers Apsara File Storage NAS.
Remarques d'utilisation
Ne supprimez pas les points de montage : afin d'éviter les erreurs d'E/S sur les nœuds, ne supprimez pas un point 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 limites des écritures concurrentes sur NAS, consultez les rubriques Écriture simultanée par plusieurs processus dans le même fichier journal et Latence de lecture du contenu de fichier mis à jour entre les instances ECS .
-
Performances de montage : si vous configurez le paramètre
securityContext.fsgroupdans votre application, kubelet exécute récursivementchmodouchownaprè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 rubrique FAQ sur les volumes NAS .
Méthode 1 : Monter un volume à l'aide d'un sous-chemin
Avec cette méthode, le provisionneur CSI crée automatiquement un sous-chemin dédié dans le système de fichiers NAS pour chaque PersistentVolumeClaim (PVC). Ce sous-chemin fait office de PersistentVolume (PV).
La version du plug-in CSI doit être la 1.31.4 ou une version ultérieure. Pour mettre à jour le plug-in, consultez la rubrique Mettre à niveau le plug-in CSI.
Vous avez créé un système de fichiers NAS et disposez de son point de montage.
1. Créer une StorageClass
Une StorageClass sert de modèle pour le provisionnement de volumes dynamiques et définit la source ainsi que le comportement des ressources de stockage.
kubectl
-
Créez un fichier nommé
alicloud-nas-subpath.yamlavec le contenu suivant :apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: # The name of the StorageClass, which must be unique within the cluster. name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: # Set to subpath. volumeAs: subpath # The format of the server field is <nas-server-address>:/<path>. server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s" archiveOnDelete: "true" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retain allowVolumeExpansion: trueParamètre
Description
mountOptionsLes 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 autre version avec une option telle que
vers=4,0. Pour plus d'informations sur les protocoles NFS pris en charge par les différents types de NAS, consultez la rubrique Protocoles NFS.parameters.volumeAsLe mode de provisionnement du volume. Définissez-le sur
subpath.parameters.serverLe point de montage NAS et le sous-chemin à monter, au format
<nas-server-address>:/<path>.<nas-server-address>: le point de montage du système de fichiers NAS. Pour plus d'informations, consultez la rubrique Gérer les points de montage.:/<path>: le sous-chemin NAS à monter. Si ce paramètre n'est pas défini ou si le sous-chemin spécifié n'existe pas, le répertoire racine est monté par défaut.NAS généraliste : le répertoire racine est
/.Extreme NAS : le répertoire racine est
/share. Lorsque vous montez un sous-chemin, lepathdoit commencer par/share, par exemple/share/data.
parameters.archiveOnDeleteIndique s'il faut supprimer les données sur le stockage backend lorsqu'un PVC est supprimé et que sa
reclaimPolicyest définie surDelete.Cette option agit comme une mesure de sécurité pour éviter la perte accidentelle de données sur le stockage NAS partagé.
true(par défaut) : le répertoire et ses fichiers ne sont pas supprimés. Ils sont archivés et renommés au formatarchived-{pvName}.{timestamp}.false: le répertoire correspondant et ses données sont définitivement supprimés.Cette opération supprime le sous-chemin NAS et ses fichiers, mais pas le système de fichiers NAS lui-même.
Pour supprimer un système de fichiers NAS, consultez la rubrique Supprimer un système de fichiers.
Dans les scénarios où les PV sont fréquemment créés et supprimés, définir ce paramètre sur
falsepeut bloquer la file d'attente des tâches du contrôleur CSI, empêchant ainsi la création de nouveaux PV. Pour plus d'informations, consultez la rubrique La file d'attente des tâches du contrôleur est pleine et de nouveaux PV ne peuvent pas être créés lors de l'utilisation d'un volume NAS dynamique.provisionerLe pilote. Définissez ce paramètre sur
nasplugin.csi.alibabacloud.comlorsque vous utilisez le plug-in CSI Alibaba Cloud NAS.reclaimPolicyLa politique de récupération du PV.
Delete(par défaut) : lorsque le PVC est supprimé, les données du stockage backend sont traitées en fonction du paramètrearchiveOnDelete.Retain: lorsque le PVC est supprimé, le PV et les données du système de fichiers NAS ne sont pas supprimés et doivent l'être manuellement. Cette politique est recommandée pour les scénarios nécessitant une sécurité élevée des données afin d'éviter toute perte accidentelle.
allowVolumeExpansionPris en charge uniquement par le NAS généraliste.
Permet l'expansion dynamique des PV créés par cette StorageClass en modifiant la capacité du PVC.
Cette StorageClass utilise la fonctionnalité de quota de répertoire NAS pour gérer la capacité des PV, permettant un contrôle précis de la taille. Vous pouvez étendre le volume en ligne en modifiant le champ
spec.resources.requests.storagedu PVC. Pour plus d'informations, consultez la rubrique Définir des quotas de répertoire pour les volumes NAS dynamiques.Les quotas de répertoire NAS s'appliquent de manière asynchrone. Si vous effectuez des écritures de données volumineuses à haute vitesse immédiatement après la création ou l'extension d'un PV, vous risquez de dépasser la capacité spécifiée car le quota n'est pas encore pleinement appliqué. Pour plus d'informations, consultez la rubrique Limites d'utilisation.
-
Créez la StorageClass.
kubectl create -f alicloud-nas-subpath.yaml
Console
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Cliquez sur Create, spécifiez un nom unique pour la StorageClass au sein du cluster, sélectionnez NAS comme PV Type, puis suivez les instructions à l'écran pour créer la StorageClass.
Les principaux paramètres sont décrits dans le tableau suivant.
Paramètre
Description
Select Mount Target
Le point de montage du système de fichiers NAS.
Volume Mode
Le mode de provisionnement du volume. Sélectionnez Subdirectory. Un sous-chemin est automatiquement créé sous le chemin de montage spécifié. Les données sont stockées à l'emplacement
<NAS mount target>:<mount path>/<pv-name>/.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é.
NAS généraliste : le répertoire racine est
/.Extreme NAS : le répertoire racine est
/share. Lorsque vous montez un sous-répertoire, lepathdoit commencer par/share, par exemple/share/data.
Reclaim Policy
La politique de récupération du PV.
Delete(par défaut) : lorsque le PVC est supprimé, les données du stockage backend sont traitées en fonction du paramètrearchiveOnDelete.Retain: lorsque le PVC est supprimé, le PV et les données du système de fichiers NAS ne sont pas supprimés et doivent l'être manuellement. Cette politique est recommandée pour les scénarios nécessitant une sécurité élevée des données afin d'éviter toute perte accidentelle.
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 autre version avec une option telle que
vers=4,0. Pour plus d'informations sur les protocoles NFS pris en charge par les différents types de NAS, consultez la rubrique Protocoles NFS.Une fois la StorageClass créée, vous pouvez la consulter dans la liste StorageClasses.
2. Créer un PVC
Un PersistentVolumeClaim (PVC) est une demande de stockage émise par une application qui déclenche une StorageClass associée pour provisionner et lier dynamiquement un PersistentVolume (PV) correspondant.
kubectl
-
Créez un fichier nommé
nas-pvc.yamlavec le contenu suivant :kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc spec: accessModes: - ReadWriteMany # Specify the StorageClass to use. storageClassName: alicloud-nas-subpath resources: requests: # Declare the required capacity of the storage volume. storage: 20GiParamètre
Description
accessModesLe 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.
storageClassNameLe nom de la StorageClass à utiliser.
storageLa capacité requise du volume de stockage. Par défaut, cette déclaration agit comme une demande de ressource et ne limite pas l'espace de stockage réel disponible pour le pod.
La limite de capacité d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez les rubriques NAS généraliste et Extreme NAS.
Toutefois, lorsque
allowVolumeExpansiondans la StorageClass est défini surtrue, cette valeur devient une limite stricte appliquée rigoureusement. Le plug-in CSI définit le quota de répertoire NAS en fonction de cette configuration pour limiter la capacité disponible du PV. -
Créez le PVC.
kubectl create -f nas-pvc.yaml -
Vérifiez le PV.
kubectl get pvLe résultat attendu est similaire à ce qui suit, indiquant que la StorageClass a automatiquement provisionné un PersistentVolume (PV) et l'a lié au PVC.
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-a7540d97-0f53-4e05-b7d9-557309****** 20Gi RWX Retain Bound default/nas-csi-pvc alicloud-nas-subpath <unset> 5m
Console
Dans le volet de navigation de gauche de la page de gestion du cluster, choisissez .
-
Sur la page Persistent Volume Claims, cliquez sur Create, configurez les paramètres du PVC, puis cliquez sur Create.
Paramètre
Description
PVC Type
Sélectionnez NAS.
Name
Le nom du PVC. Le nom doit être unique au sein du namespace.
Allocation Mode
Sélectionnez Use StorageClass.
Existing Storage Class
Cliquez sur Select Storage Class et choisissez la StorageClass que vous avez créée.
Total Capacity
La capacité requise du volume de stockage. Par défaut, cette déclaration agit comme une demande de ressource et ne limite pas l'espace de stockage réel disponible pour le pod.
La limite de capacité d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez les rubriques NAS généraliste et Extreme NAS.
Toutefois, lorsque
allowVolumeExpansiondans la StorageClass est défini surtrue, cette valeur devient une limite stricte appliquée rigoureusement. Le plug-in CSI définit le quota de répertoire NAS en fonction de cette configuration pour limiter la capacité disponible du PV.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.
3. Créer une application et monter le NAS
Une fois le PVC créé, vous pouvez monter le volume sur une application. Cette section explique comment créer deux Deployments qui référencent le même PVC, permettant à plusieurs pods de partager le même sous-chemin NAS.
kubectl
Créez deux Deployments qui référencent le même PVC pour leur permettre de partager le même sous-chemin du système de fichiers NAS.
Pour monter différents sous-chemins du même système de fichiers NAS sur différents pods, vous devez créer une StorageClass unique et un PVC correspondant pour chaque sous-chemin.
-
Créez deux fichiers nommés
nginx-1.yamletnginx-2.yamlavec le contenu suivant.Les configurations des deux applications sont presque identiques. Elles référencent toutes deux le même PVC.
-
-
Créez les deux Deployments.
kubectl create -f nginx-1.yaml -f nginx-2.yaml -
Vérifiez l'état des pods.
kubectl get pod -l app=nginxRésultat attendu :
NAME READY STATUS RESTARTS AGE nas-test-1-b75d5b6bc-***** 1/1 Running 0 51s nas-test-2-b75d5b6bc-***** 1/1 Running 0 44s -
Inspectez chaque pod pour vérifier qu'il utilise le bon PersistentVolumeClaim (PVC).
Remplacez
<podName>par le nom réel de chaque pod.kubectl describe pod <podName> | grep "ClaimName:"Dans le résultat attendu, les deux pods utilisent le même PVC, ce qui confirme qu'ils partagent le même sous-chemin du système de fichiers NAS.
Console
Répétez les étapes suivantes pour créer deux Deployments qui utilisent le même PVC, ce qui leur permet de partager le même sous-chemin du système de fichiers NAS.
Sur la page Clusters ACK, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Cliquez sur Create from Image et suivez les instructions à l'écran pour configurer et créer l'application.
Les principaux paramètres sont décrits ci-dessous. Vous pouvez conserver les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez la rubrique Créer une application sans état (Deployment).
Section
Paramètre
Description
Basic Information
Replicas:
Le nombre de réplicas pour le Deployment.
Container
Image
L'adresse de l'image utilisée pour déployer l'application.
Required Resources
Les ressources vCPU et mémoire requises par le conteneur.
Volumes
Cliquez sur Add PVC puis configurez les paramètres.
Mount Source : sélectionnez le PVC que vous avez créé.
Container Path : saisissez le chemin au sein du conteneur où le système de fichiers NAS sera monté.
Une fois le déploiement terminé, vous pouvez cliquer sur le nom de l'application sur la page Deployments et vérifier l'onglet Pods pour confirmer que les pods fonctionnent correctement (leur statut est Running).
Pour vérifier que le stockage est partagé et persistant, consultez la section Vérifier le stockage partagé et persistant. ## Méthode 2 : Montage en mode sharepath Dans ce mode, lorsque des PV sont créés pour des PVC utilisant cette StorageClass, le provisioner ne crée pas de nouveaux répertoires. Tous les PV utilisent le chemin défini dans la StorageClass, mappant ainsi chaque PV vers le même répertoire NAS.
1. Créer une StorageClass
Une StorageClass sert de modèle pour le provisionnement de volumes dynamiques et définit la source ainsi que le comportement des ressources de stockage.
kubectl
-
Créez un fichier nommé alicloud-nas-sharepath.yaml avec le contenu suivant.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-sharepath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: sharepath # The format of the server field is <nas-server-address>:/<path> server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainParamètre
Description
mountOptionsLes options de montage pour NAS, y compris la version du protocole NFS. Par défaut, les volumes sont montés avec NFSv3. Vous pouvez spécifier une autre version avec une option telle que
vers=4,0. Pour plus d'informations sur les protocoles NFS pris en charge par les différents types de NAS, consultez Protocoles NFS.parameters.volumeAsLe mode de provisionnement du volume. Définissez-le sur
sharepath.parameters.serverLa cible de montage NAS et le sous-chemin à monter, au format
<nas-server-address>:/<path>.<nas-server-address>: la cible de montage du système de fichiers NAS. Pour plus d'informations, consultez Gérer les cibles de montage.:/<path>: le sous-chemin NAS à monter. Si ce paramètre n'est pas défini ou si le sous-chemin spécifié n'existe pas, le répertoire racine est monté par défaut.NAS généraliste : le répertoire racine est
/.Extreme NAS : le répertoire racine est
/share. Lorsque vous montez un sous-chemin, lepathdoit commencer par/share, par exemple/share/data.
provisionerLe pilote. Définissez ce paramètre sur
nasplugin.csi.alibabacloud.comlorsque vous utilisez le plug-in Alibaba Cloud NAS CSI.reclaimPolicyLa politique de récupération pour le PV. Pour le mode
sharepath, cette valeur doit être Retain. -
Créez la StorageClass.
kubectl create -f alicloud-nas-sharepath.yaml
Console
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Cliquez sur Create, spécifiez un nom unique pour la StorageClass et sélectionnez NAS comme PV Type.
Paramètre
Description
Select Mount Target
La cible de montage du système de fichiers NAS.
Volume Mode
Le mode de provisionnement du volume. Dans cet exemple, sélectionnez Shared Directory, ce qui active le mode sharepath.
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é.
NAS généraliste : le répertoire racine est
/.Extreme NAS : le répertoire racine est
/share. Lorsque vous montez un sous-répertoire, lepathdoit commencer par/share, par exemple/share/data.
Reclaim policy
Pour le mode
sharepath, cette valeur doit être Retain.Mount options
Les options de montage pour NAS, y compris la version du protocole NFS. Par défaut, les volumes sont montés avec NFSv3. Vous pouvez spécifier une autre version avec une option telle que
vers=4,0. Pour plus d'informations sur les protocoles NFS pris en charge par les différents types de NAS, consultez Protocoles NFS.
2. Créer un PVC
Une PersistentVolumeClaim (PVC) est une demande de stockage émise par une application qui déclenche une StorageClass associée pour provisionner et lier dynamiquement un PersistentVolume (PV) correspondant.
Pour permettre le partage de données entre les namespaces, vous allez créer un PVC portant le même nom dans deux namespaces différents. Bien que les PVC partagent un nom, il s'agit de ressources distinctes car ils se trouvent dans des namespaces différents. La StorageClass provisionne un PV séparé pour chaque PVC, et les deux PV pointent vers le même répertoire partagé sur le système de fichiers NAS.
kubectl
-
Créez deux namespaces,
ns1etns2.kubectl create ns ns1 kubectl create ns ns2 -
Créez un fichier nommé pvc.yaml avec le contenu suivant afin de créer un PVC portant le même nom dans les namespaces
ns1etns2.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns1 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20Gi --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns2 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20GiParamètre
Description
accessModesLe 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.
storageClassNameLe nom de la StorageClass à utiliser.
storageLa capacité requise du volume de stockage. Par défaut, cette déclaration agit comme une demande de ressource et ne limite pas l'espace de stockage réel disponible pour le pod.
La limite de capacité d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez NAS généraliste et Extreme NAS.
Toutefois, lorsque
allowVolumeExpansiondans la StorageClass est défini surtrue, cette valeur devient une limite stricte imposée. Le plug-in CSI définit le quota du répertoire NAS en fonction de cette configuration pour limiter la capacité disponible du PV. -
Créez les PVC.
kubectl create -f pvc.yaml -
Vérifiez l'état des PV pour confirmer que des PV ont été automatiquement créés et liés aux PVC.
kubectl get pvLe résultat attendu est similaire à ce qui suit. L'état des deux PV est
Boundet la colonneCLAIMindique que chaque PV est lié à un PVC dans un namespace différent (ns1/nas-csi-pvcetns2/nas-csi-pvc).NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-0b448885-6226-4d22-8a5b-d0768c****** 20Gi RWX Retain Bound ns1/nas-csi-pvc alicloud-nas-sharepath <unset> 74s nas-bcd21c93-8219-4a11-986b-fd934a****** 20Gi RWX Retain Bound ns2/nas-csi-pvc alicloud-nas-sharepath <unset> 74s
Console
-
Créez des namespaces.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Namespaces and Quotas.
Cliquez sur Create et suivez les instructions à l'écran pour créer les namespaces
ns1etns2.
Dans le volet de navigation de gauche de la page de gestion du cluster, choisissez .
-
Dans le namespace
ns1, créez une revendication de stockage.Sur la page Persistent Volume Claims, sélectionnez
ns1dans la liste déroulante Namespace et suivez les instructions à l'écran pour créer le PVC.Paramètre
Description
PVC Type
Sélectionnez NAS.
Name
Le nom du PVC. Le nom doit être unique au sein du namespace.
Allocation Mode
Sélectionnez Use StorageClass.
Existing Storage Class
Cliquez sur Select Storage Class et choisissez la StorageClass que vous avez créée.
Capacity
La capacité requise du volume de stockage. Par défaut, cette déclaration agit comme une demande de ressource et ne limite pas l'espace de stockage réel disponible pour le pod.
La limite de capacité d'un système de fichiers NAS est déterminée par ses spécifications. Pour plus d'informations, consultez NAS généraliste et Extreme NAS.
Toutefois, lorsque
allowVolumeExpansiondans la StorageClass est défini surtrue, cette valeur devient une limite stricte imposée. Le plug-in CSI définit le quota du répertoire NAS en fonction de cette configuration pour limiter la capacité disponible du PV.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.
-
Suivez l'étape précédente pour créer un autre PVC dans le namespace
ns2.Après la création, revenez à la page Persistent Volume Claims. Dans les namespaces
ns1etns2, confirmez que les deux PVC sont liés à leurs PV créés automatiquement.
3. Créer une application et monter le NAS
Une fois les PVC créés, vous pouvez monter les PV qui leur sont liés sur vos applications. Dans cette section, vous allez créer une application dans chacun des deux namespaces et monter le PVC correspondant. Cette configuration permet aux deux applications de partager le sous-répertoire NAS défini dans la StorageClass.
kubectl
-
Créez deux fichiers nommés
nginx-ns1.yamletnginx-ns2.yamlavec le contenu suivant.Les configurations des deux applications sont presque identiques. Chacune se lie au PVC de son namespace respectif.
-
-
Créez les deux Deployments.
kubectl create -f nginx-ns1.yaml -f nginx-ns2.yaml -
Vérifiez l'état des Pods.
kubectl get pod -A -l app=nginxRésultat attendu :
NAMESPACE NAME READY STATUS RESTARTS AGE ns1 nas-test-b75d5b6bc-***** 1/1 Running 0 2m19s ns2 nas-test-b75d5b6bc-***** 1/1 Running 0 2m11s -
Vérifiez la configuration détaillée d'un Pod pour confirmer le montage du PVC.
Remplacez
<namespace-name>et<pod-name>par le namespace et le nom du Pod réels.kubectl describe pod -n <namespace-name> <pod-name> | grep "ClaimName:"Dans le résultat attendu, les deux Pods montent respectivement
ns1/nas-csi-pvcetns2/nas-csi-pvc.
Console
Sur la page ACK Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Dans le namespace
ns1, créez un Deployment et montez le PVC correspondant.Sélectionnez Namespace dans la liste déroulante Namespace et cliquez sur Create from Image.
-
Suivez les instructions à l'écran pour créer l'application.
Les paramètres clés sont décrits ci-dessous. Laissez les autres paramètres avec leurs valeurs par défaut. Pour plus d'informations, consultez Créer une charge de travail sans état (Deployment).
Section
Paramètre
Description
Basic Information
Replicas:
Le nombre de réplicas du Deployment.
Container
Image
L'adresse de l'image utilisée pour déployer l'application.
Required Resources
Les ressources vCPU et mémoire requises.
Volumes
Cliquez sur Add PVC et configurez les paramètres.
Mount Source : sélectionnez le PVC que vous avez créé.
Container Path : saisissez le chemin au sein du conteneur où le système de fichiers NAS sera monté, par exemple /data.
-
Suivez l'étape précédente pour créer un autre Deployment dans le namespace
ns2et monter le PVC correspondant.Revenez à la page Deployments. Dans les namespaces
ns1etns2, vérifiez l'état de chaque Deployment pour confirmer que les Pods sont en cours d'exécution et ont monté les bons PVC.
Pour vérifier les résultats, consultez Vérifier le stockage partagé et persistant. ## Méthode 3 : Monter un volume en mode système de fichiers Le mode système de fichiers vous permet de créer et de gérer dynamiquement un système de fichiers NAS dédié ainsi qu'une cible de montage pour une application. Contrairement au mode sharepath, chaque PV créé en mode système de fichiers correspond à une instance distincte de système de fichiers NAS.
Chaque PV de type filesystem correspond à un système de fichiers NAS dédié et à une seule cible de montage.
-
Par défaut, lorsque vous supprimez un PV de type
filesystem, le système de fichiers NAS et la cible de montage correspondants sont conservés. Pour supprimer automatiquement le système de fichiers NAS et la cible de montage lors de la suppression du PV, ajoutez les paramètres suivants à la StorageClass :reclaimPolicy: Deleteparameters.deleteVolume: "true"
-
Lorsque vous utilisez un ACK dedicated cluster, accordez les autorisations nécessaires au composant csi-provisioner.
1. Créer une StorageClass
2. Créer un PVC
3. Créer l'application et monter le NAS
Vérifier le stockage partagé et persistant
Après avoir déployé l'application avec succès, vous pouvez vérifier que le volume de stockage fonctionne comme prévu. Cette section utilise le mode subpath pour créer nas-test-1 et nas-test-2 à titre d'exemple de vérification.
Stockage partagé | Stockage persistant |
Pour vérifier le stockage partagé, créez un fichier dans un Pod, puis consultez-le dans un autre.
| Pour vérifier le stockage persistant, redémarrez le Deployment et vérifiez si les données existent toujours dans le système de fichiers du nouveau Pod.
|
Pour les environnements de production
-
Sécurité et protection des données
Utilisez la politique de récupération Retain : définissez la propriété
reclaimPolicyde votre StorageClass surRetain. Cela permet d'éviter toute perte de données en cas de suppression accidentelle d'un PVC.Utilisez des groupes d'autorisation pour le contrôle d'accès : NAS utilise des groupes d'autorisation 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 leurs blocs CIDR vSwitch au groupe d'autorisation. É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é : reportez-vous à la rubrique 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 quevers=4.0ouvers=4.1peut améliorer les performances et les capacités de verrouillage de fichiers dans certains scénarios. Pour les charges de travail impliquant des E/S de fichiers à grande échelle, testez différentes valeurs dersizeet dewsizeafin d'optimiser le débit en lecture et en écriture.
-
Exploitation et fiabilité
Configurez des contrôles d'intégrité : 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 ne répond plus, ACK redémarre automatiquement le pod, ce qui déclenche un remontage du volume de stockage.
Configurez la surveillance et les 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 liés aux performances.
Libération des ressources
Afin d'éviter des frais imprévus, libérez les ressources associées dans l'ordre suivant lorsque le volume de stockage NAS n'est plus nécessaire.
-
Supprimez la charge de travail
Action : Supprimez toutes les charges de travail (telles que les Deployments et les StatefulSets) qui utilisent le volume de stockage NAS. Cela empêche les Pods d'application de monter, de lire ou d'écrire sur le volume.
Exemple de commande :
kubectl delete deployment <your-deployment-name>
-
Supprimez le PVC
-
Action : Supprimez le PVC associé à la charge de travail. Après la suppression du PVC, le comportement du PV lié et du backend NAS dépend de la
reclaimPolicydéfinie dans la StorageClass correspondante.-
Mode Subpath
Si la
reclaimPolicyest définie surRetain: Après la suppression du PVC, son PV lié passe à l'étatReleased. L'objet PV ainsi que le sous-répertoire correspondant et les données sur le backend NAS sont conservés et doivent être supprimés manuellement.-
Si la
reclaimPolicyest définie surDelete: Après la suppression du PVC, son PV lié est automatiquement supprimé. La gestion du sous-répertoire NAS backend dépend du paramètrearchiveOnDelete:Si
archiveOnDeleteest défini sur"true": Les données backend ne sont pas supprimées, mais sont renommées et archivées sous la formearchived-{pvName}.{timestamp}.Si
archiveOnDeleteest défini sur"false": Le sous-répertoire correspondant au PV sur le backend NAS et toutes ses données sont définitivement supprimés. Agissez avec prudence.
Dans un cluster ACK Serverless, en raison des restrictions d'autorisations, même si
reclaimPolicy: Deleteest configuré, le répertoire NAS backend et les données ne sont ni supprimés ni archivés. Seul l'objet PV est supprimé. -
Mode Sharepath
Ce mode prend uniquement en charge une
reclaimPolicydéfinie surRetain. Après la suppression du PVC, son PV lié passe à l'étatReleased. L'objet PV, le répertoire partagé backend et toutes les données sont conservés. -
Mode Filesystem
Si la
reclaimPolicyest définie surRetain: Après la suppression du PVC, son PV lié passe à l'étatReleased. L'objet PV, le système de fichiers NAS backend créé dynamiquement et le point de montage sont tous conservés.-
Si la
reclaimPolicyest définie surDelete: Après la suppression du PVC, son PV lié est automatiquement supprimé. La gestion du système de fichiers NAS backend dépend du paramètredeleteVolume:Si
deleteVolumeest défini sur"false": Le système de fichiers NAS backend et le point de montage sont conservés et doivent être supprimés manuellement.Si
deleteVolumeest défini sur"true": Le système de fichiers NAS backend et le point de montage sont automatiquement supprimés. Agissez avec prudence.
-
Exemple de commande :
kubectl delete pvc <your-pvc-name>
-
-
Supprimez le PV
Action : Vous pouvez supprimer un PV lorsqu'il se trouve dans l'état
AvailableouReleased. Cette action supprime uniquement la définition du PV du cluster Kubernetes, mais ne supprime aucune donnée du système de fichiers NAS backend.Exemple de commande :
kubectl delete pv <your-pv-name>
-
Supprimez le système de fichiers NAS backend (facultatif)
Modes
subpathetsharepath: Reportez-vous à la rubrique Supprimer un système de fichiers. Cette opération supprime définitivement toutes les données sur le NAS et celles-ci ne peuvent pas être récupérées. Agissez avec prudence. Avant d'effectuer cette opération, vous devez confirmer que le NAS n'a aucune dépendance métier.Mode
filesystem: Si le système de fichiers NAS backend n'est pas automatiquement supprimé lors de la suppression d'un PVC, reportez-vous à la rubrique Supprimer un système de fichiers pour localiser et supprimer manuellement le système de fichiers correspondant.
Documents connexes
-
Si vous rencontrez des problèmes lors du montage ou de l'utilisation de volumes de stockage NAS, reportez-vous aux documents suivants pour le dépannage.
Vous pouvez utiliser CNFS pour gérer indépendamment les systèmes de fichiers NAS afin d'améliorer les performances et le contrôle de la QoS. Pour des instructions détaillées, consultez la rubrique Gérer les systèmes de fichiers NAS à l'aide de CNFS.
Les volumes de stockage NAS montés à l'aide de subpath prennent en charge les quotas de répertoire. Pour plus d'informations, consultez la rubrique Définir des quotas de répertoire pour les volumes de stockage NAS dynamiques.