2 min read

Installation d'un contrôleur NFS sur Kubernetes

En quelques clics, vous serez en mesure d'utiliser un partage NFS pour vos montages persistants dynamiques (PVC).
Installation d'un contrôleur NFS sur Kubernetes

Mon précédent poste ne me laissait que très peu interagir avec Kubernetes, la faute à "pas dans le scope". Mais les choses ont changé avec mon récent changement de poste en mai dernier ; je me retrouve à nouveau en première ligne avec mes chers clusters.

Un cas de figure s'est alors présenté à moi : utiliser un partage NFS pour mes montages persistants dynamiques (PVC). Pour réaliser cette prouesse action, nous utiliserons le gestionnaire de packages de Kubernetes, à savoir Helm. C'est grâce à ce dernier que nous serons en mesure de déployer le contrôleur NFS ainsi que sa classe de stockage associée.

Ajout du repository Helm

Dans cet article, nous utiliserons le contrôleur /nfs-subdir-external-provisioner. Avant de pouvoir utiliser le chart associé, il nous fait ajouter le dépôt qui va bien :

$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

Cette commande permet d'ajouter un dépôt nommé nfs-subdir-external-provisioner ayant comme adresse https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/. Nous pouvons rafraichir la liste des paquets pour s'assurer de la bonne prise en compte de notre dépôt :

$ helm repo update
$ helm search repo nfs-subdir-external-provisioner

Installation du contrôleur

Nous partons du principe que vous avez déjà configuré votre dossier partagé NFS. Il ne reste plus qu'à instancier le chart nfs-subdir-external-provisioner avant de pouvoir instancier nos premiers PVC :

$ helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=x.x.x.x \
--set nfs.path=/exported/path \
--namespace=nfs-subdir-external-provisioner

Pensez à renseigner l'IP de votre serveur NFS ainsi que le chemin de votre dossier partagé ! Vous pouvez également utiliser un espace de nom différent si vous le souhaitez. Si tout est en ordre, vous devriez voir apparaître un pod nfs-subdir-external-provisioner :

$ kubectl get pods -n nfs-subdir-external-provisioner

Ainsi qu'une nouvelle classe de stockage nfs-client :

$ kubectl get storageclass

Création d'un volume persistant dynamique (PVC)

Il ne nous reste plus qu'à valider le bon fonctionnement du contrôleur. Pour ce faire, nous allons instancier un PVC et vérifier la création d'un PV associé :

$ cat pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: flame-pv-claim
 namespace: default
spec:
storageClassName: nfs-client
 accessModes:
  - ReadWriteOnce
 resources:
  requests:
   storage: 3Gi
$ kubectl apply -f pvc.yaml

Notez l'utilisation d'une nouvelle classe de stockage nommé nfs-client. Si tout se déroule sans encombres, vous devriez voir apparaître un PV dans le même espace de nom que votre PVC :

$ kubectl get pv

Si vous constatez l'apparition d'un nouveau PV, alors félicitations ! Dans le cas contraire, il ne vous reste plus qu'à consulter les journaux du contrôleur pour trouver une erreur :

$ kubectl logs nfs-subdir-external-provisioner-bd9bf7c77-tc4h2 -n nfs-subdir-external-provisioner