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
StorageClassesproposé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 :
-
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.
- Type d'accès : Bloc (
-
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).
- Type d'accès : Système de fichiers (
-
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).
- Type d'accès : Bloc (
-
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.
- Type d'accès : Local (
É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
ReclaimPolicyde la StorageClass, qui est généralementDelete).