Configurer des volumes persistants multi-attach avec Enterprise File Storage
Découvrez comment configurer un volume persistant multi-attach avec notre solution Enterprise File Storage
Objectif
OVHcloud Managed Kubernetes propose actuellement du Block Storage pour les volumes persistants par défaut, ce qui peut ne pas convenir aux applications nécessitant un système de fichiers partagé entre plusieurs nœuds. Ce tutoriel montre comment configurer un Persistent Volume Kubernetes partagé (AccessMode ReadWriteMany ou RWX) en utilisant OVHcloud Enterprise File Storage comme backend de stockage.
Prérequis
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son utilisation. Pour en savoir plus sur ces sujets, consultez la documentation déployer une application Hello World.
Ce tutoriel suppose également que vous disposez déjà d'un service OVHcloud Enterprise File Storage. Si ce n'est pas le cas, vous pouvez .
Vous devez également avoir Helm installé sur votre poste de travail. Consultez le tutoriel comment installer Helm sur OVHcloud Managed Kubernetes Service.
En pratique
Étape 1 - Créer un volume et autoriser votre Managed Kubernetes Service à y accéder
Votre service Enterprise File Storage peut exposer plusieurs volumes et prend en charge différents protocoles. Chaque volume n'est accessible que depuis une plage d'IP spécifique. Vous allez créer un nouveau volume EFS et le rendre accessible depuis vos worker nodes Kubernetes.
Vous trouverez plus d'informations sur notre produit Enterprise File Storage en cliquant ici.
Accédez à l'interface d'OVHcloud Enterprise File Storage en cliquant sur le menu Stockage et sauvegarde puis Enterprise File Storage dans la .
Cliquez sur votre service Enterprise File Storage, puis sur l'onglet Volumes. Cliquez sur le bouton Créer un volume et créez le nouveau volume Enterprise File Storage avec le contenu suivant :

Fournissez les paramètres suivants pour créer un volume :
La taille du volume doit être adaptée à vos besoins. Pour ce guide, nous définissons une taille de volume de 100 Gio.
Une fois votre volume créé, cliquez sur son ID et sélectionnez Access Control List.
Saisissez les IP publiques de vos nœuds et/ou l'IP publique de votre Gateway Public Cloud dans les ACL du volume. Cela garantira que vos worker nodes Kubernetes peuvent accéder au service de stockage.
Votre cluster est installé avec un réseau public, ou un réseau privé sans utiliser une OVHcloud Internet Gateway ou une gateway personnalisée comme route par défaut
Une fois le volume créé, vous devez autoriser vos nœuds Kubernetes à y accéder.
Récupérez l'IP de vos nœuds Kubernetes :
Votre cluster est installé avec un réseau privé et une route par défaut via votre réseau privé (OVHcloud Internet Gateway/OpenStack Router ou une gateway personnalisée)
Vos nœuds étant configurés pour être routés par la gateway du réseau privé, vous devez ajouter l'adresse IP de la gateway aux ACL.
En utilisant une Gateway Public Cloud avec votre Managed Kubernetes Service, les IP publiques sur les nœuds ne servent qu'à des fins d'administration : Limites connues de MKS
Vous pouvez récupérer l'IP publique de votre OVHcloud Internet Gateway en naviguant dans l'espace client OVHcloud :
Public Cloud > sélectionnez votre tenant > Réseau / Gateway > IP publique
Vous pouvez également récupérer l'IP publique de votre OVHcloud Internet Gateway via l'API suivante :
Si vous n'êtes pas familier avec l'API OVHcloud, consultez notre guide Premiers pas avec l'API OVHcloud.
Si vous souhaitez utiliser votre cluster Kubernetes pour connaître l'IP publique de votre Gateway, vous pouvez exécuter cette commande :
Cette commande va créer un pod temporaire et ouvrir une console.
Vous devrez peut-être attendre un peu que le pod soit créé. Une fois le shell affiché, vous pouvez exécuter cette commande :
L'IP publique de la Gateway que vous utilisez devrait s'afficher.
Cliquez sur le menu Manage IP Access (ACL) de votre volume nouvellement créé :

Ajoutez soit les IP des nœuds une par une, soit l'IP publique de la Gateway selon votre configuration :

Vous devriez maintenant obtenir quelque chose de similaire à ceci :

Étape 2 - Configurer Kubernetes pour utiliser votre volume EFS nouvellement créé
Votre cluster Kubernetes a besoin de quelques composants logiciels supplémentaires pour utiliser le volume Enterprise File Storage. Vous allez les installer, puis créer un premier volume partagé entre plusieurs pods.
Pour cela, installez le csi-driver-nfs :
Vérifiez votre installation :
Étape 3 - Créer l'objet StorageClass NFS
Créez un fichier efs-storageclass.yaml :
N'oubliez pas de remplacer [EFS_IP], [EFS_PATH] et [PARTITION_NAME] par les informations correctes.
EFS_IP correspond à l'IP privée de votre Enterprise File Storage, et EFS_PATH au chemin d'accès à votre volume.
Le paramètre tcp indique au montage NFS d'utiliser le protocole TCP.
Appliquez ensuite le fichier YAML pour créer la StorageClass :
Étape 4 - Créer et utiliser un volume persistant NFS
Créez un fichier efs-persistent-volume-claim.yaml :
Appliquez ce fichier pour créer la persistent volume claim :
Vous pouvez obtenir plus d'informations sur la PVC en exécutant cette commande :
En lisant les événements de cette PersistentVolumeClaim, vous constatez que votre PVC a bien été provisionnée depuis votre Enterprise File Storage.
Si vous rencontrez des erreurs telles que :
ou similaire à :
Cela peut indiquer un problème dans la configuration des ACL d'Enterprise File Storage. Vérifiez les IP autorisées à accéder à la partition souhaitée dans la liste des ACL.
Si le nombre de PersistentVolumes à planifier simultanément est trop important, certains ralentissements peuvent survenir et la création des volumes peut être retardée.
Créez maintenant un DaemonSet de pods Nginx utilisant la persistent volume claim comme dossier racine web (webroot).
L'utilisation d'un DaemonSet créera un pod sur chaque nœud déployé, ce qui facilite le dépannage en cas de mauvaise configuration ou permet d'isoler un problème sur un nœud.
Créez un fichier nommé nginx-daemonset.yaml :
Appliquez ce fichier pour créer le DaemonSet Nginx :
Les deux pods devraient être en cours d'exécution :
Entrez dans le premier pod et conteneur Nginx pour vérifier que le volume Enterprise File Storage est correctement monté, et créez un fichier sur le volume persistant NFS :
Vous allez maintenant vérifier que le volume EFS est correctement partagé entre les pods déployés.
Créez un nouveau fichier index.html :
Puis quittez le conteneur Nginx :
Essayez d'accéder à votre nouvelle page web :
Générez l'URL à ouvrir dans votre navigateur :
Vous pouvez ouvrir l'URL affichée pour accéder au Service Nginx.
Vérifiez maintenant si les données sont partagées avec le second pod (si vous avez déployé plus d'un nœud).
Vous pouvez ouvrir l'URL affichée pour accéder au Service Nginx sur l'autre pod.
Comme vous pouvez le constater, les données sont correctement partagées entre les deux pods Nginx exécutés sur deux nœuds Kubernetes différents.
Félicitations, vous avez configuré avec succès un volume persistant multi-attach avec OVHcloud Enterprise File Storage !
Aller plus loin
Pour en savoir plus sur l'utilisation pratique de votre cluster Kubernetes, consultez notre site de documentation OVHcloud Managed Kubernetes.
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
Échangez avec notre communauté d'utilisateurs.