Pour les applications nécessitant des données partagées et des performances d'E/S élevées, utilisez Apsara File Storage NAS pour vos volumes persistants (PV). Cette rubrique explique comment monter un volume NAS sur une application, puis vérifier son accès partagé et la persistance des données.
Contexte
NAS est un système de fichiers distribué offrant un accès partagé, une extensibilité élastique, une haute fiabilité et des performances élevées. Il convient aux applications exigeant le partage de données et des performances d'E/S importantes. Pour plus d'informations, consultez Présentation du stockage.
Pour plus de détails sur les spécifications de stockage, les performances, la facturation ainsi que les régions et zones prises en charge, reportez-vous à NAS universel et NAS Extreme.
Le NAS universel et le NAS Extreme imposent des limites différentes concernant la connectivité de montage, le nombre de systèmes de fichiers et les types de protocoles. Pour en savoir plus, consultez Limites.
Vous pouvez monter et utiliser des volumes NAS selon l'une des méthodes suivantes :
Si vous disposez déjà d'un système de fichiers NAS, montez-le et partagez-le directement. Pour plus d'informations, consultez Utiliser un système de fichiers NAS existant comme volume.
En l'absence de système de fichiers NAS, créez-en un automatiquement et montez-le via une StorageClass. Pour plus d'informations, consultez Créer un nouveau système de fichiers NAS comme volume.
Prérequis
Le composant managed-csiprovisioner doit être installé dans le cluster ACS.
Accédez à la page de gestion du cluster ACS dans la console ACS. Dans le volet de navigation de gauche, choisissez . Sous l'onglet Storage, vérifiez si managed-csiprovisioner est installé.
Limites
Le protocole SMB n'est pas pris en charge pour le montage des systèmes de fichiers NAS.
-
Les systèmes de fichiers NAS ne peuvent être montés que sur des pods situés dans le même VPC.
RemarqueLe montage des systèmes de fichiers NAS entre plusieurs zones d'un même VPC est possible.
Seul le protocole NFSv3 est autorisé pour le montage des systèmes de fichiers NAS.
Points d'attention
NAS fournit un stockage partagé. Un même volume NAS peut donc être monté sur plusieurs pods. Si plusieurs pods modifient simultanément les mêmes données, votre application doit gérer la synchronisation.
-
Lors du montage d'un volume NAS, ne configurez pas
securityContext.fsgroupdans le fichier YAML de l'application, sous peine d'échec du montage.RemarqueIl est impossible de modifier les permissions, le propriétaire ou le groupe du répertoire racine
/d'un système de fichiers NAS. Une fois un volume NAS monté, ne supprimez pas sa cible de montage, car cela risque de bloquer le système d'exploitation.
Utiliser un système de fichiers NAS existant
Étape 1 : Obtenir les informations du système de fichiers NAS
-
Récupérez l'ID du VPC et l'ID du vSwitch utilisés par les pods ACS.
RemarqueCes informations sont disponibles dans la console. Vous pouvez également exécuter la commande
kubectl get cm -n kube-system acs-profile -o yamlpour afficher le fichier YAML de la ConfigMap acs-profile. L'ID du VPC et l'ID du vSwitch figurent respectivement dans les champsvpcIdetvSwitchIds.Connectez-vous à la console ACS.
Sur la page , cliquez sur le nom du cluster pour accéder à sa page de gestion.
Dans le volet de navigation de gauche, choisissez .
En haut de la page , remplacez le namespace par kube-system. Recherchez ensuite acs-profile et cliquez sur .
Récupérez l'ID du VPC et l'ID du vSwitch depuis les champs
vpcIdetvSwitchIds.
-
Vérifiez que le système de fichiers NAS existant répond aux exigences et obtenez l'adresse de la cible de montage.
Connectez-vous à la console NAS. Dans le volet de navigation de gauche, cliquez sur File System List.
-
Localisez le système de fichiers NAS cible et assurez-vous que sa région, sa zone et son type de protocole sont conformes aux exigences.
Le montage inter-VPC n'étant pas pris en charge, NAS ne fonctionne pas entre différentes régions. Le système de fichiers NAS doit impérativement se trouver dans la même région que votre cluster ACS.
Au sein d'un même VPC, le montage entre zones est possible. Toutefois, pour des performances optimales, placez de préférence le système de fichiers NAS et les pods du cluster ACS dans la même zone.
Confirmez que le type de protocole du système de fichiers NAS est NFS. Les systèmes utilisant le protocole SMB ne peuvent pas être montés.
-
Validez la conformité de la cible de montage et notez son adresse.
Cliquez sur l'ID du système de fichiers.
Sur la page de détails du système de fichiers, cliquez sur Mount Targets dans le volet de navigation de gauche.
-
Dans la section Mount Target, vérifiez qu'une cible de montage existante satisfait aux exigences, puis récupérez son adresse.
RemarqueUne cible de montage est créée automatiquement lors de la création d'un système de fichiers NAS universel. Pour un système NAS Extreme, vous devez la créer manuellement.
Si aucune cible de montage existante ne convient, créez-en une nouvelle. Pour plus d'informations, consultez Gérer les cibles de montage.
Le VPC de la cible de montage doit correspondre à celui du cluster ACS, faute de quoi le montage échouera.
Pour optimiser les performances, il est recommandé d'utiliser le même vSwitch pour la cible de montage et les pods du cluster ACS.
La cible de montage doit présenter le statut Available.
Étape 2 : Créer une StorageClass
-
Adaptez le contenu YAML ci-dessous selon la description des paramètres, puis enregistrez-le sous le nom nas-sc.yaml.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath server: "*******-mw***.cn-shanghai.nas.aliyuncs.com:/csi" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainDescription des paramètres :
Paramètre
Description
volumeAsMode de provisionnement. Définissez cette valeur sur
subpathpour créer chaque volume persistant (PV) sous forme de sous-répertoire. Chaque PV correspond alors à un sous-répertoire du système de fichiers NAS.serverAdresse de la cible de montage du système de fichiers NAS, au format
mount-target-address:path, oùpathdésigne le sous-répertoire NAS à monter.-
En l'absence de chemin spécifié, le répertoire racine est monté par défaut.
-
Si le répertoire n'existe pas encore dans le système de fichiers NAS, il est créé automatiquement avant le montage.
Le répertoire racine est
/pour les systèmes NAS universels et/sharepour les systèmes NAS Extreme.provisionerType de provisionneur. Cette valeur doit être définie sur
nasplugin.csi.alibabacloud.comafin d'utiliser le plug-in CSI NAS d'Alibaba Cloud.reclaimPolicyPolitique de récupération du PV. Seule la valeur
Retainest prise en charge. Elle garantit la conservation du système de fichiers NAS et de la cible de montage associés lors de la suppression du PV. -
Étape 3 : Créer une PVC
kubectl
-
Enregistrez le contenu suivant dans un fichier nommé nas-pvc.yaml.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc annotations: spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi storageClassName: alicloud-nas-subpathDescription des paramètres :
Paramètre
Description
accessModesMode d'accès.
storageCapacité du volume persistant à créer.
storageClassNameNom de la StorageClass à utiliser.
-
Créez la PVC.
kubectl create -f nas-pvc.yaml -
Consultez le PV.
kubectl get pvLa sortie indique que le plug-in CSI a automatiquement créé un PV basé sur la StorageClass et l'a lié à la PVC.
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nas-ea7a0b6a-bec2-4e56-b767-47222d3a**** 20Gi RWX Retain Bound default/nas-pvc alicloud-nas-subpath 1m58s
Console
Connectez-vous à la console ACS.
Sur la page , cliquez sur le nom du cluster pour accéder à sa page de gestion.
Dans le volet de navigation de gauche de la page de gestion du cluster, choisissez .
Sur la page Persistent Volume Claims, cliquez sur Create.
-
Dans la boîte de dialogue, configurez les paramètres, puis cliquez sur .
Paramètre
Description
Exemple
Sélectionnez NAS.
NAS
Nom de la PVC. Saisissez un nom personnalisé. Respectez les exigences de formatage indiquées à l'écran.
nas-pvc
Sélectionnez .
Dynamic Provisioning Using StorageClass
Capacité du volume persistant à créer.
20Gi
ReadWriteMany et ReadWriteOnce sont pris en charge.
ReadWriteMany
Une fois créée, la PVC apparaît sur la page . Elle est liée à un PV créé automatiquement, qui constitue un volume persistant NAS. Consultez les détails de ce PV sur la page .
Étape 4 : Créer une application et monter le volume
kubectl
-
Créez un fichier nommé nas-test.yaml contenant le contenu suivant.
Ce fichier YAML définit un Deployment composé de deux pods. Chacun utilise la PVC nommée
nas-pvcet monte le volume sur le chemin/data.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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: /data volumes: - name: pvc-nas persistentVolumeClaim: claimName: nas-pvc -
Créez le Deployment et montez le volume persistant NAS.
kubectl create -f nas-test.yaml -
Vérifiez l'état de déploiement des pods du Deployment.
kubectl get pod | grep nas-testLa sortie suivante confirme la création de deux pods.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Vérifiez le chemin de montage.
kubectl exec nas-test-****-***a -- df -h /dataSortie attendue :
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 10P 0 10P 0% /dataCette sortie confirme le montage réussi du système de fichiers.
Console
Dans le volet de navigation de gauche de la page de gestion du cluster, choisissez .
Sur la page , cliquez sur .
-
Configurez les paramètres du Deployment, puis cliquez sur .
Le tableau ci-dessous décrit les paramètres principaux. Conservez les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez Créer un Deployment sans état.
Page de configuration
Paramètre
Description
Exemple
Nom du Deployment. Saisissez un nom personnalisé. Respectez les exigences de formatage indiquées à l'écran.
nas-test
Nombre de réplicas pour le Deployment.
2
Saisissez l'adresse de l'image servant au déploiement de l'application.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Définissez les ressources vCPU et mémoire requises.
0,25 vCPU, 0,5 GiB
Cliquez sur , puis configurez les paramètres.
-
: sélectionnez la PVC précédemment créée.
-
: saisissez le chemin dans le conteneur où monter le système de fichiers NAS.
-
Mount Source : nas-pvc
-
Container Path : /data
-
-
Vérifiez l'état du déploiement de l'application.
Sur la page , cliquez sur le nom de l'application.
Sous l'onglet , assurez-vous que les pods sont dans l'état Running.
Créer un système de fichiers NAS comme volume
Étape 1 : Créer une StorageClass
-
Modifiez le contenu YAML ci-dessous en fonction de la description des paramètres, puis enregistrez le fichier sous le nom nas-sc.yaml.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-fs mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: filesystem fileSystemType: standard storageType: Performance regionId: cn-shanghai zoneId: cn-shanghai-e vpcId: "vpc-2ze2fxn6popm8c2mzm****" vSwitchId: "vsw-2zwdg25a2b4y5juy****" accessGroupName: DEFAULT_VPC_GROUP_NAME deleteVolume: "false" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainLe tableau suivant décrit les paramètres.
ImportantLa prise en charge des types de systèmes de fichiers NAS et des classes de stockage varie selon les régions et les zones de disponibilité. Assurez-vous que la région, la zone de disponibilité, le VPC et le vSwitch choisis pour le système de fichiers NAS et sa cible de montage sont compatibles avec votre cluster ACS ainsi qu'avec le VPC et le vSwitch utilisés par vos pods. Pour plus d'informations, consultez les rubriques suivantes :
Pour connaître les classes de stockage, les performances, la facturation ainsi que les régions et zones de disponibilité prises en charge pour les différents types de systèmes de fichiers NAS, reportez-vous à NAS universel et NAS Extreme.
Le NAS universel et le NAS Extreme imposent des limites différentes concernant la connectivité de montage, le nombre de systèmes de fichiers et les types de protocoles. Pour en savoir plus, consultez Limites.
Exécutez la commande
kubectl get cm -n kube-system acs-profile -o yamlpour afficher le fichier YAMLacs-profileet obtenir les ID du VPC et des vSwitch utilisés par les pods depuis les champsvpcIdetvSwitchIds.
Paramètre
Description
volumeAsMéthode de provisionnement du volume. Définissez cette valeur sur
filesystempour créer automatiquement un nouveau système de fichiers NAS pour chaque volume.fileSystemTypeType du système de fichiers NAS.
-
standard(par défaut) : NAS universel. Pour plus d'informations, consultez NAS universel. -
extreme: NAS Extreme. Pour plus d'informations, consultez NAS Extreme.
storageTypeClasse de stockage du système de fichiers NAS.
-
Pour le NAS universel, les valeurs valides sont :
-
Performance(par défaut) : Performance -
Capacity: Capacité
-
-
Pour le NAS Extreme, les valeurs valides sont :
-
standard(par défaut) : Standard -
advanced: Avancé
-
regionIdRégion où se trouve le système de fichiers NAS. Elle doit correspondre à celle de votre cluster ACS.
zoneIdZone de disponibilité où se trouve le système de fichiers NAS. Choisissez une zone de disponibilité en fonction du vSwitch utilisé par les pods de votre cluster ACS.
RemarqueAu sein d'un même VPC, le montage d'un système de fichiers NAS entre plusieurs zones de disponibilité est possible. Pour des performances optimales, privilégiez toutefois la même zone de disponibilité.
vpcId,vSwitchIdIdentifiants du VPC et du vSwitch pour la cible de montage du système de fichiers NAS. Ils doivent correspondre à ceux utilisés par les pods de votre cluster ACS.
accessGroupNameGroupe de permissions de la cible de montage pour le système de fichiers NAS. La valeur par défaut est
DEFAULT_VPC_GROUP_NAME.provisionerProvisionneur. Cette valeur doit être définie sur
nasplugin.csi.alibabacloud.com, ce qui spécifie l'utilisation du plug-in CSI NAS d'Alibaba Cloud.reclaimPolicyPolitique de récupération du PV. La seule politique prise en charge est
Retain, ce qui signifie que le système de fichiers NAS et la cible de montage correspondants sont conservés lors de la suppression du PV. -
Créez la StorageClass.
kubectl create -f nas-sc.yaml -
Vérifiez la StorageClass.
kubectl get scSortie attendue :
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE alicloud-nas-fs nasplugin.csi.alibabacloud.com Retain Immediate false 13m ......
Étape 2 : Créer une PersistentVolumeClaim
-
Enregistrez le contenu suivant dans un fichier nommé nas-pvc-fs.yaml.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-fs resources: requests: storage: 20GiLe tableau suivant décrit les paramètres.
Paramètre
Description
accessModesMode d'accès.
storageCapacité du volume NAS à créer.
RemarqueLa capacité minimale du NAS Extreme est de 100 GiB. Si le type de système de fichiers NAS défini dans la StorageClass est NAS Extreme, la valeur de
storagedoit être supérieure ou égale à 100 GiB. Sinon, le PersistentVolume correspondant ne pourra pas être créé.storageClassNameNom de la StorageClass à utiliser.
-
Créez la PersistentVolumeClaim.
kubectl create -f nas-pvc-fs.yaml -
Vérifiez la PersistentVolumeClaim.
kubectl get pvcLa sortie indique que la PersistentVolumeClaim est liée au PersistentVolume créé automatiquement. Vous pouvez également consulter le système de fichiers NAS correspondant dans la console NAS.
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc-fs Bound nas-04a730ba-010d-4fb1-9043-476d8c38**** 20Gi RWX alicloud-nas-fs <unset> 14s
Étape 3 : Créer une application et monter le volume NAS
-
Créez un fichier nommé nas-test-fs.yaml avec le contenu suivant.
Ce fichier YAML crée un Deployment composé de deux pods. Chacun demande du stockage via la PersistentVolumeClaim nommée
nas-pvc-fset monte le volume sur le chemin/data.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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: /data volumes: - name: pvc-nas persistentVolumeClaim: claimName: nas-pvc-fs -
Créez le Deployment et montez le volume NAS.
kubectl create -f nas-test-fs.yaml -
Vérifiez l'état de déploiement des pods du Deployment.
kubectl get pod | grep nas-testLa sortie suivante confirme la création de deux pods.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Vérifiez le chemin de montage.
kubectl exec nas-test-****-***a -- df -h /dataSortie attendue :
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 10P 0 10P 0% /dataCette sortie confirme le montage réussi du système de fichiers.
Monter un système de fichiers NAS existant via un volume NFS
Étape 1 : Obtenir les informations du système de fichiers NAS
Pour plus d'informations sur l'obtention de l'adresse de la cible de montage NAS, consultez Obtenir les informations du système de fichiers NAS.
Étape 2 : Créer une application et monter le NAS
-
Créez un fichier nommé
nas-test-nfs.yamlavec le contenu suivant.Ce fichier YAML définit un Deployment composé de deux pods. Chaque pod monte le système de fichiers NAS sur le chemin
/dataà l'aide d'un volume nomménfs-nas.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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: nfs-nas mountPath: /data volumes: - name: nfs-nas nfs: server: file-system-id.region.nas.aliyuncs.com # The mount target address of the Alibaba Cloud NAS file system. Replace this with your actual value. Example: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com. path: / # The directory path in the NAS file system. The directory must be an existing directory or the root directory. The root directory of a General-purpose NAS file system is "/", and the root directory of an Extreme NAS file system is "/share". -
Créez le Deployment et montez le volume NAS.
kubectl create -f nas-test-nfs.yaml -
Vérifiez l'état de déploiement des pods du Deployment.
kubectl get pod | grep nas-testLa sortie suivante confirme la création de deux pods.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Vérifiez le chemin de montage.
kubectl exec nas-test-****-***a -- df -h /dataSortie attendue :
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 10P 0 10P 0% /dataCette sortie confirme le montage réussi du système de fichiers.
Vérifier le stockage partagé et persistant
Le Deployment créé dans l'exemple précédent contient deux pods qui montent le même système de fichiers NAS. Vérifiez cette configuration comme suit :
Créez un fichier dans un pod et affichez-le dans l'autre pour valider le stockage partagé.
Redémarrez le Deployment et vérifiez si les données persistent dans un nouveau pod afin de confirmer la persistance du stockage.
-
Consultez les informations des pods.
kubectl get pod | grep nas-testExemple de sortie :
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Validez le stockage partagé.
-
Créez un fichier dans l'un des pods.
Cet exemple utilise le pod nommé
nas-test-****-***a:kubectl exec nas-test-****-***a -- touch /data/test.txt -
Affichez le fichier dans l'autre pod.
Cet exemple utilise le pod nommé
nas-test-****-***b:kubectl exec nas-test-****-***b -- ls /dataLa sortie attendue affiche le nouveau fichier
test.txt, ce qui confirme son partage entre les pods.test.txt
-
-
Validez la persistance du stockage.
-
Redémarrez le Deployment.
kubectl rollout restart deploy nas-test -
Vérifiez les pods et attendez le démarrage des nouveaux pods.
kubectl get pod | grep nas-testExemple de sortie :
nas-test-****-***c 1/1 Running 0 67s nas-test-****-***d 1/1 Running 0 49s -
Dans l'un des nouveaux pods, vérifiez que les données persistent dans le système de fichiers.
Cet exemple utilise le pod nommé
nas-test-****-***c:kubectl exec nas-test-****-***c -- ls /dataLa sortie confirme que les données du système de fichiers NAS persistent et sont accessibles dans le répertoire de montage du nouveau pod.
test.txt
-