KubernetesDevOpsStockage

Kubernetes : gérer le stockage persistant avec PV et PVC

14 août 2026 · Sphinx-Digital

Les conteneurs sont éphémères — leurs données disparaissent avec eux. Pour les bases de données, les queues et tout service avec état, Kubernetes offre un système de stockage persistant découplé du cycle de vie des pods.

Les trois abstractions

PersistentVolume (PV) — un morceau de stockage provisionné dans le cluster (EBS, GCE Disk, NFS…). C’est la ressource physique.

PersistentVolumeClaim (PVC) — une demande de stockage par un pod. Le pod ne connaît pas le PV sous-jacent.

StorageClass — définit comment les PVs sont créés dynamiquement à la demande.

Provisionnement dynamique avec StorageClass

# StorageClass pour AWS EBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd
provisioner: ebs.csi.aws.com
parameters:
  type: gp3
  iops: "3000"
  throughput: "125"
reclaimPolicy: Retain   # Retain = garder le volume même si le PVC est supprimé
volumeBindingMode: WaitForFirstConsumer

PVC dans un déploiement

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-data
spec:
  accessModes: [ReadWriteOnce]
  storageClassName: fast-ssd
  resources:
    requests:
      storage: 50Gi
---
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: database-data
      containers:
        - name: postgres
          image: postgres:16
          volumeMounts:
            - name: data
              mountPath: /var/lib/postgresql/data

StatefulSets : le stockage pour les applications avec état

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres
spec:
  replicas: 3
  volumeClaimTemplates:       # PVC créé automatiquement pour chaque replica
    - metadata:
        name: data
      spec:
        accessModes: [ReadWriteOnce]
        storageClassName: fast-ssd
        resources:
          requests:
            storage: 50Gi

Avec un StatefulSet, postgres-0, postgres-1 et postgres-2 ont chacun leur propre PVC (data-postgres-0, etc.). Les pods ont des identités stables et du stockage attaché individuellement.

Notre formation Kubernetes couvre le stockage persistant avec des ateliers sur des clusters cloud réels.