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.
|
|
|
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 . 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.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 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
-
Créez un fichier nommé
pv-nas.yamlavec 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=3Paramètre
Description
storageLa 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.
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.
persistentVolumeReclaimPolicyLa 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'étatReleased. 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écessitearchiveOnDelete. Cependant, les PV statiques ne prennent pas en chargearchiveOnDelete. Par conséquent, lorsque cette politique est définie surDelete, 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.
driverLe pilote. Définissez ce paramètre sur
nasplugin.csi.alibabacloud.comlorsque vous utilisez le plug-in CSI Alibaba Cloud NAS.volumeHandleUn 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.serverL'adresse de la cible de montage NAS.
Pour trouver l'adresse de la cible de montage, consultez Gérer les cibles de montage.
pathLe 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, lepathdoit commencer par/share, par exemple/share/data.
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 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. -
-
Créez le PV.
kubectl create -f pv-nas.yaml -
Vérifiez le statut et les propriétés du PV.
kubectl get pvSortie attendue :
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pv-nas 5Gi RWX Retain Available <unset> 25sLa 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
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 .
-
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, lepathdoit 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 chargearchiveOnDelete. Par conséquent, lorsque cette politique est définie surDelete, 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
-
Créez un fichier nommé
pvc-nas.yamlpour 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
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.
storageCette 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.
matchLabelsSpécifie le libellé utilisé pour sélectionner un PV à lier.
-
-
Créez la PVC.
kubectl create -f pvc-nas.yaml -
Vérifiez l'état de la PVC.
kubectl get pvcRésultat attendu :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-nas Bound pv-nas 5Gi RWX <unset> 5sLe 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
Dans le volet de navigation de gauche de la page de gestion du cluster, sélectionnez .
-
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
-
Créez un fichier nommé
deploy.yamlavec 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.
-
Créez le Deployment.
kubectl create -f deploy.yaml -
Vérifiez l'état des Pods.
kubectl get pod -l app=nginxRésultat attendu :
NAME READY STATUS RESTARTS AGE nas-test-****-***a 1/1 Running 0 32s nas-test-****-***b 1/1 Running 0 32s
Console
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
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.
|
Pour vérifier le stockage persistant, redémarrez le Deployment et vérifiez si les données persistent dans les nouveaux 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 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 avec des E/S de fichiers à grande échelle, testez différentes valeurs dersizeetwsizeafin 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 politiquepersistentVolumeReclaimPolicydu PV surRetain. 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.
-
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>
-
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'étatReleased. 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
volumeHandled'un PV statique est un suffixe de sonpath(par exemple, sivolumeHandleestappetpathest/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>
-
Supprimer le PV
Vous pouvez supprimer un PV lorsque son état est
AvailableouReleased. 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>
-
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
-
Si vous rencontrez des problèmes lors du montage ou de l'utilisation de volumes NAS, consultez les documents suivants :
CNFS vous permet de gérer indépendamment les systèmes de fichiers NAS pour améliorer les performances et fournir un contrôle QoS. Pour plus d'informations, consultez la section Gestion des systèmes de fichiers NAS avec CNFS.