Configurer des volumes persistants multi-attach avec OVHcloud NAS-HA
Découvrez comment configurer un volume persistant multi-attach avec OVHcloud NAS-HA
Objectif
OVHcloud Managed Kubernetes intègre nativement le Block Storage comme volumes persistants. Cette technologie peut cependant ne pas convenir à certaines applications legacy ou non cloud-native, qui nécessitent souvent de partager ces données persistantes entre différents pods sur plusieurs worker nodes (ReadWriteMany ou RWX). Si vous devez faire cela pour certains de vos workloads, une solution consiste à utiliser des volumes NFS. OVHcloud NAS-HA est une solution managée qui vous permet de configurer facilement un serveur NFS et plusieurs volumes NFS. Dans ce tutoriel, nous allons voir comment configurer votre cluster OVHcloud Managed Kubernetes pour utiliser OVHcloud NAS-HA comme fournisseur NFS pour les Persistent Volumes Kubernetes.
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 NAS-HA. Si ce n'est pas le cas, vous pouvez en commander un dans l'espace client OVHcloud.
Vous devez également avoir Helm installé sur votre poste de travail ; consultez le tutoriel comment installer Helm sur OVHcloud Managed Kubernetes Service.
Accès à l'espace client OVHcloud
- Lien direct :
- Pour accéder à vos services :
Bare Metal Cloud>NAS-HA> Sélectionnez votre NAS-HA
En pratique
Étape 1 - Créer une partition et autoriser votre Managed Kubernetes Service à y accéder
Votre NAS-HA peut exposer plusieurs partitions et prend en charge différents protocoles. Chaque partition n'est accessible que depuis une plage d'IP spécifique. Vous allez en créer une exposant NFS et la rendre accessible depuis vos worker nodes Kubernetes.
Cliquez sur votre NAS, puis sur l'onglet Partitions, puis sur le bouton Créer une partition. Renseignez le nom de la partition, définissez la taille souhaitée et sélectionnez NFS comme protocole, puis confirmez pour créer la partition.
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 la partition créée, vous devez autoriser vos nœuds Kubernetes à accéder à la partition nouvellement créée.
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 > Network / Gateway > Public IP
Vous pouvez également récupérer l'IP publique de votre OVHcloud Internet Gateway en utilisant nos API :
Vous trouverez plus de détails sur l'utilisation des API OVHcloud dans ce guide : Premiers pas avec les API OVHcloud
Si vous souhaitez utiliser votre cluster Kubernetes pour connaître l'IP publique de votre Gateway, vous pouvez exécuter ces commandes :
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 Access de votre partition nouvellement créée. Ajoutez soit les IP des nœuds une par une, soit l'IP publique de la Gateway selon votre configuration. Pour chaque entrée, cliquez sur Add an access, saisissez l'adresse IP, puis confirmez.
Une fois les règles d'accès enregistrées, notez l'IP du zpool (ZPOOL_IP), le nom du zpool (ZPOOL_NAME) et le nom de la partition (PARTITION_NAME) affichés sur la page de détails de la partition.
Dans cet exemple, notre ZPOOL_IP est 10.201.18.33, notre ZPOOL_NAME est zpool-127659, et notre PARTITION_NAME est kubernetes. Adaptez ces valeurs en conséquence dans les étapes suivantes.
Étape 2 - Configurer Kubernetes pour utiliser votre partition NFS nouvellement créée
Votre cluster Kubernetes a besoin de quelques composants logiciels supplémentaires pour utiliser la partition NFS. 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 nfs-storageclass.yaml :
N'oubliez pas de remplacer [ZPOOL_IP], [ZPOOL_NAME] et [PARTITION_NAME] par les informations correctes.
Les paramètres rsize et wsize définissent le nombre maximal d'octets de données que le client NFS peut recevoir pour chaque requête READ ou WRITE.
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 nfs-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 :
Le provisioner externe (ici le NAS-HA) provisionne votre volume. Attendez un peu, le volume devrait apparaître :
Si vous rencontrez des erreurs telles que :
ou telles que :
Cela signifie le plus souvent qu'un problème est survenu avec les ACL du NAS-HA. 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 zpool est correctement monté, et créez un fichier sur le volume persistant NFS :
Vérifiez que le zpool est monté sur le pod Nginx :
Vous pouvez tester les IOPS et la vitesse du NAS-HA en installant et en exécutant l'outil FIO dans un conteneur :
Puis en exécutant ces commandes (n'oubliez pas de vous déplacer dans le dossier monté depuis le NAS-HA) :
À la fin du benchmark, vous devriez obtenir un résultat comme celui-ci :
Vous allez maintenant vérifier que le NAS-HA 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 NAS-HA !
Aller plus loin
Pour en savoir plus sur l'utilisation pratique de votre cluster Kubernetes, consultez notre site de documentation OVHcloud Managed Kubernetes.
- Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
Échangez avec notre communauté d'utilisateurs.