Kubernetes, aussi connu sous le nom de k8s ou kube, est une plateforme d’orchestration de conteneurs open source permettant de planifier et d’automatiser le déploiement, la gestion et mise à l’échelle d’applications conteneurisées.
Aujourd’hui, Kubernetes et l’écosystème plus large des technologies liées aux conteneurs ont fusionné pour former les éléments constitutifs de l’infrastructure cloud moderne. Cet écosystème permet aux entreprises de fournir un environnement informatique multicloud hybride hautement productif pour effectuer des tâches complexes liées à l’infrastructure et aux opérations. Il prend également en charge le développement cloud natif en permettant une approche unifiée du développement et du déploiement multi-plateformes pour la création d’applications.
Le mot Kubernetes vient du grec et signifie timonier ou pilote, d’où le gouvernail dans le logo Kubernetes.
Les conteneurs sont des composants d’application légers et exécutables qui regroupent le code source et toutes les bibliothèques et dépendances du système d’exploitation nécessaires à l’exécution du code dans n’importe quel environnement.
Les conteneurs tirent parti d’une forme de virtualisation du système d’exploitation qui permet à de multiples applications de partager une seule instance d’un système d’exploitation en isolant les processus et en contrôlant la quantité de CPU, de mémoire et de disque auxquels ces processus peuvent accéder. Parce qu’ils sont plus petits, plus économes en ressources et plus portables que les machines virtuelles (VM), les conteneurs sont devenus les unités de calcul de facto des applications cloud natives modernes. Les conteneurs sont également plus efficaces en termes de ressources. Ils vous permettent d’exécuter davantage d’applications sur moins de machines (serveurs virtuels et serveurs physiques) avec moins d’instances de système d’exploitation.
Comme les conteneurs peuvent fonctionner de manière cohérente partout, ils sont devenus essentiels à l’architecture sous-jacente qui prend en charge les environnements multicloud hybrides, c’est-à-dire la combinaison d’un cloud sur site, d’un cloud privé, d’un cloud public et de plusieurs services cloud provenant de plusieurs fournisseurs de cloud.
Docker est l’outil le plus populaire pour créer et exécuter des conteneurs Linux. Alors que les premières formes de conteneurs ont été introduites il y a plusieurs décennies (avec des technologies telles que FreeBSD Jails et AIX Workload Partitions), les conteneurs se sont démocratisés en 2013 lorsque Docker les a mis à la portée du plus grand nombre avec une nouvelle implémentation intuitive pour les développeurs et pour le cloud.
Docker était à l’origine un projet open source, mais il désigne aujourd’hui également la société Docker Inc. qui produit Docker, un outil commercial de conteneurisation qui s’appuie sur le projet open source (et restitue ses améliorations à la communauté open source).
Docker a été conçu sur la base de la technologie classique des conteneurs Linux, mais il permet une virtualisation plus granulaire des processus du noyau Linux et ajoute des fonctionnalités qui facilitent la création, le déploiement, la gestion et la sécurisation des conteneurs pour les développeurs.
Bien qu’il existe aujourd’hui d’autres plateformes d’exécution de conteneurs telles qu’Open Container Initiative (OCI), CoreOS et Canonical (Ubuntu) LXD, Docker reste le choix privilégié. De plus, Docker est devenu synonyme de conteneurs et est parfois considéré à tort comme un concurrent de technologies complémentaires telles que Kubernetes.
Aujourd’hui, Docker et Kubernetes sont les principaux outils de conteneurisation, Docker dominant 82 % du marché et Kubernetes contrôlant 11,52 % des parts en 2024.
Avec la prolifération des conteneurs, une entreprise peut aujourd’hui en posséder des centaines, voire des milliers. Des équipes opérationnelles sont nécessaires pour planifier et automatiser le déploiement, la mise en réseau, l’évolutivité et la disponibilité de ces conteneurs. C’est là qu’intervient l’orchestration des conteneurs.
Basé sur Borg, la plateforme interne d’orchestration de conteneurs de Google, Kubernetes a été présenté au public en tant qu’outil open source en 2014, avec Microsoft, Red Hat, IBM et d’autres acteurs majeurs du secteur technologique qui ont rejoint la communauté Kubernetes dès ses débuts. En 2015, Google a fait don de Kubernetes à la Cloud Native Computing Foundation (CNCF), la plateforme open source et indépendante des fournisseurs d’informatique cloud natif.
Kubernetes est devenu le premier projet hébergé par la CNCF en mars 2016. Depuis, Kubernetes est devenu l’outil d’orchestration de conteneurs le plus utilisé pour l’exécution des workloads basés sur les conteneurs dans le monde entier. Dans un rapport de la CNCF, Kubernetes est le deuxième plus grand projet open source au monde (après Linux) et le principal outil d’orchestration de conteneurs pour 71 % des entreprises du Fortune 100.
En 2018, Kubernetes a été le premier projet diplômé de la CNCF, devenant l’un des projets open source à la croissance la plus rapide de l’histoire. Alors que d’autres options d’orchestration de conteneurs, notamment Docker Swarm et Apache Mesos, ont connu un certain succès au départ, Kubernetes est rapidement devenu la solution la plus largement adoptée.
Depuis que Kubernetes a rejoint la CNCF en 2016, le nombre de contributeurs est passé à 8 012, soit une hausse de 996 % . À ce jour, les contributeurs ont ajouté plus de 123 000 commits au référentiel Kubernetes sur GitHub.
Newsletter sectorielle
Restez au fait des tendances les plus étonnantes du secteur dans le domaine de l’IA, de l’automatisation, des données et bien d’autres avec la newsletter Think. Consultez la déclaration de confidentialité d’IBM.
Lire la Déclaration de confidentialité d’IBM.
Vous recevrez votre abonnement en anglais. Vous trouverez un lien de désabonnement dans chaque newsletter. Vous pouvez gérer vos abonnements ou vous désabonner ici. Consultez la Déclaration de confidentialité d’IBM pour plus d’informations.
Kubernetes planifie et automatise les tâches liées aux conteneurs tout au long du cycle de vie des applications, notamment :
Kubernetes déploie un nombre spécifique de conteneurs sur un hôte donné et les maintient dans l’état souhaité.
Un rollout est une modification apportée à un déploiement. Kubernetes vous permet d’initier, de mettre en pause, de reprendre ou d’annuler des rollouts.
Kubernetes peut automatiquement exposer un conteneur à Internet ou à d’autres conteneurs à l’aide d’un système de noms de domaine (DNS) ou d’une adresse IP.
Configurez Kubernetes pour que la solution installe un espace de stockage local ou cloud permanent pour vos conteneurs, en fonction des besoins.
En fonction de l’utilisation du CPU ou d’indicateurs personnalisés, l’équilibrage de charge de Kubernetes peut répartir les workloads sur le réseau afin de maintenir des performances et une stabilité optimales.
Lorsque le trafic augmente, la mise à l’échelle automatique Kubernetes peut créer de nouveaux clusters selon les besoins pour gérer le workload supplémentaire.
En cas de panne d’un conteneur, Kubernetes peut le redémarrer ou le remplacer automatiquement pour éviter les temps d’arrêt. Il peut également mettre hors service les conteneurs qui ne répondent pas à vos exigences en matière de contrôle de l’état de santé du système.
Le déploiement de Kubernetes implique des clusters, les éléments constitutifs de l’architecture Kubernetes. Ceux-ci sont composés de nœuds, chacun représentant un hôte de calcul unique, soit une machine physique (serveur bare metal), soit une machine virtuelle.
L’architecture Kubernetes se compose de deux parties principales : les composants du plan de contrôle et les composants qui gèrent les nœuds individuels.
Un nœud est constitué de pods. Il s’agit de groupes de conteneurs qui partagent les mêmes ressources informatiques et le même réseau. Ils constituent également l’unité d’évolutivité dans Kubernetes. Si un conteneur d’un pod reçoit plus de trafic qu’il ne peut en gérer, Kubernetes réplique le pod vers d’autres nœuds du cluster.
Le plan de contrôle gère automatiquement la planification des pods entre les nœuds d’un cluster.
Chaque cluster dispose d’un nœud maître qui gère le plan de contrôle. Ce nœud exécute un service de planification qui automatise le moment et l’endroit où les conteneurs sont déployés en fonction des exigences de déploiement définies par les développeurs et de la capacité de calcul disponible.
Les principaux composants d’un cluster Kubernetes sont kube-apiserver, etcd, kube-scheduler, kube-controller-manager et cloud-controller-manager :
Serveur API : le serveur d’interface de programmation d’application (API) dans Kubernetes expose l’API Kubernetes (l’interface employée pour gérer, créer et configurer les clusters Kubernetes) et sert de point d’entrée pour toutes les commandes et requêtes.
etcd : etcd est un magasin de clés-valeurs distribué open source utilisé pour stocker et gérer les informations critiques dont les systèmes distribués ont besoin pour opérer. Dans Kubernetes, etcd gère les données de configuration, les données d’état et les métadonnées.
Planificateur : ce composant suit les pods nouvellement créés et sélectionne les nœuds sur lesquels ils doivent s’exécuter. Le planificateur tient compte de la disponibilité des ressources et des contraintes d’allocation, des exigences matérielles et logicielles, etc.
Controller-manager : ensemble de contrôleurs intégrés, le controller-manager de Kubernetes exécute une boucle de contrôle qui surveille l’état partagé du cluster et communique avec le serveur API pour gérer les ressources, les pods ou les points de terminaison de service. Le controller-manager se compose de processus distincts qui sont regroupés afin de réduire la complexité et s’exécutent dans un seul processus.
Cloud-controller-manager : ce composant a une fonction similaire à celle du controller-manager. Il se connecte à l’API d’un fournisseur de cloud et sépare les composants qui interagissent avec cette plateforme cloud de ceux qui interagissent uniquement au sein du cluster.
Les nœuds de travail sont chargés de déployer, d’exécuter et de gérer les applications conteneurisées :
Kubelet : Kubelet est un agent logiciel qui reçoit et exécute les ordres du nœud maître et contribue à garantir le bon fonctionnement des conteneurs dans un pod.
Kube-proxy : installé sur chaque nœud d’un cluster, le kube-proxy maintient les règles réseau sur l’hôte et surveille les changements dans les services et les pods.
Il existe aujourd’hui plus de 90 offres Kubernetes certifiées, notamment des plateformes de gestion dédiées aux entreprises qui fournissent des outils, des mises à niveau et des fonctionnalités complémentaires afin d’accélérer le développement et la livraison d’applications conteneurisées.
Si Kubernetes est la technologie privilégiée pour orchestrer les applications cloud basées sur des conteneurs, elle dépend d’autres composants, tels que la mise en réseau, les entrées, l’équilibrage de charge, le stockage, l’intégration continue et la livraison continue (CI/CD), pour être pleinement fonctionnelle.
Bien qu’il soit possible d’héberger soi-même un cluster Kubernetes dans un environnement cloud, la configuration et la gestion peuvent s’avérer complexes pour une entreprise. C’est là qu’interviennent les services Kubernetes gérés.
Grâce à eux, le fournisseur gère généralement les composants du plan de contrôle Kubernetes. Le fournisseur de services gérés aide à automatiser les processus de routine pour les mises à jour, l’équilibrage de charge, la mise à l’échelle et la surveillance. Par exemple, Red Hat OpenShift est un service Kubernetes qui peut être déployé dans n’importe quel environnement et sur tous les principaux clouds publics, notamment Amazon Web Services (AWS), Microsoft Azure, Google Cloud et IBM® Cloud. De nombreux fournisseurs de cloud proposent également leurs propres services Kubernetes gérés.
La surveillance Kubernetes fait référence à la collecte et à l’analyse des données relatives à l’état, aux performances et au coût des applications conteneurisées fonctionnant au sein de clusters Kubernetes.
Grâce à la surveillance des clusters Kubernetes, les administrateurs et les utilisateurs peuvent suivre le temps de fonctionnement, l’utilisation des ressources du cluster et l’interaction entre ses composants. Elle permet d’identifier rapidement les problèmes tels que l’insuffisance des ressources, les pannes et les nœuds qui ne peuvent pas rejoindre le cluster. Les solutions de surveillance Kubernetes actuelles comprennent des outils automatisés pour la gestion de la performance des applications (APM), l’observabilité, la gestion des ressources applicatives (ARM) et bien plus encore.
Kubernetes peut déployer et mettre à l’échelle les pods, mais il ne peut pas gérer ou automatiser le routage entre eux et ne fournit aucun outil pour surveiller, sécuriser ou déboguer ces connexions.À mesure que le nombre de conteneurs dans un cluster augmente, le nombre de chemins de connexion possibles entre eux augmente de manière exponentielle. Par exemple, 2 conteneurs ont 2 connexions potentielles, mais 10 pods en ont 90, un cauchemar potentiel en termes de configuration et de gestion.
Istio, une couche de maillage de services configurable et open source, est une solution qui connecte, surveille et sécurise les conteneurs dans un cluster Kubernetes. Ses autres avantages significatifs incluent des capacités de débogage améliorées et un tableau de bord que les équipes DevOps et les administrateurs peuvent exploiter pour surveiller la latence, les erreurs de temps de service et d’autres caractéristiques des connexions entre les conteneurs.
Knative (prononcé « kay-native ») est une plateforme open source qui facilite l’accès à l’informatique sans serveur, le modèle de développement et d’exécution d’applications cloud computing qui permet aux développeurs de créer et d’exécuter du code d’application sans provisionner ni gérer de serveurs ou d’infrastructure back-end.
Au lieu de déployer une instance permanente de code qui reste inactive en attendant les demandes, l’approche sans serveur met en place le code en fonction des besoins. Elle l’augmente ou le réduit en fonction des fluctuations de la demande, puis le désactive lorsqu’il n’est pas utilisé. L’informatique sans serveur permet de ne pas gaspiller la capacité et l’énergie du système informatique et de réduire les coûts, car vous ne payez pour l’exécution du code que lorsqu’il est réellement en cours d’exécution.
Tekton est un cadre open source et indépendant permettant de créer des systèmes d’intégration et de livraison continues (CI/CD) régis par la Continuous Delivery Foundation (CDF).
En tant que cadre Kubernetes, Tekton contribue à moderniser la livraison continue en fournissant des spécifications sectorielles pour les pipelines, les workflows et d’autres composantes, ce qui facilite le déploiement sur plusieurs fournisseurs de cloud ou environnements hybrides.
Il convient de noter que Tekton est le successeur de Knative Build, qui demeure pris en charge dans certaines distributions Knative. Les pipelines Tekton sont devenus la norme pour la création d’images de conteneurs et leur déploiement dans un registre de conteneurs au sein d’un environnement Kubernetes.
Les grandes entreprises exploitent Kubernetes pour prendre en charge les cas d’utilisation suivants, qui jouent tous un rôle prépondérant dans la composition d’une infrastructure informatique moderne :
Le cloud natif est une approche de développement logiciel pour la création, le déploiement et la gestion d’applications basées sur le cloud. Son principal avantage est de permettre aux équipes DevOps et aux autres équipes de développer une seule fois, puis de déployer sur n’importe quelle infrastructure, quel que soit le fournisseur de cloud.
Ce processus de développement moderne s’appuie sur les microservices, une approche dans laquelle une seule application est constituée de nombreux composants ou services plus petits, faiblement couplés et déployables indépendamment dans des conteneurs gérés par Kubernetes.
Kubernetes permet de s’assurer que chaque microservice dispose des ressources dont il a besoin pour fonctionner efficacement, tout en minimisant les frais généraux liés à la gestion manuelle de plusieurs conteneurs.
Le cloud hybride combine et unifie le cloud public, le cloud privé et les centres de données sur site pour créer une infrastructure informatique unique et flexible qui optimise les coûts.
Aujourd’hui, le cloud hybride a fusionné avec le multicloud, les services de cloud public de plusieurs fournisseurs de cloud, pour créer un environnement multicloud hybride.
Cette approche offre plus de flexibilité et réduit la dépendance à un seul fournisseur, évitant ainsi l’enfermement propriétaire. Kubernetes constituant la base du développement cloud natif, il est essentiel à l’adoption du multicloud hybride.
Kubernetes prend en charge le déploiement d’applications cloud à grande échelle grâce à la mise à l’échelle automatique. Ce processus permet aux applications de s’adapter automatiquement à l’évolution de la demande, avec rapidité, efficacité et un temps d’arrêt minimal.
Grâce à l’évolutivité élastique du déploiement Kubernetes, les ressources peuvent être ajoutées ou supprimées en fonction des variations du trafic utilisateur, comme les ventes flash sur les sites de vente au détail.
Kubernetes fournit la plateforme cloud moderne nécessaire pour prendre en charge la modernisation des applications, la migration et la transformation d’applications monolithiques héritées en applications cloud basées sur une architecture de microservices.
L’automatisation est au cœur du DevOps, qui accélère la livraison de logiciels de meilleure qualité en combinant et en automatisant le travail des équipes de développement logiciel et des opérations informatiques.
Kubernetes aide les équipes DevOps à créer et à mettre à jour rapidement des applications en automatisant leur configuration et leur déploiement.
Les modèles de ML et les grands modèles de langage (LLM) qui alimentent l’IA intègrent des composants dont la gestion séparée serait complexe et chronophage. En automatisant la configuration, le déploiement et l’évolutivité dans les environnements cloud, Kubernetes contribue à fournir l’agilité et la flexibilité nécessaires pour entraîner, tester et déployer ces modèles sophistiqués.
Si vous souhaitez commencer à utiliser Kubernetes ou cherchez à développer vos compétences existantes avec Kubernetes et les outils de l’écosystème Kubernetes, essayez l’un de ces tutoriels :
Red Hat OpenShift on IBM Cloud est une plateforme de conteneurs OpenShift entièrement gérée.
Les solutions de conteneurs exécutent et étendent les workloads conteneurisés avec sécurité, innovation open source et déploiement rapide.
Déverrouillez de nouvelles fonctionnalités et stimulez l’agilité de votre entreprise grâce aux services de conseil d’IBM Cloud. Découvrez comment co-créer des solutions, accélérer la transformation numérique et optimiser les performances grâce à des stratégies de cloud hybride et à des partenariats d’experts.