Kubernetes est un système open source permettant de gérer des applications dans un environnement technologique conteneur. Kubernetes automatise les processus manuels pour déployer et mettre à l'échelle des applications conteneurisées. Il peut également gérer des grappes d'applications conteneurisées, qui peuvent couvrir des clouds publics, privés et hybrides..

Le nom, Kubernetes, est inspiré de l’analogie du porte-conteneurs et s’appuie sur celle-ci pour indiquer le mot grec qui se traduit par “timonier,” comme dans celui qui doit piloter le porte-conteneurs. Kubernetes se fait aussi appeler “kube” et “K8s” qui est un numonyme, en utilisant la première lettre, la dernière lettre et le nombre de lettres entre ces lettres.

Histoire de Kubernetes

Les étiologies des mots mises à part, Kubernetes a été créé à l'origine par Google, issu d'un projet interne Borg, avec des conteneurs alimentant la technologie Google Cloud. En fait, Google affirme avoir une expérience de quinze ans en matière de conteneurs et “courir des milliards de conteneurs par semaine,” ce qui leur a donné beaucoup d’expérience dans ce logiciel. Kubernetes a ensuite été donné à la Linux Foundation en tant que technologie de base pour former la Cloud Native Computing Foundation (CNCF) en 2015..

Bien que Kubernetes soit un projet open source, il est officiellement pris en charge par Microsoft Azure et Google Cloud. Kubernetes a été initialement accepté par les premiers utilisateurs, ce qui s'est traduit par une croissance soutenue et occupe désormais une place de choix dans le secteur des logiciels de gestion des conteneurs..

Aujourd'hui, l'utilisation de plusieurs conteneurs pour une application de production réelle est devenue monnaie courante, les conteneurs étant situés sur plusieurs serveurs. Le logiciel Kubernetes permet le déploiement de ces conteneurs et leur adaptation sur plusieurs serveurs afin de correspondre à la charge de travail, y compris la planification des conteneurs sur un cluster. Cela peut également aider à gérer la santé de ces conteneurs multiples.

Déploiement de Kubernetes

Kubernetes est déployé pour un groupe de conteneurs, appelé cluster. L'un des conteneurs du cluster est désigné comme le maître du cluster, qui exécute les processus du plan de contrôle Kubernetes. Les autres conteneurs du cluster sont affectés en tant que noeuds, c’est-à-dire les ordinateurs subordonnés, qui relèvent du contrôle du maître de cluster, qui fonctionne comme un noeud final unifié..

Le maître de cluster a le contrôle total de ses nœuds, désignant leur cycle de vie, y compris en évaluant leur intégrité, ainsi qu'en contrôlant les mises à niveau et les réparations effectuées sur chaque nœud. Dans le cluster, il peut exister des conteneurs spéciaux, désignés comme agents par noeud avec des fonctions spécifiques, telles que la collecte de journaux ou la connectivité réseau intra-cluster..

La valeur par défaut pour un nœud consiste en ce qu'il dispose d'un processeur virtuel et de 3,75 Go de RAM, qui correspond au type d'ordinateur Compute Engine standard. Pour des tâches plus intensives en calcul, une plate-forme de processeur minimale de base plus élevée peut être choisie. Sachez que toutes les ressources du nœud ne peuvent pas être utilisées pour l'application pour laquelle il est conçu. Certaines de ces ressources sont plutôt nécessaires pour exécuter le moteur Kubernetes. Les ressources allouables du nœud, pouvant être utilisées pour exécuter l'application, correspondent à la différence entre le total des ressources et le montant réservé pour le moteur Kubernetes..

Par exemple, si le nœud dispose de 4 Go de RAM disponible, 25% de celle-ci sont réservés pour le moteur Kubernetes et les 75% restants peuvent être utilisés pour exécuter l'application et ne nécessitent que 20% des 4 Go de RAM suivants. le nœud a un total de 8 Go de RAM. Le moteur Kubernetes consomme moins de ressources processeur et ne réserve que 6% de la puissance de traitement du premier noyau du noeud et seulement 1% d'un second noyau désigné pour le noeud..

Le maître de cluster exécute le serveur d'API Kubernetes, qui gère les requêtes provenant d'appels d'API Kubernetes du logiciel Kubernetes. Le serveur API Kubernetes sert de «hub de communication» pour l'ensemble du cluster de conteneurs.

Caractéristiques Kubernetes

La robustesse de ses fonctionnalités contribue à la popularité de Kubernetes. Ceux-ci inclus:

  • Binpacking automatique: cela automatise le placement des conteneurs en fonction de l'utilisation la plus efficace des ressources.
  • Mise à l'échelle horizontale: les applications peuvent être agrandies ou réduites via une simple commande, ou automatisées pour correspondre à l'utilisation du processeur.
  • Déploiements et annulations automatisés: Kubernetes déploie les mises à jour des applications par étapes plutôt que toutes en même temps. Il surveille les problèmes de santé et, le cas échéant, revient automatiquement à une version plus stable afin de préserver la disponibilité..
  • Orchestration du stockage: il fonctionne avec une variété de solutions de stockage pour une flexibilité supplémentaire, du cloud local au cloud public..
  • Auto-guérison: possibilité de supprimer les conteneurs qui gèlent et de redémarrer les conteneurs qui gèlent ou échouent à leur contrôle de santé.
  • Découverte du service et équilibrage de la charge: Kubernetes peut attribuer à chaque conteneur sa propre adresse IP, avec un nom DNS et la possibilité de répartir la charge entre eux..
  • Gestion du secret et de la configuration: les applications peuvent être mises à jour sans reconstruction d'image.
  • Exécution par lots: gestion des charges de travail d'intégration continue et par lots.

Applications réelles de Kubernetes

Kubernetes est utilisé par les plus grandes entreprises, parmi lesquelles Comcast, eBay, Goldman Sachs, le New York Times et Pokemon Go, entre autres. Sling TV, fournisseur de vidéos, est un exemple d'utilisation de Kubernetes. Après son lancement en 2015, des problèmes se sont posés, les nouveaux abonnés devançant leurs ressources existantes alors qu'ils tentaient de distribuer la télévision en direct via Internet. Afin d'améliorer l'expérience de leurs clients et dans le souci d'une flexibilité accrue, pour le présent et l'avenir, la décision a été prise de passer à une stratégie de cloud hybride. Cette solution utilisait à la fois un centre de traitement de données multiple sur site VMWare, intégré à plusieurs clouds publics et contrôlé via le moteur Kubernetes..

Selon Brad Linder, évangéliste Cloud Native & Big Data de Sling TV, “Nous arrivons à l'endroit où nous pouvons déployer d'un seul clic un centre de données complet - le réseau de calcul, la journalisation et la surveillance de toutes les applications..” Il ajoute que le déploiement d’une nouvelle application prendrait plusieurs jours, ce qui peut maintenant être accompli en environ une heure via le moteur Kubernetes..

Bien que Kubernetes ait eu ses origines modestes en tant que projet interne chez Google, il a évolué pour devenir un acteur dominant des logiciels de gestion de conteneurs, sans doute favorisé par son approche open source. La puissance et la flexibilité du moteur Kubernetes explique pourquoi il est utilisé dans de nombreux secteurs différents..

  • Nous discutons également plus en détail ici de la technologie des conteneurs.