DirectPV : Gérer le stockage directement attaché dans Kubernetes
Introduction
DirectPV est un gestionnaire de volumes persistants distribués pour Kubernetes. Il s'agit d'un pilote CSI (Container Storage Interface) open source qui permet de découvrir, formater, monter, planifier et surveiller les disques sur des serveurs. DirectPV est conçu pour être léger et extensible à des dizaines de milliers de disques.
Architecture
DirectPV est composé de trois composants principaux :
-
Contrôleur: Le contrôleur est responsable de la gestion globale du système DirectPV. Il gère la découverte des disques, l'allocation des volumes persistants et la surveillance de l'état du système.
-
Pilote de nœud: Le pilote de nœud est installé sur chaque nœud du cluster Kubernetes. Il est responsable de la communication avec les disques locaux et de l'exécution des commandes du contrôleur.
-
Interface utilisateur: L'interface utilisateur fournit une interface Web pour gérer les volumes persistants et surveiller l'état du système DirectPV.
Fonctionnalités
DirectPV offre les fonctionnalités suivantes :
- Découverte des disques: DirectPV découvre automatiquement les disques locaux sur chaque nœud du cluster.
- Provisionnement de volumes: DirectPV peut provisionner des volumes persistants à partir des disques locaux découverts.
- Montage des volumes: DirectPV peut monter des volumes persistants sur les pods Kubernetes.
- Planification des volumes: DirectPV peut planifier les volumes persistants sur les nœuds du cluster en fonction de divers critères, tels que l'affinité et l'isolement.
- Surveillance de l'état: DirectPV surveille l'état des disques locaux et des volumes persistants.
Avantages
DirectPV offre plusieurs avantages par rapport aux autres solutions de stockage pour Kubernetes :
- Performances: DirectPV offre des performances élevées car il évite les couches supplémentaires de réplication et de codage d'effacement.
- Simplicité: DirectPV est une solution simple et légère qui est facile à déployer et à gérer.
- Évolutivité: DirectPV est extensible à des dizaines de milliers de disques.
- Flexibilité: DirectPV peut être utilisé avec divers types de disques locaux, tels que les SSD et les HDD.
Cas d'utilisation
DirectPV est un bon choix pour les cas d'utilisation suivants :
- Stockage de données pour les applications à hautes performances: DirectPV est idéal pour les applications qui nécessitent des performances de stockage élevées, telles que les bases de données et les systèmes de traitement de fichiers.
- Stockage local pour les charges de travail sensibles à la latence: DirectPV peut être utilisé pour fournir un stockage local à faible latence pour les charges de travail sensibles à la latence, telles que les applications de streaming vidéo.
- Stockage temporaire pour les données intermédiaires: DirectPV peut être utilisé pour fournir un stockage temporaire pour les données intermédiaires, telles que les fichiers journaux et les données temporaires.
En pratique
Installation de directpv
via krew
kubectl krew install directpv
Déploiement de directpv dans le cluster
kubectl directpv install
Vérification du déploiement
kubectl get po -n directpv
Découverte des disques disponibles
kubectl directpv discover
directpv découvre tous les diques disponibles sur les noeuds (non montés, non formatés)
La découverte génère un fichier un fichier drives.yaml
qui permettra a directpv d'initialiser les disques et les rendre utilisables par le csi
Exemple de fichier `drives.yaml
version: v1
nodes:
- name: capi-hpc-md-0-2j5nk-b266g
drives:
- id: 252:32$09pFOBYG6nHf4U3FLz92YWPwfJsA8lmRu9W3yo+Wwiw=
name: vdc
size: 107374182400
make: ""
select: "yes"
- name: capi-hpc-md-1-s748l-5q4zs
drives:
- id: 252:32$P8CegyO9QTmsQTZj4nozg8LeSiqzo9ju+kEQogzn/dc=
name: vdc
size: 107374182400
make: ""
select: "yes"
Initialisation des disques*
kubectl directpv init drives.yaml --dangerous
Informations sur les disques et volumes
kubectl directpv info
Une nouvelle classe de stockage a été créée
la classe de stockage directpv-min-io
a été créée. C'est une classe de stokage qui permet de créer directement les pv à partir d'un claim (pvc)
kubectl get sc
Patch de la classe de stockage directpv-min-io pour la mettre par défauut
kubectl patch \
storageclass directpv-min-io \
-p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Création d'un PVC utilisant la classe de stockage par défaut
cat <<'EOF' | kubectl create -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-directpv-a
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
EOF
Utilisation du pvc dans un pod
cat <<'EOF' | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
name: nginx-vol
spec:
volumes:
- name: pvc-directpv-a-volume
persistentVolumeClaim:
claimName: pvc-directpv-a
containers:
- name: nginx-vol-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: pvc-directpv-a-volume
EOF
**Utilisation du pvc **
Liste des Volumes et informations
kubectl directpv list volumes
kubectl directpv info
Conclusion
DirectPV est une solution de stockage performante, simple et évolutive pour Kubernetes. Il est idéal pour les cas d'utilisation qui nécessitent des performances élevées, une faible latence ou un stockage local temporaire.
J'espère que cet article de blog vous a été utile. N'hésitez pas à me contacter si vous avez des questions.
Découvrez les derniers articles d'alter way
- kubevpn
- Kubernetes 1.32
- re:Invent 2024 : AWS mise tout sur l'IA pour son Cloud
- OVHcloud Summit 2024 : L’innovation au cœur d’un cloud souverain et performant
- Big Data & AI Paris 2024 : L'IA au cœur de toutes les transformations.
- Un retour vers l'open-source ? Vos outils DevOps préférés et leurs equivalents open-source.