Stockage persistant
Par défaut, les données stockées dans un conteneur sont éphémères : elles disparaissent lorsque le conteneur est supprimé ou redémarré. Pour conserver vos données de façon permanente, vous devez utiliser un stockage persistant.
🗄️ Qu’est-ce que le stockage persistant ?
Le stockage persistant permet de conserver vos données indépendamment du cycle de vie de vos conteneurs. Contrairement au stockage éphémère intégré aux conteneurs, le stockage persistant :
- Survit aux redémarrages de conteneurs
- Peut être partagé entre plusieurs conteneurs
- Est sauvegardé automatiquement
- Persiste même si le Pod est supprimé
Cas d’usage typiques
| Type d’application | Type de stockage | Raison |
|---|---|---|
| Base de données | Persistant | Conservation des données critiques |
| Site web statique | Éphémère | Contenu régénérable |
| Stockage de fichiers | Persistant | Partage entre utilisateurs |
| Cache temporaire | Éphémère | Données reconstructibles |
🔧 Modes d’accès : RWO vs RWX
Kontainers propose deux modes d’accès au stockage persistant :
ReadWriteOnce (RWO)
Utilisation : Un seul Pod peut écrire sur le volume à la fois
Caractéristiques :
- Accès exclusif en écriture
- Performance optimale
- Idéal pour bases de données
- Plus sécurisé
Exemples : MySQL, PostgreSQL, Redis, MongoDB
ReadWriteMany (RWX)
Utilisation : Plusieurs Pods peuvent écrire simultanément sur le volume
Caractéristiques :
- Accès partagé en écriture
- Système de fichiers distribué
- Idéal pour applications collaboratives
- Permet la scalabilité horizontale
Exemples : WordPress, applications de partage de fichiers, CMS
📦 Classes de stockage disponibles
Kontainers met à votre disposition deux classes de stockage optimisées :
ceph-block-rwo
| Propriété | Valeur |
|---|---|
| Type | Stockage bloc Ceph |
| Mode d’accès | ReadWriteOnce (RWO) |
| Performance | Haute performance |
| Cas d’usage | Bases de données, applications critiques |
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: database-storagespec: accessModes: - ReadWriteOnce storageClassName: ceph-block-rwo resources: requests: storage: 20Giceph-filesystem-rwx
| Propriété | Valeur |
|---|---|
| Type | Système de fichiers Ceph |
| Mode d’accès | ReadWriteMany (RWX) |
| Performance | Performance normale |
| Cas d’usage | Applications web, partage de fichiers |
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: shared-filesspec: accessModes: - ReadWriteMany storageClassName: ceph-filesystem-rwx resources: requests: storage: 50Gi📖 Exemples d’applications
MySQL avec stockage RWO
Pourquoi RWO ? MySQL nécessite un accès exclusif à ses fichiers de données pour garantir la cohérence.
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: mysql-dataspec: accessModes: - ReadWriteOnce storageClassName: ceph-block-rwo resources: requests: storage: 10Gi---apiVersion: apps/v1kind: Deploymentmetadata: name: mysqlspec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:8.0 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: password volumeMounts: - name: mysql-storage mountPath: /var/lib/mysql ports: - containerPort: 3306 volumes: - name: mysql-storage persistentVolumeClaim: claimName: mysql-dataWordPress avec stockage RWX
Pourquoi RWX ? WordPress peut avoir plusieurs replicas qui partagent les fichiers uploadés et les thèmes.
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: wordpress-filesspec: accessModes: - ReadWriteMany storageClassName: ceph-filesystem-rwx resources: requests: storage: 20Gi---apiVersion: apps/v1kind: Deploymentmetadata: name: wordpressspec: replicas: 3 selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: containers: - name: wordpress image: wordpress:latest env: - name: WORDPRESS_DB_HOST value: mysql:3306 - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: wordpress-secret key: db-password volumeMounts: - name: wordpress-storage mountPath: /var/www/html ports: - containerPort: 80 volumes: - name: wordpress-storage persistentVolumeClaim: claimName: wordpress-files📈 Gestion de l’espace de stockage
Augmenter la taille d’un PVC
Vous pouvez augmenter la taille de vos PersistentVolumeClaims de deux façons :
-
Accédez à Storage
Dans votre namespace : Storage › PersistentVolumeClaims
-
Sélectionnez votre PVC
Cliquez sur le menu ”⋯” du PVC à modifier
-
Nouvelle taille
Saisissez la nouvelle taille (ex: 50Gi)
-
Redémarrez les Pods
Redéployez vos Pods pour qu’ils détectent le nouvel espace
-
Éditez le PVC
Fenêtre de terminal kubectl edit pvc mon-pvc -n mon-namespace -
Modifiez la taille
spec:resources:requests:storage: 50Gi # Augmenté de 20Gi à 50Gi -
Sauvegardez et redéployez
Fenêtre de terminal kubectl rollout restart deployment/mon-app -n mon-namespace
💾 Sauvegardes automatiques
Système de sauvegarde
Kontainers assure la protection de vos données avec un système de sauvegarde robuste :
| Aspect | Détail |
|---|---|
| Fréquence | Automatique chaque nuit |
| Redondance géographique | Stockage à +400km du site principal |
| Provider différent | Infrastructure indépendante |
Sécurité et disponibilité
- Chiffrement : Toutes les sauvegardes sont chiffrées
- Tests réguliers : Vérification de l’intégrité des sauvegardes
- Monitoring : Surveillance continue du processus
Demander une restauration
Pour restaurer des données depuis une sauvegarde :
-
Contactez le support
Créez un ticket sur blackswift.link/ticket
-
Précisez les informations
- Nom du PVC concerné
- Date de sauvegarde souhaitée
- Namespace et organisation
- Raison de la restauration
-
Validation
Notre équipe valide la demande et programme la restauration
-
Notification
Vous êtes informé une fois la restauration terminée
🛡️ Bonnes pratiques
Choix du mode d’accès
-
Utilisez RWO pour :
- Bases de données (MySQL, PostgreSQL, MongoDB)
- Applications nécessitant un accès exclusif
- Optimisation des performances
-
Utilisez RWX pour :
- Applications web avec plusieurs replicas
- Partage de fichiers entre conteneurs
- CMS et applications collaboratives
Dimensionnement
- Surveillez l’utilisation : Monitorer l’espace disque
- Anticipez la croissance : Prévoir l’évolution des besoins
- Évitez le sur-dimensionnement : Optimiser les coûts
🆘 Dépannage
PVC reste en “Pending”
Causes possibles :
- Quota de stockage dépassé
- Classe de stockage incorrecte
Solutions :
-
Vérifier les événements :
Fenêtre de terminal kubectl describe pvc mon-pvc -n mon-namespace -
Vérifier les quotas sur votre espace Monitoring
Erreur “No space left on device”
Cause : Volume plein Solutions :
- Augmenter la taille du PVC
- Nettoyer les fichiers inutiles
- Optimiser l’application
Pod ne peut pas accéder au stockage
Causes possibles :
- Permissions incorrectes
- PVC non créé
- Mode d’accès inadapté (RWO/RWX)
Solution :
# Vérifier les montageskubectl describe pod mon-pod -n mon-namespace