: DirectPV : Avoir du stockage bloc distribué facilement dans kubernetes

thumbernail Kubernetes

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 technologies d'alter way