Persistent volumes

Les volumes persistants Kubernetes sont des objets qui vont définir des espaces de stockage qui pourront être partagés par vos applications et conteneurs afin d’écrire des données de manière pérène.

Ces espaces de stockage peuvent avoir plusieurs formes:

  • Partages NFS
  • Volumes iSCSI
  • Volumes GCE (Google Cloud) ou EBS (AWS)
  • CEPH
  • Volume VMWare vSphere

Nous allons ici nous concentrer sur la partie NFS afin de bien comprendre le concept.

Prérequis

Avant de débuter l’implémentation, créez un partage NFS sur un serveur externe au cluster quelconque mais accessible par vos Kubelets via le réseau classique.

Notre partage d’exemple sera le suivant: 10.0.0.200:/mnt/kubernetes/pv01

Le montage NFS n’a pas a être réalisé sur votre infrastructure, les Kubelets se chargeront de le faire lorsqu’ils en auront besoin.

Persistent Volume (pv)

Le persistent volume est la définition d’un espace de stockage physique. Il définit les caractéristiques du montage NFS, le mode d’utilisation du montage (ReadOnlyMany, ReadWriteOnce, ReadWriteMany), sa volumétrie et une reclaim policy.

Précisons les modes d’utilisation:

  • ReadOnlyMany: tous les pods seront en read-only sur le volume.
  • ReadWriteOnce: un pod pourra écrire sur le volume, les autres seront en lecture.
  • ReadWriteMany: tous les pods pourront écrire sur le volume.

La reclaim policy s’applique lorsque le volume n’est plus utilisé par une claim (nous détaillerons juste après ce qu’est une claim).

Il existe 3 modes qui dépendent du type de volume utilisé:

  • Retaining (par défaut): les données persistent si personne ne les utilise.
  • Recycling: les données sont détruites si plus personne ne les utilise. Le volume devient de nouveau disponible par la suite. Cette méthode est obsolète.
  • Deleting: le volume est supprimé (ce n’est pas supporté par tous les types, NFS ne le supporte pas).