Sommaire
Eh bien, on peut dire que Kubernetes a fait du chemin depuis ses débuts il y a 10 ans, n’est-ce pas ? Lancé en juin 2014 par Google, ce projet open-source avait pour but de faciliter la gestion des conteneurs logiciels au sein des applications microservices. Basé sur Borg, le service interne de gestion de conteneurs de Google capable de gérer des milliers d’instances, Kubernetes a rapidement séduit les développeurs à la recherche d’une solution pour orchestrer leurs conteneurs.
Les débuts de Kubernetes et ses limites initiales
Mais revenons un peu en arrière, en 2014. À l’époque, Kubernetes n’était qu’une option parmi tant d’autres pour gérer les conteneurs. Des projets open-source comme Apache Mesos existaient déjà, sans parler de Docker Swarm, la solution proposée par l’entreprise à l’origine de la conteneurisation. Les développeurs exploraient également des outils comme AWS ECS pour une gestion spécifique des conteneurs.
Alors, pourquoi Kubernetes a-t-il fini par s’imposer ? Était-ce une évidence dès le départ qu’il deviendrait la plateforme incontournable pour les applications cloud-natives ? Ou y avait-il des obstacles sur le chemin ?
À ses débuts, Kubernetes était seulement capable de gérer les conteneurs d’applications et d’orchestrer leur création, leur utilisation et leur suppression.
Pour commencer, il est important de souligner que Kubernetes a démarré en douceur. Bien qu’il ait été basé sur un outil utilisé par Google pour gérer un grand nombre de charges de travail et de processus, il n’était pas prêt à assumer ce rôle dans d’autres organisations dès le départ. Il était parfait pour gérer les conteneurs d’applications sans état et orchestrer leur création, leur utilisation et leur suppression. Mais il se concentrait uniquement sur les composants d’application au début.
L’évolution vers la prise en charge des workloads stateful
Cela ne correspondait pas à tous les autres éléments qui composent l’infrastructure d’une application. Bien que votre application puisse s’exécuter dans le cloud et effectuer des traitements, elle crée également des données qui doivent être stockées dans la durée. Elle doit interagir avec des sources de données existantes. Et elle doit fonctionner en toute sécurité, afin que les informations ne fuient pas et que les attaquants ne puissent pas accéder à ces composants. Ces éléments n’étaient pas pris en charge lors du lancement initial de Kubernetes. En fait, il a fallu attendre deux ans supplémentaires pour obtenir la prise en charge des StatefulSets et le lancement des Kubernetes Operators avant que ces charges de travail puissent être considérées.
Les StatefulSets ont apporté la prise en charge d’identifiants réseau stables et uniques, ainsi que de stockage persistant stable. Ils ont également permis d’effectuer des déploiements et des mises à l’échelle plus ordonnés et gracieux, ainsi que des mises à jour progressives automatisées plus ordonnées. Parallèlement, le lancement des Kubernetes Operators a permis aux développeurs de masquer la complexité liée à l’utilisation des primitives Kubernetes avec d’autres applications. Sans ces deux ajouts, l’exécution de charges de travail stateful sur Kubernetes nécessitait un sérieux piratage du noyau Kubernetes pour que les choses fonctionnent.
La communauté open-source au cœur du succès
Parallèlement, une communauté s’est constituée pour faire fonctionner efficacement les workloads stateful sur Kubernetes. Alors que les conversations autour de l’exécution de bases de données comme MySQL et PostgreSQL ont commencé sur Reddit et Stack Overflow, une collaboration plus formelle était nécessaire pour transformer ces belles idées en projets réels et durables. Des organisations comme la Data on Kubernetes community se sont réunies pour fournir le cadre approprié à cette collaboration, facilitant ainsi la contribution des entreprises et des particuliers.
Ce travail était essentiel, car il y avait beaucoup de réticences initiales à exécuter des bases de données sur Kubernetes. Pour ceux familiers avec l’approche des 12 facteurs pour la conception d’applications, les services back-end devaient être traités comme des ressources attachées. À l’époque, cela posait problème aux développeurs qui voulaient exécuter leurs applications dans des conteneurs, mais devaient ensuite gérer l’interaction avec des bases de données ou des systèmes de stockage hébergés dans différents environnements. L’approche idéale – et que nous avons aujourd’hui – est que les bases de données doivent s’exécuter dans des clusters de la même manière que les composants d’application, ce qui facilite le contrôle et la gestion de l’infrastructure à travers l’ensemble du service à partir d’un seul point.
L’ouverture à la communauté open-source a permis à Kubernetes de bénéficier de contributions et d’une acceptation accrues, favorisant son succès.
L’une des principales raisons du succès de Kubernetes a été son caractère open-source. Kubernetes a été donné à la Cloud Native Computing Foundation afin qu’il puisse être soutenu par une organisation plus large plutôt que par un seul fournisseur. Cela a permis de répartir la charge en termes de contributions et d’accroître son acceptation. Lorsque vous envisagez de parier sur une plateforme pour l’informatique cloud, choisir une solution qui n’est pas liée à un fournisseur de cloud spécifique et qui peut exécuter des conteneurs indépendamment sur n’importe lequel d’entre eux a été considéré comme un choix plus judicieux.
Cela nécessitait une communauté prête à soutenir Kubernetes en tant que projet et investie dans sa réussite. Pour construire cette communauté, Kubernetes devait être open-source, comme l’a expliqué Brendan Burns, co-créateur de Kubernetes, au podcast Dev Interrupted. Sans être open-source, les développeurs auraient eu beaucoup moins d’incitations à contribuer ou à choisir Kubernetes comme leur outil de gestion de conteneurs.
Kubernetes, le pilier des applications cloud-natives
Au fil du temps, Kubernetes est passé d’un outil parmi tant d’autres pour l’orchestration de conteneurs à devenir la plateforme incontournable pour les applications cloud-natives. Il permet aux développeurs de construire et d’exécuter leurs applications sur n’importe quelle plateforme cloud ou dans leur propre environnement de centre de données, puis de déplacer cette charge de travail vers la plateforme qu’ils souhaitent utiliser à l’avenir. Dans ce cadre, Kubernetes a évolué en passant d’un simple focus sur les composants d’application à la prise en charge de tout ce qui se trouve dans le cloud.
Les défis à relever pour Kubernetes
Kubernetes n’est cependant pas parfait. Par exemple, il a encore du travail à faire sur l’auto-scaling et la gestion des ressources comme les données et le stockage, afin que les entreprises puissent mieux contrôler leurs coûts. Mais ce travail est en cours avec le soutien de multiples entreprises et communautés, afin que tout le monde puisse en bénéficier à l’avenir.
Vers une gestion plus intelligente des ressources
L’un des défis majeurs à relever pour Kubernetes est d’améliorer sa capacité à gérer intelligemment les ressources. Actuellement, il peut être difficile pour les entreprises de contrôler leurs coûts en raison d’un manque d’outils d’auto-scaling et de gestion des ressources de stockage efficaces.
Heureusement, la communauté open-source travaille d’arrache-pied pour résoudre ces problèmes. Des projets sont en cours pour développer des fonctionnalités d’auto-scaling plus avancées, capables de s’adapter dynamiquement aux besoins en ressources des applications. De même, de nouvelles solutions de gestion du stockage sont explorées, afin de faciliter l’allocation et le dimensionnement des ressources de stockage en fonction des charges de travail.
Simplifier la complexité
Un autre défi important est de simplifier la complexité inhérente à Kubernetes. Bien que puissant, Kubernetes peut être intimidant pour les nouveaux utilisateurs, avec de nombreux concepts et ressources à maîtriser. Pour favoriser une adoption plus large, il est crucial de rendre Kubernetes plus accessible, en améliorant la documentation, en fournissant des outils d’abstraction et en renforçant la formation.
Les efforts se concentrent sur le développement d’interfaces utilisateur plus conviviales, de guides étape par étape et de ressources d’apprentissage pour aider les débutants à se familiariser avec Kubernetes. De plus, des solutions d’abstraction comme les opérateurs Kubernetes permettent de masquer une partie de la complexité sous-jacente, facilitant ainsi la gestion des charges de travail complexes.
Kubernetes, pilier incontournable de l’informatique moderne
Bien que le chemin ait été semé d’embûches, Kubernetes a réussi à s’imposer comme l’un des piliers de l’informatique moderne. En s’ouvrant à la communauté open-source et en évoluant pour prendre en charge des charges de travail de plus en plus complexes, Kubernetes est devenu indispensable pour les entreprises souhaitant déployer et gérer leurs applications cloud-natives de manière efficace.
Aujourd’hui, Kubernetes ne se contente plus de gérer des conteneurs d’applications, il offre une plateforme complète pour orchestrer l’ensemble de l’infrastructure des applications cloud-natives, des bases de données aux systèmes de stockage, en passant par les composants d’application. Grâce à sa flexibilité et à son ouverture, Kubernetes continuera sans aucun doute à évoluer pour répondre aux défis futurs de l’informatique distribuée.