Contactez-nous

Gestion du stockage persistant

Apprenez à gérer le stockage persistant dans Kubernetes. Découvrez les volumes, PersistentVolumes (PV), PersistentVolumeClaims (PVC) et StorageClasses.

Donner une mémoire à vos applications : le défi du stockage

Nous avons vu comment les Pods Kubernetes exécutent nos applications, mais par défaut, tout ce qui est écrit dans le système de fichiers d'un conteneur est éphémère. Si le Pod redémarre ou est déplacé, ces données sont perdues. Pour de nombreuses applications, en particulier celles qui gèrent des données (bases de données, files d'attente, etc.), cette volatilité est inacceptable. Elles ont besoin d'un moyen de stocker des données de manière persistante, indépendamment du cycle de vie des Pods.

Ce chapitre plonge au coeur de la gestion du stockage dans Kubernetes. Nous irons au-delà des volumes simples liés au Pod (comme `emptyDir` pour le partage temporaire entre conteneurs ou `hostPath` pour accéder au système de fichiers du noeud, à utiliser avec précaution) pour explorer comment Kubernetes fournit un accès fiable et découplé à des solutions de stockage externes et persistantes.

Le modèle PV/PVC : découpler application et infrastructure

Pour gérer le stockage persistant, Kubernetes introduit une puissante abstraction basée sur deux objets API clés :

  • PersistentVolume (PV) : Représente un "morceau" de stockage physique dans le cluster (un disque réseau, un volume cloud, un partage NFS...). Le PV est une ressource du cluster, généralement provisionnée par un administrateur ou de manière dynamique, qui contient les détails de l'implémentation du stockage (type, taille, chemin...).
  • PersistentVolumeClaim (PVC) : Représente une demande de stockage faite par un utilisateur ou une application. La PVC spécifie les besoins en stockage (taille, mode d'accès) sans se soucier des détails de l'infrastructure sous-jacente. C'est un objet namespacé.

Ce modèle PV/PVC découple les besoins de stockage de l'application (PVC) de la fourniture réelle de ce stockage (PV). Les développeurs demandent du stockage via des PVCs, et Kubernetes se charge de trouver un PV correspondant disponible pour satisfaire cette demande (le "binding").

Nous explorerons en détail le cycle de vie des PVs et PVCs, comment ils sont liés, et comment cette abstraction facilite la portabilité des applications. Nous verrons également comment les StorageClasses entrent en jeu pour automatiser le provisionnement des PVs (provisionnement dynamique), évitant aux administrateurs d'avoir à pré-provisionner manuellement tous les volumes. Enfin, nous examinerons les différents modes d'accès (ReadWriteOnce, ReadOnlyMany, ReadWriteMany) qui définissent comment un volume peut être monté et partagé entre les noeuds et les Pods.

Comprendre ces mécanismes est fondamental pour pouvoir déployer des applications stateful sur Kubernetes.