Kubernetes est rapide devenir une norme de l’industrie, avec jusqu’à 94 % des organisations déployant leurs services et applications sur la plate-forme d’orchestration de conteneurs, selon une enquête. L’une des principales raisons pour lesquelles les entreprises se déploient sur Kubernetes est la standardisation, qui permet aux utilisateurs avancés de voir des gains de productivité jusqu’à deux fois supérieurs.
La standardisation sur Kubernetes donne aux organisations la possibilité de déployer n’importe quelle charge de travail, n’importe où. Mais il manquait une pièce : la technologie supposait que les charges de travail étaient éphémères, ce qui signifie que seules les charges de travail sans état pouvaient être déployées en toute sécurité sur Kubernetes. Cependant, la communauté a récemment changé de paradigme et apporté des fonctionnalités telles que StatefulSets et Storage Classes, qui rendent possible l’utilisation des données sur Kubernetes.
Bien qu’il soit possible d’exécuter des charges de travail avec état sur Kubernetes, cela reste difficile. Dans cet article, je propose des moyens d’y parvenir et pourquoi cela en vaut la peine.
Faites-le progressivement
Kubernetes est en passe de devenir aussi populaire que Linux et de facto d’exécuter n’importe quelle application, n’importe où, de manière distribuée. L’utilisation de Kubernetes implique l’apprentissage de nombreux concepts et vocabulaire techniques. Par exemple, les nouveaux arrivants peuvent avoir du mal avec les nombreuses unités logiques Kubernetes telles que les conteneurs, les pods, les nœuds et les clusters.
Si vous n’exécutez pas encore Kubernetes en production, ne vous lancez pas directement dans les charges de travail de données. Au lieu de cela, commencez par déplacer des applications sans état pour éviter de perdre des données lorsque les choses tournent mal.
Si vous ne trouvez pas d’opérateur qui correspond à vos besoins, ne vous inquiétez pas, car la plupart d’entre eux sont open-source.
Comprendre les limites et les spécificités
Une fois que vous êtes familiarisé avec les concepts généraux de Kubernetes, plongez dans les spécificités des concepts avec état. Par exemple, étant donné que les applications peuvent avoir des besoins de stockage différents, tels que des exigences de performances ou de capacité, vous devez fournir le système de stockage sous-jacent approprié.
Ce que l’industrie appelle généralement des « profils » de stockage est appelé classes de stockage dans Kubernetes. Ils permettent de décrire les différents types de classes auxquelles un cluster Kubernetes peut accéder. Les classes de stockage peuvent avoir différents niveaux de qualité de service, tels que des opérations d’E/S par seconde par Gio, des politiques de sauvegarde ou des politiques arbitraires, telles que des modes de liaison et des topologies autorisées.
Un autre composant essentiel à comprendre est StatefulSet. Il s’agit de l’objet API Kubernetes utilisé pour gérer les applications avec état et offre des fonctionnalités clés telles que :
- Des identifiants de réseau stables et uniques qui vous permettent de suivre le volume, de les détacher et de les rattacher à votre guise ;
- Stockage stable et persistant pour que vos données soient en sécurité ;
- Déploiement et mise à l’échelle ordonnés et gracieux, ce qui est nécessaire pour de nombreuses opérations du jour 2.
Bien que StatefulSet ait réussi à remplacer le tristement célèbre PetSet (maintenant obsolète), il est encore imparfait et a des limites. Par exemple, le contrôleur StatefulSet n’a pas de prise en charge intégrée du redimensionnement de volume (PVC), ce qui représente un défi majeur si la taille de votre ensemble de données d’application est sur le point de dépasser la capacité de stockage actuellement allouée. Il existe des solutions de contournement, mais ces limitations doivent être comprises bien à l’avance afin que l’équipe d’ingénierie sache comment les gérer.