Skip to Content

Qu’est-ce qu’un volume persistant Kubernetes ?

La gestion du stockage pour les applications « stateful » est un aspect essentiel de l’orchestration des conteneurs. Kubernetes Persistent Volume (PV ) est une fonctionnalité fondamentale qui répond à ce besoin en fournissant un mécanisme de gestion des ressources de stockage indépendamment du cycle de vie des pods individuels. Dans cet article, nous allons découvrir le concept de Kubernetes Persistent Volume, ses fonctionnalités et les bonnes pratiques pour l’utiliser efficacement dans vos clusters Kubernetes.

Qu’est-ce que le volume persistant Kubernetes ?

Un volume persistant (PV) Kubernetes est une ressource de stockage dans un cluster Kubernetes qui abstrait la technologie de stockage sous-jacente. Contrairement au stockage temporaire, qui est lié au cycle de vie d’un pod et disparaît lorsque le pod est arrêté, les PV permettent de gérer et d’allouer un stockage persistant aux applications. Cela garantit que les données restent intactes même si les pods qui y accèdent sont arrêtés ou reprogrammés.

L’utilisation de volumes persistants offre des avantages tels que :

  • Abstraction du stockage : Les PV cachent les spécificités du stockage physique (disques locaux, SAN, stockage cloud, par exemple) des pods. Les utilisateurs peuvent demander un stockage sans avoir besoin de connaître les détails spécifiques de la mise en œuvre.
  • Persévérance : Les PV garantissent la persistance des données, même lors des redémarrages ou des reprogrammations des pods. Imaginez un pod de serveur Web qui utilise un stockage éphémère pour stocker des journaux temporaires. Lorsque le pod redémarre, ces journaux sont perdus. Le stockage persistant, en revanche, garantit que les données, comme les données d’application gérées par un pod de base de données, restent intactes.
  • Découplage du stockage des pods : Cette séparation permet une plus grande flexibilité et un meilleur contrôle des ressources de stockage. Les pods peuvent être facilement étendus ou réduits sans affecter le stockage sous-jacent.

Principales caractéristiques des volumes persistants Kubernetes

Les volumes persistants Kubernetes offrent plusieurs fonctionnalités clés qui les rendent puissantes et adaptables à différents besoins de stockage :

Classes de stockage

Les classes de stockage agissent comme des modèles qui définissent différents niveaux ou catégories de stockage disponibles dans un cluster. Ils peuvent spécifier des caractéristiques telles que les performances (par exemple, SSD ou HDD capacité, la durabilité et le coût. Cela permet aux administrateurs de provisionner un stockage adapté aux exigences spécifiques des applications.

Modes d’accès

Les modes d’accès définissent comment les pods peuvent interagir avec le stockage fourni par un PV . Voici une répartition des modes courants :

  • ReadWriteOnce (RWO) : Un seul pod à la fois peut monter le volume avec des autorisations en lecture/écriture. Cela garantit l’intégrité des données pour les applications qui nécessitent un accès en écriture exclusif, comme une réplique de base de données primaire.
  • Lecture seuleBeaucoup (ROX) : Plusieurs pods peuvent monter le volume simultanément, mais uniquement en mode lecture seule. Cela est utile dans les scénarios où les applications doivent accéder aux données partagées sans modification, comme un fichier de configuration ou un référentiel de journaux.
  • ReadWriteMany (RWX) : Plusieurs pods peuvent monter le volume avec des autorisations en lecture/écriture. Ce mode d’accès doit être utilisé avec prudence en raison d’éventuelles incohérences de données si plusieurs pods écrivent simultanément. Il est idéal pour des cas d’utilisation spécifiques, tels que les caches partagés ou les outils d’édition collaboratifs.

Politiques de récupération

Les politiques de récupération déterminent la manière dont Kubernetes gère une PV après qu’elle n’est plus liée à un pod. Les principales politiques sont les suivantes :

  • Conserver : La PV reste après le déblocage du pod, ce qui permet une administration manuelle pour une utilisation ou une migration future potentielle.
  • Recyclage : Kubernetes recycle la PV . Cela implique généralement d’effacer les données existantes et de rendre le stockage disponible pour les futures attributions de pods.
  • Supprimer : L’objet PV et sa ressource de stockage sous-jacente sont complètement supprimés. Utilisez-le avec prudence, car la reprise des données peut ne pas être possible.

Plug-ins de volume

Kubernetes utilise des plug-ins de volume pour combler l’écart entre la plateforme et les différents fournisseurs de stockage. Ces plug-ins permettent à Kubernetes de comprendre et d’interagir avec divers backends de stockage, notamment le stockage local, les solutions de stockage en réseau (NAS) comme NFS ou iSCSI, et les services de stockage spécifiques aux fournisseurs de cloud comme AWS EBS ou GCE Persistent Disk. Cette architecture de plug-in offre une grande flexibilité dans le choix et l’intégration de solutions de stockage à votre cluster Kubernetes.

Provisionnement de volumes persistants

Kubernetes propose deux méthodes principales de provisionnement des volumes persistants (PV) : le provisionnement statique et le provisionnement dynamique. Chaque approche s’adapte à différents cas d’utilisation et présente des avantages distincts.

Provisioning statique

Dans le cadre du provisioning statique, les administrateurs de cluster créent et configurent manuellement des PV au préalable. Cette approche permet un contrôle précis de la configuration du stockage et convient aux scénarios avec des exigences de stockage bien définies qui ne changent pas fréquemment. Pour mettre en service une PV statique :

1. Définissez les détails du stockage : Déterminer la capacité de stockage, les modes d’accès (ReadWriteOnce, ReadOnlyMany, ReadWriteMany), la politique de récupération (Retain, Recycle, Delete) et les détails du plug-in de volume (par exemple, l’adresse du serveur pour NFS ).

2. Créer l’objet PV à l’aide de YAML : Utilisez un fichier manifeste YAML pour définir la configuration PV. Voici un exemple d’utilisation du stockage NFS :

apiVersion: v1
 kind: PersistentVolume
 metadata:
   name: my-pv-nfs
 spec:
   capacity:
     storage: 10Gi
   accessModes:
     - ReadWriteOnce
   persistentVolumeReclaimPolicy: Retain
   nfs:
     path: /path/to/nfs/share
     server: nfs-server.example.com

  • nom : Nom unique du PV .
  • stockage : Capacité de stockage souhaitée (par exemple, 10Gi pour 10 gigaoctets).
  • accessModes : Choisissez le mode d’accès approprié en fonction des exigences de votre application.
  • PersistanceVolumeReclaimPolicy : Définir comment Kubernetes doit gérer la PV une fois qu’elle est déliée d’un pod.
  • nfs.path : Chemin d’accès au partage NFS sur le serveur NFS.
  • nfs.server : Adresse IP ou nom d’hôte du serveur NFS.

3. Appliquer le manifeste YAML : Utilisez la commande kubectl apply -f pour créer l’objet PV dans votre cluster Kubernetes.

Provisioning dynamique

Le provisioning dynamique utilise StorageClasses pour automatiser la création de PV. Les administrateurs définissent des StorageClasses qui spécifient les caractéristiques de stockage souhaitées et permettent à Kubernetes de gérer la création de PV à la demande lorsqu’un PVC (PersistentVolumeClaim) demande un stockage. Pour utiliser le provisioning dynamique :

1. Définir une classe de stockage : Créer un manifeste StorageClass YAML indiquant le fournisseur, le type de stockage (par exemple, SSD, HDD et tous les paramètres supplémentaires requis par le fournisseur. Voici un exemple d'AWS EBS :

apiVersion: storage.k8s.io/v1
 kind: StorageClass
 metadata:
   name: standard-ebs
 provisioner: kubernetes.io/aws-ebs
 parameters:
   type: gp2

  • nom : Nom unique de StorageClass.
  • fournisseur : Nom du plug-in du fournisseur de stockage (par exemple, kubernetes.io/aws-ebs pour AWS EBS ).
  • paramètres.type : Type de stockage dans le fournisseur (par exemple, gp2 pour un type de volume SSD universel dans AWS EBS ).

2. Appliquer le manifeste StorageClass : Utilisez kubectl apply -f pour créer l’objet StorageClass dans votre cluster.

Liaison de volumes persistants aux pods

La liaison d’une PV à un pod permet aux applications de tirer parti du stockage persistant. Cette liaison est généralement obtenue par un système PVC (PersistentVolumeClaim).

    Un PVC agit comme une demande de stockage soumise par un pod. Il spécifie les exigences de stockage d’un pod, notamment :

  • Modes d’accès : Définit comment le pod peut interagir avec le stockage (par exemple, ReadWriteOnce, ReadOnlyMany, ReadWriteMany).
  • Capacité de stockage : La quantité de stockage souhaitée pour le pod.
  • StorageClassName (facultatif) : Fait référence à une StorageClass pour le provisioning dynamique.

    Il existe deux méthodes principales pour lier les PV aux pods :

  • Liaison statique : En liaison statique, les administrateurs créent manuellement un PVC qui fait explicitement référence à une PV pré-provisionnée. Le PVC et le PV doivent avoir des attributs compatibles, tels que des modes d’accès correspondants et une capacité de stockage suffisante dans le PV, pour répondre à la demande du PVC.
  • Liaison dynamique : La liaison dynamique utilise StorageClasses pour la création automatisée de PV. Lorsqu’un pod avec un PVC faisant référence à une StorageClass est déployé, Kubernetes recherche un PV adapté (existant ou nouvellement provisionné sur la base de StorageClass) qui répond aux exigences du PVC. Si un PV adapté est trouvé, Kubernetes relie automatiquement le PV et le PVC.

Voici un exemple de pod nommé « pod-exemple » qui utilise un PVC nommé « pvc-exemple » :

apiVersion: v1
 kind: Pod
 metadata:
   name: pod-example
 spec:
   containers:
   - name: app
     image: nginx
     volumeMounts:
     - mountPath: "/usr/share/nginx/html"
       name: pvc-storage
   volumes:
   - name: pvc-storage
     persistentVolumeClaim:
       claimName: pvc-example

Dans cet exemple, le pod monte le PVC nommé « pvc-example » sur le chemin « /usr/share/nginx/html » dans le conteneur. Cela permet au pod d’accéder et de gérer ses données persistantes stockées dans la PV sous-jacente.

Gestion des volumes persistants

Il est impératif de gérer efficacement vos volumes persistants (PV) pour maintenir une utilisation efficace et évolutive du stockage dans votre cluster Kubernetes. Voici quelques-uns des principaux aspects de la gestion de la PV :

1. Redimensionnement des volumes persistants

Kubernetes v1.11 a introduit la possibilité de redimensionner les PV. Cela vous permet d’ajuster dynamiquement la capacité de stockage allouée à un PV, en fonction des besoins croissants en stockage de vos applications. 

Pour redimensionner un PV , mettez à jour la demande de stockage du PVC : Modifier le PVC qui fait référence au PV et modifier la valeur de stockage dans la section resources.requests de la spécification YAML du PVC. Par exemple, pour augmenter la taille d’un PVC nommé « pvc-example » à 20Gi mettez à jour le manifeste YAML :

apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
   name: pvc-example
 spec:
   resources:
     requests:
       storage: 20Gi

Une fois la demande de stockage du PVC mise à jour, Kubernetes tente de redimensionner le stockage sous-jacent fourni pour le PV . Le redimensionnement d’une PV est généralement une opération à sens unique (extension du stockage). La réduction de la taille d’une PV n’est pas prise en charge en raison de problèmes potentiels de perte de données.

2. Suppression de volumes persistants

Pour supprimer une PV , assurez-vous qu'elle n'est pas liée à des PVC. Vous ne pouvez pas supprimer une PV utilisée par un PVC pour éviter la perte de données. Voici comment supprimer une PV :

kubectl delete pv pv-example

Remplacez l’exemple pv par le nom réel de la PV que vous souhaitez supprimer.

3. Mise à jour des volumes persistants

Bien que la capacité de stockage centrale ne puisse pas être modifiée directement dans un objet PV, vous pouvez mettre à jour certains champs de métadonnées d’un PV, tels que les étiquettes ou les annotations. Ces étiquettes et annotations peuvent être utilisées pour mieux organiser, identifier et gérer vos PV au sein du cluster.

Bonnes pratiques d’utilisation des volumes persistants Kubernetes

Voici quelques-unes des bonnes pratiques à suivre pour tirer le meilleur parti des volumes persistants Kubernetes :

  • Sélectionnez les classes de stockage appropriées : Choisissez des classes de stockage qui correspondent aux exigences de performance et de durabilité de vos applications. Par exemple, utilisez un stockage sur SSD pour les applications haute performance et un stockage sur HDD à des fins d’archivage.
  • Configurer correctement les modes d’accès : Sélectionnez le mode d’accès adapté à votre PV en fonction de la manière dont vos applications doivent accéder au stockage. Par exemple, vous pouvez utiliser RWX pour les systèmes de fichiers partagés et RWO pour les bases de données à instance unique.
  • Mettre en œuvre judicieusement des politiques de récupération : Définissez des politiques de récupération qui correspondent à votre stratégie de gestion du cycle de vie des données. Utilisez la politique de conservation pour les données critiques qui nécessitent une intervention manuelle avant la suppression.
  • Surveillance et journalisation : Utilisez des outils de surveillance et de journalisation pour surveiller l’utilisation, les performances et l’état de la PV. Des outils tels que Prometheus et Grafana peuvent fournir des informations précieuses sur votre infrastructure de stockage.
  • Utilisez Portworx ® pour une gestion avancée des données : Pour les solutions avancées de gestion des données et de stockage persistant dans Kubernetes , envisagez d’utiliser Portworx par Pure Storage . Portworx offre des fonctionnalités telles que la haute disponibilité, la reprise après sinistre et la sauvegarde, spécialement conçues pour les applications conteneurisées.

Conclusion

Les volumes persistants (PV) Kubernetes offrent un mécanisme fondamental de gestion du stockage dans les applications « stateful ». En exploitant les PV, vous pouvez garantir la persistance des données, la haute disponibilité et l’utilisation efficace du stockage dans votre cluster Kubernetes. Des solutions comme Portworx par Pure Storage offrent un moyen intuitif d’exploiter les avantages des volumes persistants de Kubernetes. Avec des fonctionnalités telles que la haute disponibilité, la reprise après sinistre et la sauvegarde qui utilisent l’intelligence artificielle pour améliorer l’efficacité, Portworx est la solution de stockage persistant Kubernetes idéale pour les applications conteneurisées.

02/2025
Deploying Portworx on Google Distributed Cloud Anthos with vSphere
This Portworx reference architecture contains a validated architecture and design model to deploy Portworx on Anthos running on vSphere.
Architecture de référence
28 pages
CONTACTEZ-NOUS
Des questions, des commentaires ?

Vous avez des questions ou des commentaires concernant des produits ou certifications Pure ?  Nous sommes là pour vous aider.

Planifier une démo

Planifiez une démo en direct et découvrez comment Pure peut vous aider à transformer vos données. 

Tél. : +33 1 89 96 04 00

Services Médias : pr@purestorage.com

 

Pure Storage France

32 rue Guersant

75017 Paris

info@purestorage.com

 

FERMER
Votre navigateur n’est plus pris en charge !

Les anciens navigateurs présentent souvent des risques de sécurité. Pour profiter de la meilleure expérience possible sur notre site, passez à la dernière version de l’un des navigateurs suivants.