Cette rubrique explique comment monter un volume Alibaba Cloud Network Attached Storage (NAS) sur les pods d'un cluster Container Service for Kubernetes (ACK) à l'aide du provisionnement statique. Le provisionnement statique permet de connecter des pods à un système de fichiers NAS existant pour assurer un stockage persistant et partagé entre plusieurs pods simultanément.
Prérequis
Un cluster ACK Serverless a été créé. Pour plus d'informations, consultez la section Créer un cluster ACK Serverless.
-
Un système de fichiers NAS a été créé. Pour plus d'informations, consultez la section Créer un système de fichiers.
Si vous devez chiffrer les données du PersistentVolume (PV) NAS, configurez le type de chiffrement lors de la création du système de fichiers NAS.
-
Un point de montage NAS a été créé. Pour plus d'informations, consultez la section Gérer les cibles de montage.
Le point de montage NAS doit se trouver dans le même VPC que les nœuds du cluster.
kubectl est connecté au cluster. Pour plus d'informations, consultez la section Obtenir un fichier kubeconfig et se connecter à un cluster avec kubectl
Cas d'utilisation
Applications nécessitant des E/S disque élevées.
Partage de fichiers entre hôtes, par exemple en tant que serveur de fichiers.
Remarques
Lors de l'utilisation d'un système de fichiers Extreme NAS, le paramètre
pathconfiguré pour le PersistentVolume (PV) doit utiliser /share comme répertoire parent. Par exemple, le sous-répertoire du système de fichiers NAS monté par un pod peut être défini sur /share/path1.-
NAS prend en charge le montage simultané par plusieurs pods. Dans ce cas, plusieurs pods peuvent modifier les mêmes données simultanément ; l'application doit donc gérer elle-même la synchronisation des données.
RemarqueLe répertoire / du stockage NAS ne permet pas de modifier les autorisations, la propriété ou le groupe.
-
Si vous configurez le paramètre securityContext.fsgroup dans un modèle d'application, Kubelet exécutera des opérations
chmodouchownaprès le montage du PersistentVolume (PV), ce qui augmentera le temps de montage.RemarqueSi le paramètre securityContext.fsgroup a été configuré et que vous souhaitez réduire le temps de montage, consultez la section FAQ sur les volumes NAS.
Monter un volume NAS à l'aide de la console
Étape 1 : Créer un PV
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Cluster List, cliquez sur le nom du cluster cible ou sur Details dans la colonne Actions.
Dans le volet de navigation de gauche de la page de gestion du cluster, accédez à .
Sur la page Persistent Volumes, cliquez sur Create en haut à droite.
-
Dans la boîte de dialogue Create PV, configurez les paramètres.
Paramètre
Remarque
PV Type
Dans cet exemple, NAS est sélectionné.
Name
Nom du PersistentVolume (PV) à créer. Le nom du PV doit être unique au sein du cluster. Dans cet exemple, le nom est pv-nas.
Capacity
Capacité du PersistentVolume (PV) à créer. Notez que le système de fichiers NAS lui-même n'impose pas de limites d'utilisation. Il ne s'agit pas d'un quota sur le système de fichiers NAS, mais d'une déclaration de capacité pour le PV en cours de création.
Access Mode
Sélectionnez ReadWriteMany et ReadWriteOnce. La valeur par défaut est ReadWriteMany.
Mount Target Domain Name:
Vous pouvez définir l'adresse de montage du cluster au niveau du point de montage NAS en utilisant soit Select Mount Target, soit Custom.
Advanced Options (Optional)
Mount Path
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, le paramètrepathdoit commencer par/share, par exemple/share/data.
Reclaim Policy
Retain (par défaut) : lorsque le PVC est supprimé, le PV et les fichiers NAS ne sont pas supprimés. Vous devez les supprimer manuellement.
Mount Options
Options de montage pour NAS, y compris la version du protocole NFS. Par défaut, les volumes sont montés à l'aide de 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 la section Protocoles NFS.Labels
Ajoutez des libellés à ce PersistentVolume (PV).
Une fois les paramètres configurés, cliquez sur Create.
Étape 2 : Créer un PVC
Dans le volet de navigation de gauche de la page de gestion du cluster, accédez à .
Sur la page Persistent Volume Claims, cliquez sur Create en haut à droite.
-
Dans la boîte de dialogue Create PVC qui s'affiche, renseignez les paramètres.
Paramètre
Remarque
PVC Type
Dans cet exemple, NAS est sélectionné.
Name
Le nom du PersistentVolumeClaim (PVC) à créer doit être unique au sein du cluster.
Allocation Mode
Sélectionnez un PersistentVolume (PV) existant.
RemarqueSi aucun PV n'a été créé, vous pouvez définir le paramètre Allocation Mode sur Create PV pour configurer les paramètres de création d'un PV. Pour plus d'informations, consultez la section Créer un PV.
Existing Volumes
Cliquez sur Select PV, puis dans la colonne Actions à droite du PV cible, cliquez sur Select Node pour sélectionner le PV.
Capacity
Capacité du PersistentVolume (PV) à créer.
RemarqueLa capacité du PersistentVolumeClaim (PVC) à créer ne peut pas dépasser la capacité du PersistentVolume (PV) à monter.
-
Cliquez sur Create.
Une fois le PersistentVolumeClaim (PVC) créé, vous pouvez le voir dans la liste ; il est déjà lié au PersistentVolume (PV) correspondant.
Étape 3 : Créer une application
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, accédez à .
-
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 la section Créer une charge de travail sans état (Deployment).
Catégorie
Paramètre
Description
Basic Information
Application Name
Nom du Deployment.
Replicas:
Nombre de répliques pour le Deployment.
Cette configuration vous permet de vérifier la fonctionnalité de stockage partagé de NAS.
Container
Image Name
Adresse de l'image de l'application.
Required Resources
Ressources vCPU et mémoire requises.
Volume
Cliquez sur Add PVC et configurez les paramètres.
Mount Source : sélectionnez le PVC que vous avez créé précédemment.
Container Path : chemin au sein du conteneur pour 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. Sous l'onglet Pods, vérifiez que les pods sont à l'état Running.
Monter un volume NAS à l'aide de kubectl
-
Exécutez la commande suivante pour créer un PV statique.
kubectl create -f pv-nas.yamlVoici un exemple de fichier YAML pour la création d'un PV statique.
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas volumeAttributes: server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com" path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3Paramètre
Remarque
name
Nom du PV.
labels
Définit les libellés du PV.
storage
Capacité disponible de NAS.
accessModes
Configure le mode d'accès.
driver
Type de pilote. Dans cet exemple, la valeur est
nasplugin.csi.alibabacloud.com, indiquant que le plugin CSI Alibaba Cloud NAS est utilisé.volumeHandle
Configure un identifiant unique pour le PV. Si plusieurs PV sont utilisés simultanément, cette valeur doit être différente pour chaque PV.
server
Point de montage NAS.
path
Sous-répertoire de montage. Pour Extreme NAS, /share doit être utilisé comme répertoire parent.
vers
Version du protocole NFS pour le montage du PersistentVolume (PV) NAS. La version 3 est recommandée. Extreme NAS ne prend en charge que la version 3.
-
Exécutez la commande suivante pour créer un PVC statique.
Créez un PersistentVolumeClaim (PVC) NAS et utilisez
selectorpour filtrer les PV, en configurant précisément la liaison entre le PVC et le PV.kubectl create -f pvc-nas.yamlVoici un exemple de fichier YAML pour la création d'un PVC statique.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nasParamètre
Remarque
name
Nom du PVC.
accessModes
Configure le mode d'accès.
storage
Déclare l'utilisation de l'application, qui ne peut pas dépasser la capacité totale du PersistentVolume (PV).
matchLabels
Saisissez le libellé du PV à associer au PV.
-
Exécutez la commande suivante pour créer une application nommée nas-static et monter le PVC.
kubectl create -f nas.yamlVoici un exemple de fichier nas.yaml pour la création de l'application nas-static.
apiVersion: apps/v1 kind: Deployment metadata: name: nas-static 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: pvc-nasParamètre
Remarque
mountPath
Chemin de montage de NAS dans le conteneur.
claimName
Nom du PVC, utilisé pour lier le PVC.
-
Exécutez la commande suivante pour afficher les informations des pods.
kubectl get podRésultat attendu :
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
Vérifier le stockage persistant de NAS
-
Affichez l'application déployée et les fichiers NAS.
-
Exécutez la commande suivante pour afficher le nom de l'application déployée.
kubectl get podRésultat attendu :
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Exécutez la commande suivante pour afficher les fichiers situés sous le chemin /data de n'importe quelle application. Dans cet exemple, le pod nommé
nas-static-5b5cdb85f6-n****est utilisé.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataAucune sortie n'est renvoyée, ce qui indique qu'il n'y a aucun fichier sous le chemin /data.
-
-
Exécutez la commande suivante pour créer un fichier nas sous le chemin /data du pod nommé
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
Exécutez la commande suivante pour afficher les fichiers situés sous le chemin /data du pod nommé
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataRésultat attendu :
nas -
Exécutez la commande suivante pour supprimer le pod.
kubectl delete pod nas-static-5b5cdb85f6-n**** -
Simultanément, dans une autre fenêtre, exécutez la commande suivante pour visualiser le processus de suppression du pod et de recréation du pod par Kubernetes.
kubectl get pod -w -l app=nginx -
Vérifiez si les fichiers créés dans NAS existent toujours après la suppression du pod.
-
Exécutez la commande suivante pour afficher le nom du pod recréé par Kubernetes.
kubectl get podRésultat attendu :
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Exécutez la commande suivante pour afficher les fichiers situés sous le chemin /data du pod nommé
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataRésultat attendu :
nasLe fichier nas existe toujours, ce qui indique que les données NAS peuvent être stockées de manière persistante.
-
Vérifier le stockage partagé
-
Affichez les pods où s'exécute l'application déployée ainsi que les fichiers NAS.
-
Exécutez la commande suivante pour afficher les noms des pods où s'exécute l'application.
kubectl get podRésultat attendu :
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Exécutez la commande suivante pour afficher les fichiers situés sous le chemin /data des deux pods.
kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data kubectl exec nas-static-c5bb4746c-4**** -- ls /data
-
-
Exécutez la commande suivante pour créer un fichier nas sous le chemin /data de n'importe quel pod.
kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
Exécutez la commande suivante pour afficher les fichiers situés sous le chemin /data des deux pods.
-
Exécutez la commande suivante pour afficher les fichiers situés sous le chemin /data du pod nommé
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataRésultat attendu :
nas -
Exécutez la commande suivante pour afficher les fichiers situés sous le chemin /data du pod nommé
nas-static-c5bb4746c-4****.kubectl exec nas-static-c5bb4746c-4**** -- ls /dataRésultat attendu :
nasSi le fichier créé sous le chemin /data de n'importe quel pod est présent sous le chemin /data des deux pods, cela indique que les deux pods partagent le même NAS.
-