Kubernetes : définition, architecture, conseil...

Kubernetes : définition, architecture, conseil... [KUBERNETES GRATUIT] En juin 2014, Google présentait pour la première fois l'orchestrateur open source Kubernetes. Depuis, cette technologie Docker n'a cessé de s'imposer dans l'univers des containers logiciels.

Kubernetes, c'est quoi ?

Kubernetes (également appelé KS8) est un orchestrateur de containers logiciels open source. Comme son nom l'indique, il est conçu pour orchestrer des architectures de grappe(s) ou cluster(s) de containers logiciels de manière extrêmement agile, en donnant la possibilité de gérer l'allocation des ressources machine sous-jacentes à la volée. 

Développé par Google, Kubernetes est la réécriture en Go de Borg, un système de clustering fait maison utilisé par le géant américain depuis des années. Google Search, Maps, Gmail, Youtube, etc. Tous ses services reposent sur des grappes de centaines de containers pilotées par Borg. Via cette brique, Google arrête et redémarre pas moins de 2 milliards de containers chaque semaine.

Pourquoi utiliser Kubernetes ?

Kubernetes permet de se soustraire d'un cloud unique en ouvrant la possibilité de répliquer et orchestrer des applications quelle que soit la plateforme ou le cloud provider. Dans sa version 1.6, Kubernetes supporte des clusters allant jusqu'à 50 000 machines.

Quel est le lien entre Docker et Kubernetes ?

Les containers logiciels gérés par Kubernetes reposent sur la technologie Docker qui, elle-aussi, est portable d'un cloud à l'autre. Kubernetes apporte la couche d'orchestration permettant de manager des architectures applicatives fédérant plusieurs containers ou clusters (ou grappes) de containers Docker (certains supportant les serveurs web frontaux par exemple, d'autres contenant les services de l'application, d'autres encore la base de données sous-jacentes...). L'idée est de répliquer les composantes de l'application pour mieux gérer les ressources machines nécessaires à chacun en vue d'encaisser le trafic.

Quelle est l'architecture de Kubernetes ?

Le projet open source Kubernetes prône la vision d'un système d'information consolidé sur un seul meta-cluster piloté via un orchestrateur de containers unique. Une infrastructure pouvant être, dans le même temps, découpée en sous-clusters géographiques distribués sur plusieurs clouds, privés et/ou publics. Le tout dans une logique de ressources informatiques partagées.

Architecture de Kubernetes. © Capture JDN / Kubernetes

Comment utiliser Kubernetes ?

Kubernetes déploie des clusters de pods Docker (ou nœuds Docker). Après avoir été installé sur un serveur maître, Kubernetes va pouvoir coordonner les composantes de l'application à gérer (serveurs frontaux, couche applicative, base de données) en les distribuant sur plusieurs pods.

Dédié à un traitement donné, un micro-service par exemple, un pod est la plus petite unité d'un cluster Kubernetes. Un pod peut embarqué un ou plusieurs containers étroitement couplés. La fonction "Déploiement" de Kubernetes contrôle l'état de santé du pod et son redémarre le cas échéant. On utilise la commande kubectl create pour créer un Déploiement orchestrant un pod.

Derniers articles sur Kubernetes

Quelle est l'histoire de Kubernetes ?

C'est le 7 juin 2014 que le projet Kubernetes sort officiellement du bois. Ce jour-là est publié par Google le tout premier commit du projet open source sur GitHub. Il est mis en ligne par Joe Beda, alors senior staff software engineer chez Google. Il s'agit d'un des trois développeurs du groupe, avec Brendan Burns et Craig McLuckie, à l'origine de la première mouture de Kubernetes. En interne, Kubernetes est baptisé Project Seven en référence à un personnage de Star Trek : un borg devenu proche des humains qui apparaît dans la série Star Trek: Voyager. Les sept rayons de la barre à roue du polygone formant le logo de Kubernetes font référence à ce nom de code.

Google livre la version 1.0 de Kubernetes le 21 juillet 2015. Il signe en parallèle un partenariat avec la fondation Linux. L'accord donne naissance à la Cloud Native Foundation qui aura pour vocation de fournir une structure de financement et une gouvernance communautaire au projet open source. Depuis, les contributeurs au code de Kubernetes se pressent au portillon. Aux côtés de Google qui demeure parmi les plus impliqués, on relève également la présence de Red Hat, Microsoft ou encore VMware.

Quels sont les offres Kubernetes en mode cloud ?

Sans surprise, Google est le premier, dès 2015, à lancer un service Kubernetes managé en mode cloud : Google Kubernetes Engine (GKE). Principal avantage de ce modèle : il évite d'avoir à installer et mettre à jour l'orchestrateur en le proposant sous la forme d'un environnement de production informatique prêt à l'emploi. En 2017, Amazon et Microsoft lui emboîtent le pas en annonçant tous deux des offres équivalentes : Amazon Elastic Container Service for Kubernetes (EKS) pour le premier et Azure Kubernetes Service (AKS) pour le second. En France, OVH lance en 2019 son propre service Kubernetes : Managed Kubernetes Service. Il est suivi en 2020 par son concitoyen Scaleway qui sort Kapsule.

En parallèle de ces offres cloud, des éditeurs commercialisent des distributions Kubernetes déployables en local. Les trois plus populaires sont signées Mirantis, Red Had (OpenShift) et Rancher.

Kubeflow pour l'IA, Knative pour l'automatisation

En 2018, Kubernetes s'est enrichi de deux briques incontournables. La première, baptisée Kubeflow, est centrée sur l'IA. Avec cette solution, Kubernetes gère l'entrainement de modèles de machine learning de manière optimisée puis assure leur portabilité vers des serveurs de production, avec à la clé la garantie d'un résultat équivalent de bout en bout.

Seconde brique : Knative. Adjoignant à Kubernetes une couche de platform as a service, elle rend transparent le déploiement d'applications. Avec Knative, les développeurs s'affranchissent des couches basses de Kubernetes en bénéficiant d'un management automatisé. Ils peuvent ainsi se concentrer sur le code (lire l'article : Avec Knative, Google fait de Kubernetes une plateforme).

Qu'en est-il du taux de pénétration de Kubernetes ?

D'après l'éditeur américain Datadog, l'orchestrateur était implémenté fin 2018 par environ 33% des organisations équipées d'environnements containérisés sous Docker, contre 23% un an auparavant. Selon une étude de Portworx (groupe Pure) publiée en mai 2021, l'adoption de Kubernetes s'est intensifié avec la crise du Covid (voir infographie ci-dessous). Datadog constate que l'adoption de Kubernetes se fait désormais majoritairement au profit des offres de Kubernetes as a service. D'après le baromètre annuel de l'éditeur publié en 2021, 90% des déploiements Kubernetes sont désormais réalisés en s'adossant à ce type de service.  

DevOps