Aller au contenu principal

Chapitre 6.1 - Volumes

Objectifs d'Apprentissage​

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

  • Comprendre les différents types de volumes Kubernetes
  • Utiliser les volumes éphémères (emptyDir, tmpfs)
  • Distinguer volumes éphémères et stockage persistant
  • Choisir le bon type de volume selon le cas d'usage
  • Comprendre le cycle de vie des volumes

Introduction​

Les volumes dans Kubernetes permettent aux conteneurs d'accéder au stockage. Contrairement au système de fichiers du conteneur (éphémère), les volumes persistent même si le conteneur redémarre.


Volumes Éphémères​

Les volumes éphémères existent uniquement pendant la durée de vie du Pod. Ils sont supprimés quand le Pod est terminé.

emptyDir​

Un volume emptyDir est créé quand un Pod démarre et supprimé quand le Pod est terminé.

apiVersion: v1
kind: Pod
metadata:
name: empty-dir-pod
spec:
containers:
- name: app
image: nginx:1.20
volumeMounts:
- name: cache
mountPath: /cache
- name: sidecar
image: busybox:1.35
volumeMounts:
- name: cache
mountPath: /shared
volumes:
- name: cache
emptyDir:
sizeLimit: 1Gi # Optionnel: limite de taille

Caractéristiques:

  • Créé automatiquement au démarrage du Pod
  • Partagé entre tous les conteneurs du Pod
  • Stocké sur le node (disque local)
  • Supprimé quand le Pod est terminé

Cas d'usage:

  • Cache temporaire
  • Fichiers temporaires partagés entre conteneurs
  • Données de travail intermédiaires

tmpfs (RAM)​

Un volume tmpfs est stocké en mémoire (RAM) au lieu du disque.

apiVersion: v1
kind: Pod
metadata:
name: tmpfs-pod
spec:
containers:
- name: app
image: nginx:1.20
volumeMounts:
- name: tmpfs-volume
mountPath: /tmp
volumes:
- name: tmpfs-volume
emptyDir:
medium: Memory
sizeLimit: 512Mi # Limite en RAM

Caractéristiques:

  • Stocké en RAM (très rapide)
  • Supprimé au redémarrage du node
  • Limité par la RAM disponible
  • Plus rapide que emptyDir (disque)

Cas d'usage:

  • Cache en mémoire haute performance
  • Fichiers temporaires sensibles (supprimés au redémarrage)
  • Données qui ne doivent pas persister

Attention: Utiliser avec précaution car consomme de la RAM.


Comparaison: emptyDir vs tmpfs​

CaractéristiqueemptyDirtmpfs
StockageDisque localRAM
PerformanceMoyenneTrès élevée
PersistanceSurvit au redémarrage du conteneurSupprimé au redémarrage du node
LimiteEspace disqueRAM disponible
Cas d'usageCache, fichiers temporairesCache haute performance, données sensibles

Volumes Spéciaux​

ConfigMap et Secret comme Volumes​

Les ConfigMaps et Secrets peuvent être montés comme volumes.

apiVersion: v1
kind: Pod
metadata:
name: config-volume-pod
spec:
containers:
- name: app
image: nginx:1.20
volumeMounts:
- name: config
mountPath: /etc/config
readOnly: true
- name: secrets
mountPath: /etc/secrets
readOnly: true
volumes:
- name: config
configMap:
name: app-config
- name: secrets
secret:
secretName: app-secrets
defaultMode: 0400

Résultat: Chaque clé devient un fichier dans le répertoire monté.


Volumes Persistants (Aperçu)​

Les volumes persistants (PV/PVC) seront couverts en détail dans le chapitre 6.2.

Différence principale:


Exemple Complet: Cache Partagé​

apiVersion: v1
kind: Pod
metadata:
name: cache-example
spec:
containers:
# Conteneur principal
- name: web-server
image: nginx:1.20
volumeMounts:
- name: cache
mountPath: /var/cache/nginx
- name: tmp
mountPath: /tmp

# Conteneur sidecar pour le cache
- name: cache-warmup
image: busybox:1.35
command: ["/bin/sh", "-c", "while true; do echo 'Cache data' > /cache/data.txt; sleep 60; done"]
volumeMounts:
- name: cache
mountPath: /cache

volumes:
# Cache partagé (disque)
- name: cache
emptyDir:
sizeLimit: 500Mi

# Fichiers temporaires (RAM)
- name: tmp
emptyDir:
medium: Memory
sizeLimit: 100Mi

Bonnes Pratiques​

1. Choisir le Bon Type​

  • emptyDir: Cache, fichiers temporaires, données partagées entre conteneurs
  • tmpfs: Cache haute performance, données sensibles temporaires
  • PV/PVC: Données importantes qui doivent persister

2. Limites de Taille​

Toujours définir sizeLimit pour éviter:

  • Épuisement de l'espace disque (emptyDir)
  • Épuisement de la RAM (tmpfs)

3. Nettoyage​

Les volumes éphémères sont automatiquement nettoyés, mais:

  • Vérifier que les applications nettoient leurs fichiers temporaires
  • Surveiller l'utilisation de l'espace disque/RAM

Commandes Utiles​

Vérifier les Volumes d'un Pod​

kubectl describe pod empty-dir-pod

Voir l'Utilisation des Volumes​

kubectl exec empty-dir-pod -c app -- df -h

Tester un Volume​

# Écrire dans le volume
kubectl exec empty-dir-pod -c app -- sh -c "echo 'test' > /cache/test.txt"

# Lire depuis le volume
kubectl exec empty-dir-pod -c app -- cat /cache/test.txt

Résumé​

Dans ce chapitre, vous avez appris:

Volumes éphémères: emptyDir (disque) et tmpfs (RAM)
emptyDir: Créé au démarrage, supprimé à la fin, partagé entre conteneurs
tmpfs: Stocké en RAM, très rapide, supprimé au redémarrage du node
Cas d'usage: Cache, fichiers temporaires, données partagées
Limitations: Taille limitée, durée de vie liée au Pod
Bonnes pratiques: Définir sizeLimit, choisir selon les besoins


Prochaines Étapes​

Chapitre 6.2: PersistentVolumes et PersistentVolumeClaims
Lab 6.1: Volumes Éphémères et emptyDir


Chapitre créé le: Décembre 2024