Kubernetes est un système open source permettant d’automatiser le déploiement, la montée en charge et la gestion des applications conteneurisées, conçu à l’origine par Google
Kubernetes est une plateforme open source d’orchestration de containers créé par Google. Découvrez son utilité, son fonctionnement, ainsi que ses différences avec Docker.
Les containers sont une méthode de virtualisation de système d’exploitationpermettant de lancer une application et ses dépendances à travers un ensemble de processus isolés du reste du système. Cette méthode permet d’assurer le déploiement rapide et stable des applications dans n’importe quel environnement informatique.
En plein essor depuis plusieurs années, les containers ont modifié la façon dont nous développons, déployons et maintenons des logiciels. De par leur légèreté et leur flexibilité, ils ont permis l’apparition de nouvelles formes d’architectures d’application, consistant à constituer des applications au sein de containers séparés pour ensuite déployer ces containers sur un cluster de machines virtuelles ou physiques. Toutefois, cette nouvelle proche a créé le besoin de nouveaux outils « d’orchestration de containers » pour automatiser le déploiement, le management, le networking, le scaling et la disponibilité des applications basées sur container. Tel est le rôle de Kubernetes.
Kubernetes : qu’est-ce que c’est ?
Kubernetes est un projet Open Source créé par Google en 2015. Il permet d’automatiser le déploiement et la gestion d’applications multi-container à l’échelle. Il s’agit d’un système permettant d’exécuter et de coordonner des applications containerisées sur un cluster de machines. C’est une plateforme conçue pour gérer entièrement le cycle de vie des applications et services containerisés en utilisant des méthodes de prédictibilité, de scalabilité et de haute disponibilité.
Principalement compatible avec Docker, Kubernetes peut fonctionner avec n’importe quel système de container conforme au standard Open Container Initiative en termes de formats d’images et d’environnements d’exécution. De par son caractère open source, Il sera possible d’utiliser le logiciel librement par n’importe qui, n’importe où.
Comment ça fonctionne ?
Les architectures Kubernetes reposent sur plusieurs concepts et abstractions : certaines existaient déjà auparavant, d’autres lui sont spécifiques. La principale abstraction sur laquelle repose Kubernetes est le cluster. En effet, le groupe de machines exécutant Kubernetes et les containers qu’il gère.
Un cluster Kubernetes doit avoir un master : le système qui commande et contrôle toutes les autres machines du cluster. Un cluster Kubernetes hautement disponible réplique les fonctions du master sur les différentes machines. Toutefois, seul un master à la fois exécute le controller-manager et le scheduler.
Chaque cluster contient des noeuds Kubernetes. Il peut s’agir de machines physiques ou virtuelles. Les noeuds quant à eux exécutent des pods. Les objets Kubernetes les plus basiques sont créés ou gérés. Par conséquent, chaque pod représente une seule instance d’une application ou d’un processus en cours d’exécution sur Kubernetes, et se constitue d’un ou plusieurs containers. Tous les containers sont lancés et répliqués en groupe dans le pod. Ainsi, l’utilisateur peut se concentrer sur l’application plutôt que sur les containers.
Le controller est une autre abstraction. Celle-ci gère la la création, le déploiement et la destructions des pods. En fonction des différentes applications à gérer, il existe différents pods. Une autre abstraction est le service. Elle assure la persistance des applications. En effet, le service décrit la façon dont un groupe de pods peut être accédé via le réseau.
POur finir, on dénombre d’autres composants clés de Kubernetes. Le scheduler répartit les workloads entre les noeuds pour assurer l’équilibre entre les ressources, et garantir que les déploiements correspondent aux besoins des applications. Le controller manager quant à lui assure que l’état du système (applications, workloads…) correspond à l’état désiré défini dans les paramètres de configuration Etcd.
https://www.lebigdata.fr/kubernetes-definition