Objectifs
- Distinguer filesystem éphémère, volume de Pod et stockage persistant.
- Comprendre les rôles de PV, PVC et StorageClass.
- Lire les access modes et une demande de capacité.
- Monter un PVC dans un container.
Comprendre le stockage Kubernetes
Le filesystem inscriptible d’un container n’est pas un stockage durable. Un volume de Pod peut survivre au redémarrage d’un container, mais certains types restent liés à la durée de vie du Pod.
Le sous-système PersistentVolume sépare la demande applicative de l’implémentation du stockage. Le cluster peut associer une demande existante à un PV ou provisionner dynamiquement une ressource grâce à une StorageClass.
PV, PVC et StorageClass
Un PersistentVolume est une ressource de stockage au niveau du cluster. Un PersistentVolumeClaim est une demande namespaced portant capacité, access modes et éventuellement StorageClass. Une StorageClass décrit un provisioner et des politiques.
- PV : ressource concrète ou représentation d’un stockage provisionné.
- PVC : demande consommée par un Pod.
- StorageClass : classe de service et méthode de provisionnement.
- Dynamic provisioning : création à la demande d’un volume pour un PVC compatible.
Manifeste d’une demande de stockage
Ce PVC demande 5 GiB avec ReadWriteOnce. Sans storageClassName, une StorageClass par défaut peut être appliquée. Sans classe par défaut ni PV compatible, la demande peut rester Pending.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5GiReadWriteOnce décrit une possibilité de montage en lecture-écriture depuis un seul nœud, pas nécessairement l’exclusivité d’un seul Pod. Les modes réellement supportés dépendent du driver de stockage.
Monter le PVC dans un Pod
La section volumes du Pod référence le claim. Chaque container qui doit l’utiliser ajoute un volumeMount portant le même nom et choisit son mountPath.
volumes:
- name: data
persistentVolumeClaim:
claimName: app-datavolumeMounts:
- name: data
mountPath: /dataObserver le binding et le provisionnement
get affiche les phases des PV et PVC. describe pvc révèle événements, StorageClass demandée et raison d’un éventuel Pending.
kubectl get pv
kubectl get pvc
kubectl get storageclass
kubectl describe pvc app-dataBonnes pratiques
Choisissez la StorageClass, les access modes et la capacité selon le driver réel. Vérifiez aussi reclaimPolicy, sauvegardes, restauration, expansion et contraintes de zone avant la production.
- Ne pas considérer un PVC comme une sauvegarde.
- Tester la restauration et la reprise sur un autre nœud.
- Comprendre si la suppression du PVC entraîne la suppression du stockage sous-jacent.
Erreur fréquente : supposer que tout cluster possède une StorageClass compatible
Mini résumé
- La couche inscriptible d’un container n’est pas un stockage persistant.
- PV représente le stockage et PVC exprime la demande de l’application.
- StorageClass permet notamment le provisionnement dynamique.
- Les access modes et politiques dépendent du driver et du cluster.
Mini quiz
Trois questions pour vérifier les notions essentielles de la leçon.