Conteneurs

Kubernetes, qu'est-ce que c'est ?

Kubernetes, k8s (pour k, 8 caractères, s) ou encore « kube », est une plateforme Open Source qui automatise l'exploitation des conteneurs Linux. Elle permet d'éliminer de nombreux processus manuels associés au déploiement et à la mise à l'échelle des applications conteneurisées. En d'autres termes, Kubernetes vous aide à gérer facilement et efficacement des clusters au sein desquels vous aurez rassemblé des groupes d'hôtes exécutant des conteneurs Linux. Ces clusters peuvent couvrir des hôtes situés dans des clouds publics, privés ou hybrides.

À l'origine, la plateforme Kubernetes a été développée et conçue par des ingénieurs chez Google. Google était l'un des premiers contributeurs aux technologies de conteneurs Linux, et a d'ailleurs expliqué publiquement que tout dans l'entreprise fonctionnait dans des conteneurs (il s'agit de la technologie à la base des services cloud de Google). Google déploie plus de 2 milliards de conteneurs par semaine via une plateforme interne nommée Borg. Cette plateforme est la « grande sœur » de Kubernetes et toute l'expérience acquise au fil des ans lors du développement de Borg a servi de fondation à la technologie Kubernetes.

Le saviez-vous ? Les sept rayons du logo Kubernetes font référence au nom d'origine du projet, « Project Seven of Nine ».

Red Hat était l'une des premières entreprises à travailler avec Google sur le projet Kubernetes, et ce, bien avant son lancement. Red Hat est d'ailleurs devenu son deuxième contributeur principal. Google a fait don du projet Kubernetes en 2015 à la toute récente Cloud Native Computing Foundation.


Pourquoi avez-vous besoin de Kubernetes ?

Les véritables applications de production s'étendent sur plusieurs conteneurs, des conteneurs qui doivent être déployés sur différents hôtes serveur. Kubernetes vous offre les outils d'orchestration et de gestion requis pour déployer des conteneurs, à grande échelle, pour ces charges de travail. Les fonctionnalités d'orchestration de Kubernetes vous permettent de créer des services applicatifs sur plusieurs conteneurs, de planifier l'exécution de ces conteneurs dans un cluster, de les mettre à l'échelle et de gérer leur intégrité au fil du temps.

Kubernetes doit pouvoir s'intégrer aux services de mise en réseau, de stockage, de sécurité, de télémétrie, entre autres, pour fournir une infrastructure de conteneurs complète.

Kubernetes explained - diagram

Bien sûr, tout dépend de la manière dont vous utilisez les conteneurs dans votre environnement. Une application de conteneurs Linux rudimentaire les traite comme des machines virtuelles rapides et efficaces. Mais une fois que vous évoluez vers un environnement de production et multipliez le nombre d'applications, surgit le besoin de plusieurs conteneurs colocalisés qui fonctionnent ensemble pour fournir des services individuels. Le nombre de conteneurs dans votre environnement augmente alors significativement et l'accumulation de ces conteneurs complexifie votre infrastructure.

Kubernetes vous permet de résoudre de nombreux problèmes courants liés à la prolifération des conteneurs en les triant au sein d'un « pod ». Ces pods ajoutent une couche d'abstraction aux groupes de conteneurs, ce qui vous aide à planifier les charges de travail et à fournir les services nécessaires (réseau, stockage, etc.) à ces conteneurs. D'autres composants de Kubernetes vous aident à équilibrer la charge sur ces pods et à vous assurer que vous disposez de suffisamment de conteneurs pour exécuter vos charges de travail.

Avec une bonne mise en œuvre de Kubernetes, et le soutien d'autres projets Open Source tels qu'Atomic Registry, Open vSwitch, Heapster, OAuth et SELinux, vous pouvez orchestrer l'ensemble de votre infrastructure de conteneurs.


Que pouvez-vous faire avec Kubernetes ?

Le principal avantage de la technologie Kubernetes est qu'elle vous offre une plateforme dédiée à la planification et à l'exécution de conteneurs sur des clusters de machines physiques ou virtuelles. Autrement dit, elle vous aide à mettre en œuvre et à utiliser une infrastructure de conteneurs dans vos environnements de production. Kubernetes vise avant tout l'automatisation des tâches opérationnelles, c'est pourquoi cette technologie vous permet d'effectuer un grand nombre des tâches que d'autres plateformes d'applications et systèmes de gestion vous permettent déjà de faire, mais pour vos conteneurs.

Avec Kubernetes, vous pouvez :

  • orchestrer des conteneurs sur plusieurs hôtes ;
  • optimiser l'utilisation de votre matériel afin de maximiser les ressources requises pour l'exécution de vos applications d'entreprise ;
  • contrôler et automatiser les déploiements et mises à jour d'applications ;
  • monter et ajouter des systèmes de stockage pour exécuter des applications avec état ;
  • mettre à l'échelle des applications conteneurisées et leurs ressources à la volée ;
  • gérer des services de façon déclarative et garantir ainsi que les applications déployées s'exécutent toujours de la manière dont vous les avez déployées ;
  • vérifier l'intégrité de vos applications et les réparer automatiquement grâce au placement, au démarrage, à la réplication et à la mise à l'échelle automatiques.

Pour vous offrir des services orchestrés de qualité optimale, Kubernetes s'appuie sur d'autres projets. Ces projets Open Source complémentaires vous permettront de tirer pleinement parti de Kubernetes. Voici quelques-unes des pièces maîtresses de Kubernetes :

  • Registre : Atomic Registry ou Docker Registry
  • Réseau : Open vSwitch et routage périphérique intelligent
  • Télémétrie : Heapster, Kibana, Hawkular ou Elastic
  • Sécurité : LDAP, SELinux, RBAC et OAUTH avec les couches multi-clients
  • Automatisation : ajout de playbooks Ansible pour la gestion de l'installation et du cycle de vie du cluster
  • Services : catalogue riche en modèles d'applications populaires précréés

Apprenez la langue de Kubernetes

À l'instar de toute technologie, Kubernetes dispose d'une terminologie propre. Pour vous aider à mieux appréhender Kubernetes, voyons ensemble les termes les plus courants.

Maître : serveur qui contrôle les nœuds Kubernetes, sur lequel toutes les tâches sont assignées.

Nœuds : machines qui exécutent les tâches qui leur sont assignées. Ces nœuds sont contrôlés par le serveur maître Kubernetes.

Pod : groupe d'un ou de plusieurs conteneurs déployés sur un seul nœud. Tous les conteneurs d'un pod partagent une même adresse IP, un même IPC, un même nom d'hôte et d'autres ressources. Les pods séparent le réseau et le stockage du conteneur sous-jacent. Ainsi, vous pouvez déplacer vos conteneurs au sein du cluster très simplement.

Contrôleur de réplication : composant qui vérifie le nombre de copies identiques d'un pod qui doivent s'exécuter quelque part dans le cluster.

Service : élément qui dissocie les définitions de tâche des pods. Les proxies de service de Kubernetes transfèrent automatiquement les requêtes de service vers le pod pertinent, même si celui-ci a été précédemment déplacé ou remplacé.

Kubelet : service exécuté sur des nœuds qui lit les manifestes du conteneur pour s'assurer que les conteneurs définis ont démarré et fonctionnent.

kubectl : outil de configuration en ligne de commande de Kubernetes.


Utilisez Kubernetes en production

Kubernetes est une plateforme Open Source Aussi, il n'existe pas de structure de prise en charge officielle pour cette technologie. Du moins, aucune que votre entreprise pourrait adopter en toute confiance. Si vous rencontrez un problème lors de la mise en œuvre de Kubernetes ou pendant son fonctionnement en production, vous risquez d'être très ennuyé. Et vos clients de même.

C'est là que Red Hat OpenShift intervient. La solution OpenShift est une version de Kubernetes adaptée aux entreprises, mais pas seulement. OpenShift inclut de nombreuses technologies supplémentaires qui font de Kubernetes un outil puissant et viable pour les entreprises, notamment : les registres, la mise en réseau, la télémétrie, la sécurité, l'automatisation et les services. Avec OpenShift, vos développeurs peuvent créer de nouvelles applications conteneurisées, les héberger et les déployer dans le cloud tout en bénéficiant d'une évolutivité, d'un contrôle et d'une orchestration d'une efficacité telle que vos idées pourront vite devenir réalité.

Cerise sur le gâteau : la solution OpenShift est prise en charge et développée par le leader de l'Open Source, Red Hat.


Aperçu du rôle de Kubernetes dans votre infrastructure

Kubernetes diagram

Kubernetes s'exécute au-dessus d'un système d'exploitation (par exemple Red Hat Enterprise Linux Container Host) et interagit avec les pods de conteneurs qui s'exécutent sur les nœuds. Le serveur maître Kubernetes reçoit les commandes de la part d'un administrateur (ou d'une équipe DevOps) et relaie ces instructions aux nœuds qui lui sont subordonnés. Ce système de transfert fonctionne avec une multitude de services et choisit automatiquement le nœud le plus adapté pour chaque tâche. Il alloue ensuite les ressources aux pods désignés dans ce nœud pour qu'ils effectuent la tâche requise.

Aussi, du point de vue de l'infrastructure, la gestion des conteneurs reste très similaire à celle que vous connaissez. Vous contrôlez simplement les conteneurs à un niveau plus élevé et plus efficacement, sans avoir à gérer chaque conteneur ou nœud de manière individuelle. Certaines tâches manuelles vous incombent encore, mais il s'agit surtout d'assigner un serveur maître Kubernetes, de définir des nœuds et des pods.

Et Docker ?

La technologie Docker continue de jouer son rôle. Lorsque Kubernetes planifie un pod dans un nœud, le kubelet de ce nœud ordonne à Docker de lancer les conteneurs spécifiés. Le kubelet collecte ensuite en continu le statut de ces conteneurs via Docker et rassemble ces informations sur le serveur maître. Docker transfert les conteneurs dans le nœud et démarre/arrête les conteneurs, comme d'habitude. La différence est l'origine des ordres : ils proviennent d'un système automatisé et non plus d'un administrateur qui assigne manuellement des tâches à tous les nœuds pour chaque conteneur.

Vous ne savez pas encore tout sur les conteneurs...