Aller au contenu principal

Gestion du stockage

Objectifs

Dans ce tutoriel, vous allez découvrir comment gérer le stockage persistant dans votre cluster Managed Kubernetes. Kubernetes utilise le concept de StorageClass pour définir les différents types de stockage disponibles.

À la fin de ce guide, vous serez capable de :

  • Comprendre les différentes StorageClasses proposées.
  • Créer un PersistentVolumeClaim (PVC) pour demander du stockage.
  • Monter ce stockage dans vos Pods.

Les StorageClasses disponibles

Cloud Temple propose plusieurs classes de stockage (StorageClasses) pour répondre à vos différents besoins en termes de performances et de cas d'usage :

  1. ceph-block (par défaut)

    • Type d'accès : Bloc (ReadWriteOnce).
    • Facteur de réplication : X3 (haute disponibilité).
    • Cas d'usage : C'est la classe par défaut, idéale pour les bases de données et les applications nécessitant un accès exclusif et performant au disque, avec une forte résilience.
  2. ceph-filesystem

    • Type d'accès : Système de fichiers (ReadWriteMany).
    • Cas d'usage : Utile lorsque plusieurs Pods (répartis sur différents nœuds) ont besoin de lire et d'écrire simultanément sur le même volume (ex: partage de fichiers, CMS, assets statiques).
  3. ceph-block-norepl

    • Type d'accès : Bloc (ReadWriteOnce).
    • Facteur de réplication : X1 (sans réplication supplémentaire).
    • Cas d'usage : Destiné aux données pour lesquelles la réplication est déjà gérée au niveau applicatif ou qui ne nécessitent pas de résilience élevée au niveau du stockage (caches, données éphémères).
  4. topolvm-ssd (optionnel)

    • Type d'accès : Local (ReadWriteOnce).
    • Cas d'usage : Stockage local au nœud offrant de très hautes performances (faible latence). Attention, ce stockage est lié au nœud physique. Si le nœud est supprimé, les données le sont également.

Étape 1 : Créer un PersistentVolumeClaim (PVC)

Un PVC est une requête de stockage. Voici comment créer un PVC pour chaque type de stockage.

Exemple 1 : Volume ceph-block (Par défaut)

Si vous ne spécifiez pas de storageClassName, la classe ceph-block sera utilisée par défaut.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-ceph-block
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: ceph-block

Exemple 2 : Volume partagé ceph-filesystem

Pour un volume pouvant être monté par plusieurs Pods en même temps, utilisez ceph-filesystem avec le mode d'accès ReadWriteMany.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-ceph-fs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
storageClassName: ceph-filesystem

Exemple 3 : Volume ceph-block-norepl

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-ceph-block-norepl
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: ceph-block-norepl

Exemple 4 : Volume local avec topolvm

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-topolvm
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: topolvm-ssd

Appliquez le manifeste de votre choix avec la commande suivante :

kubectl apply -f mon-pvc.yaml

Vous pouvez vérifier le statut de votre PVC :

kubectl get pvc

Le statut passera à Bound une fois le volume alloué.


Étape 2 : Utiliser le stockage dans un Pod

Une fois le PVC créé, vous pouvez le monter dans un Pod en l'ajoutant dans la section volumes et volumeMounts.

Voici un exemple de Pod utilisant le PVC pvc-ceph-block créé précédemment :

apiVersion: v1
kind: Pod
metadata:
name: app-storage-demo
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: "/usr/share/nginx/html/data"
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: pvc-ceph-block

Appliquez le manifeste :

kubectl apply -f pod.yaml

Vérifiez que le Pod est en cours d'exécution :

kubectl get pods

Nettoyage

Pour libérer les ressources de stockage, supprimez d'abord le Pod, puis le PVC :

kubectl delete pod app-storage-demo
kubectl delete pvc pvc-ceph-block

Attention : La suppression du PVC entraîne par défaut la suppression du volume sous-jacent et des données qu'il contient (selon la ReclaimPolicy de la StorageClass, qui est généralement Delete).