Formater des disques NVMe sur des nœuds IOPS
Découvrez comment partitionner et formater des disques NVMe sur des nœuds IOPS OVHcloud Managed Kubernetes
Lorsque vous commandez des nœuds IOPS pour votre cluster OVHcloud Managed Kubernetes, les disques NVMe ne sont ni partitionnés ni formatés, et ne peuvent donc pas être utilisés pour créer des volumes persistants Kubernetes. Ce tutoriel vous guide pas à pas pour partitionner et formater facilement vos disques NVMe, sur vos nœuds existants comme sur les futurs.
Pourquoi utiliser des nœuds IOPS Kubernetes ?
Les nœuds IOPS Kubernetes sont très utiles pour exécuter des applications fortement dépendantes des performances disque, car les nœuds IOPS disposent d'un ou plusieurs disques SSD NVMe locaux. Des applications comme Elasticsearch pour l'indexation ou Spark pour le big data en sont de bons exemples.
Avant de commencer
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel et de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez la documentation sur le déploiement d'une application Hello World.
Créer un daemonset pour partitionner et formater les disques NVMe disponibles
Pour vous assurer que tous vos nœuds disposant de disques NVMe sont correctement préparés, vous allez créer un daemonset. Ce daemonset crée un nouveau pod sur chaque nœud du cluster portant le label disktype=nvme. Si le nœud est un nœud IOPS et que les disques NVMe ne sont pas déjà partitionnés, le pod procède au partitionnement et au formatage des disques NVMe.
Un des grands avantages de cette méthode est que, si vous ajoutez ultérieurement un nouveau nœud IOPS au cluster, le disque sera automatiquement préparé par le daemonset dès que vous ajouterez le label disktype=nvme au nouveau nœud.
Créez un fichier format-nvme-configmap.yaml :
Dans cet exemple, les disques NVMe sont répartis en 3 partitions de taille égale. Chaque partition pourra ensuite être associée à un volume persistant Kubernetes. Vous pourrez ainsi créer trois volumes persistants NVMe locaux par nœud. Si vous avez besoin de plus ou moins de partitions, modifiez le paramètre partition_number dans la définition de la configmap.
Créez la configmap :
Créez un fichier format-nvme-daemonset.yaml :
Puis déployez le daemonset sur le cluster :
À ce stade, le daemonset ne doit avoir démarré aucun pod dans votre cluster, car aucun de vos nœuds ne porte le label disktype=nvme.
Ajoutez le label disktype=nvme sur vos nœuds IOPS pour remédier à cela. Dans cet exemple, les nœuds IOPS se nomment node-nvme-1 et node-nvme-2 ; adaptez cette commande à votre configuration.
Vous devriez maintenant avoir un pod format-nvme en cours d'exécution sur chaque nœud du cluster portant le label disktype=nvme :
En interne, tous vos nœuds IOPS devraient désormais avoir trois partitions /dev/nvme/nvme1, /dev/nvme/nvme2 et /dev/nvme/nvme3 créées sur leur disque NVMe, et ces partitions devraient être de taille égale.
Créer et utiliser un volume persistant NVMe local
Vous devez d'abord créer une nouvelle storage class. Créez un fichier local-nvme-storage-class.yaml :
Puis appliquez-la à votre cluster :
Créez ensuite un nouveau volume persistant sur la première partition de votre premier nœud IOPS, en utilisant votre storage class NVMe locale. Dans cet exemple, le nœud se nomme node-nvme-1 et la partition utilisée est la première, /dev/nvme/nvme1 ; adaptez cela à votre configuration. Pour cela, créez un fichier local-nvme-persistent-volume.yaml :
Puis appliquez-le pour créer le volume persistant :
Vous devez ensuite créer une revendication de volume persistant (persistent volume claim). Créez un fichier local-nvme-persistent-volume-claim.yaml :
Puis appliquez-le pour créer une revendication de 50Gi :
Créez maintenant un pod Nginx utilisant la revendication de volume persistant comme dossier racine web (webroot). Pour cela, créez un fichier local-nvme-nginx-pod.yaml :
Puis déployez le pod Nginx :
Accédez au conteneur Nginx pour créer un fichier sur le volume persistant NVMe :
Créez un nouveau fichier index.html :
puis quittez le conteneur Nginx :
Vérifiez ensuite l'accès à votre nouvelle page web :
et ouvrez l'URL http://localhost:8001/api/v1/namespaces/default/pods/http:local-nvme-nginx:/proxy/
Vérifiez maintenant la persistance des données en supprimant le pod Nginx actuel :
Puis recréez-en un nouveau :
Vous devez maintenant vérifier que votre page web est toujours accessible :
et accédez à la même URL http://localhost:8001/api/v1/namespaces/default/pods/http:local-nvme-nginx:/proxy/
Nettoyer votre cluster
Supprimez le pod Nginx utilisé pour les tests :
Supprimez la revendication de volume persistant utilisée pour les tests :
Enfin, supprimez le volume persistant utilisé pour les tests :
Bien que le volume persistant soit supprimé du cluster Kubernetes, les données restent présentes sur le disque du nœud.
Identifiez le nom du pod format-nvme en cours d'exécution sur votre nœud node-nvme-1 :
Puis accédez au conteneur :
Vous pouvez maintenant reformater le volume logique /dev/nvme/nvme1 :
Puis quittez le conteneur :
Si vous ne prévoyez pas d'ajouter d'autres nœuds IOPS à votre cluster, supprimez le daemonset. Il reste bien sûr possible de le redéployer plus tard sans reformater automatiquement les partitions existantes.
Aller plus loin
-
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.