Les trois bénéfices inattendus de Kubernetes pour le stockage
En containers, les opérations de stockage passent par une couche d’abstraction qui a pour conséquence de simplifier la technique, réduire les ressources à acheter et accélérer l’administration.
Déployer ses applications en containers présente le bénéfice inattendu de réduire les investissements sur le stockage : il y a moins de capacité à acheter, moins de temps à y consacrer et moins de compétences à avoir. Et pour cause, en containers, les applications « montent » des fichiers qui viennent tous d’un pool commun.
Cette fonction de présenter à chaque container un jeu de fichiers que seul lui pourra utiliser le temps de son exécution est assurée par l’ordonnanceur Kubernetes. Ce dernier est relié via des plug-ins à du stockage classique – disques locaux, NAS, baies de disques SAN... – dont la complexité n’a absolument pas à être traitée par les containers. Ces plugins sont appelés des CSI (Container Storage Interface).
Une approche technique plus simple
Il n’est pas nécessaire de chercher pendant des lustres quel fournisseur propose le CNI et la baie de stockage les plus adaptés : les applications en containers fonctionneront aussi bien avec le stockage déjà présent dans le datacenter.
« La première bonne pratique à avoir avec des applications en containers est de cesser de travailler avec des silos techniques au niveau de l’infrastructure. Concernant le stockage, on gagnera à passer par un SDS (Software Defined Storage, N.D.R.), c’est-à-dire une couche d’abstraction qui masque la complexité de chaque équipement matériel et qui les réunit tous dans un pool de capacité-disque global », indique Eric Drobisewski, lui-même architecte système chez la compagnie d’assurance américaine Liberty Mutual Insurance.
« Le Software Defined, pour le stockage comme pour les serveurs et le réseau, est de toute façon clé pour adopter un modèle de déploiement et d’administration plus dynamique, piloté par du code, accessible via des APIs. Ce modèle simplifie les opérations, réduit la sur-allocation de ressources et accélère la réactivité des entreprises », ajoute-t-il.
Moins de stockage à acheter et à maintenir
Les applications en containers économisent du stockage puisqu’il faut une seule image de système d’exploitation pour toutes les applications exécutées sur un nœud, contre une image d’OS par application dans le cas des machines virtuelles. Mais il y a mieux encore.
En containers, chaque copie d’une application n’a plus besoin d’avoir un disque local pour démarrer. Toutes les copies sont lancées depuis le même volume, situé ailleurs sur le réseau. Pour Michael Fisher, directeur des produits de monitoring chez l’éditeur OpsRamp, il y a l’opportunité d’un cercle vertueux : « En concevant des applications éphémères – c’est-à-dire qui, à n’importe quel moment, peuvent fonctionner comme si elles venaient juste de démarrer – on élimine la nécessité d’avoir un stockage local pour enregistrer l’état en cours de l’application. Donc on réduit la quantité totale de stockage à acheter ou à maintenir en production. Et en réduisant le stockage, on oblige finalement les développeurs à produire des applications bien plus résistantes aux incidents. »
Cela dit, Eric Drobisewski met en garde contre les décisions dogmatiques. Nombre d’applications nécessitent d’être persistantes et devront donc être exécutées sur des nœuds où le Kubelet, le moteur Kubernetes qui les orchestre localement, enregistre leur état dans un stockage physique, via une CSI prévue à cet effet.
Une répartition de charge sans effort
Bien qu’ils aient été conçus pour exécuter des microservices, sans état à sauvegarder, les containers se montrent aussi bien plus avantageux que les serveurs physiques ou que les machines virtuelles lorsque les applications doivent lire ou écrire des données. En effet, Kubernetes permet d’automatiser l’activation et l’extinction de containers sur tel ou tel nœud serveur selon la charge de travail qu’il subit.
« Cette répartition de charge ne concerne pas que la puissance de calcul, mais également les entrées-sorties. En ce qui concerne le stockage, cela signifie que lorsqu’un nœud accède de manière trop intensive à un volume, le système va automatiquement répartir les containers sur d’autres nœuds pour fluidifier le trafic. Et cela sans même que les ingénieurs du stockage n’aient à intervenir pour prévoir des liaisons directes entre certains nœuds et certaines baies de stockage », commente Stanley Zaffos, directeur Produits chez le fournisseur de solutions de stockage Infinidat.