Kubernetes, la plateforme d’orchestration de conteneurs open source la plus populaire au monde, est considérée comme une étape décisive dans l’histoire des technologies cloud natives. Développé en interne chez Google et rendu public en 2014, Kubernetes a permis aux organisations de s’éloigner de l’infrastructure informatique traditionnelle et d’automatiser les tâches opérationnelles liées au déploiement, à la mise à l’échelle et à la gestion d’applications conteneurisées (ou microservices). Bien que Kubernetes soit devenu la norme de facto pour la gestion des conteneurs, de nombreuses entreprises utilisent également cette technologie pour un plus large éventail de cas d’utilisation.
Les conteneurs, unités logicielles légères qui regroupent le code et toutes ses dépendances pour s’exécuter dans n’importe quel environnement, constituent la base de Kubernetes et sont essentiels pour les microservices modernes, les logiciels cloud natifs et les workflows DevOps.
Docker a été le premier logiciel open source à populariser la création, le déploiement et la gestion d’applications conteneurisées. Mais Docker ne disposait d’aucun outil d’« orchestration » automatisé, ce qui entravait les équipes de science des données dans leurs efforts pour dimensionner les applications. Kubernetes, également appelé K8s, a été spécialement créé pour relever ces défis en utilisant l’automatisation de la gestion des applications conteneurisées.
Dans les grandes lignes, la plateforme d’orchestration Kubernetes s’exécute par l’intermédiaire de conteneurs avec des pods (lien externe à ibm.com) et des nœuds. Un pod gère un ou plusieurs conteneurs Linux et peut s’exécuter en plusieurs instances pour la montée en charge et la résistance aux défaillances. Les nœuds exécutent les pods et sont généralement regroupés dans un cluster Kubernetes, qui crée une abstraction des ressources matérielles physiques sous-jacentes.
L’infrastructure déclarative et basée sur les API de Kubernetes a permis de libérer les équipes DevOps et d’autres des processus pilotés manuellement, grâce à quoi ils peuvent travailler sur leurs objectifs de manière plus indépendante et plus efficace. En 2015, Google a fait don de Kubernetes comme technologie de base à la Cloud Native Computing Foundation (CNCF) (lien externe à ibm.com), le hub open source indépendant des fournisseurs de l’informatique cloud native.
Aujourd’hui, Kubernetes est largement utilisé en production pour gérer Docker et pratiquement tout autre type d’exécution de conteneur. Bien que Docker inclue son propre outil d’orchestration, appelé Swarm, la plupart des développeurs choisissent plutôt l’orchestration de conteneurs par Kubernetes.
En tant que système open-source, les services Kubernetes sont pris en charge par tous les principaux fournisseurs de cloud public, notamment IBM, Amazon Web Services (AWS), Microsoft Azure et Google. Kubernetes peut également s’exécuter sur des serveurs bare metal et sur des machines virtuelles (VM) dans des environnements de cloud privé, de cloud hybride et d’edge computing, à condition que le système d’exploitation hôte soit une version de Linux ou de Windows.
Voici un récapitulatif des six principaux cas d’utilisation de Kubernetes qui montrent comment ce système transforme l’infrastructure informatique.
Les sites web et les applications de cloud computing à fort trafic reçoivent des millions de requêtes d’utilisateurs chaque jour. L’un des principaux avantages de l’utilisation de Kubernetes pour le déploiement d’applications cloud à grande échelle est l’auto-scaling. Ce processus permet aux applications de s’adapter automatiquement à l’évolution de la demande, avec rapidité, efficacité et un temps d’arrêt minimal. Par exemple, lorsque la demande fluctue, Kubernetes permet aux applications de s’exécuter en continu et de répondre aux changements dans les modèles de trafic web. Cela permet de maintenir la bonne quantité de ressources pour les workloads, sans surprovisionnement ou sous-provisionnement.
Kubernetes utilise l’auto-scaling horizontal de pods (« horizontal pod autoscaling » ou HPA) (lien externe à ibm.com) pour effectuer l’équilibrage de charge (comme pour l’utilisation du processeur ou les mesures personnalisées) en augmentant le nombre de répliques de pods (des clones qui facilitent l’auto-réparation) liées à un déploiement spécifique. Cela atténue les problèmes potentiels tels que les pics de trafic, les problèmes matériels ou les interruptions de réseau.
Remarque : le HPA ne doit pas être confondu avec l’auto-scaling vertical de pods de Kubernetes (« vertical pod autoscaling » ou VPA), qui attribue des ressources supplémentaires (mémoire ou processeur) aux pods déjà en cours d’exécution pour la workload.
Divers secteurs (comme les agences gouvernementales, les instituts de recherche scientifique, la finance et l’ingénierie s’appuient fortement sur le calcul à haute performance (« high performance calculation » ou HPC), la technologie qui traite le Big Data pour effectuer des calculs complexes. Le HPC utilise des processeurs puissants à des vitesses extrêmement élevées pour prendre des décisions instantanées basées sur les données. Les utilisations du HPC dans le monde réel comprennent l’automatisation des transactions boursières, les prévisions météorologiques, le séquençage de l’ADN et la simulation de vol.
Les secteurs qui font une utilisation importante du calcul à haute performance utilisent Kubernetes pour gérer la distribution de ces calculs dans les environnements hybrides et multicloud. Kubernetes peut également servir d’outil suffisamment flexible pour prendre en charge le traitement des tâches par lots utilisées dans les workloads informatiques à haute performance, qui améliore la portabilité des données et du code.
La construction et le déploiement de systèmes d’intelligence artificielle (IA) et de machine learning (ML) nécessitent d’énormes volumes de données et des processus complexes, comme le calcul à haute performance et l’analyse des big data. Le déploiement du machine learning sur Kubernetes permet aux organisations d’automatiser plus facilement la gestion et la mise à l’échelle des cycles de vie de l’apprentissage automatique et de réduire le besoin d’intervention manuelle.
Par exemple, la plateforme d’orchestration conteneurisée Kubernetes peut automatiser certaines parties des workflows de maintenance prédictive de l’IA et du ML, y compris les diagnostics d’intégrité et la planification des ressources. Kubernetes peut en outre dimensionner les workloads de ML à la hausse ou à la baisse pour répondre aux demandes des utilisateurs, ajuster l’utilisation des ressources et contrôler les coûts.
Le machine learning s’appuie sur de grands modèles de langage pour exécuter le traitement automatique du langage naturel (NLP) de haut niveau, comme la classification de texte, l’analyse des sentiments et la traduction automatique. Kubernetes permet d’accélérer le déploiement de grands modèles de langage pour automatiser le processus NLP. Alors que de plus en plus d’organisations se tournent vers les capacités de l’ IA générative, elles utilisent Kubernetes pour exécuter et dimensionner les modèles d’IA générative, Kubernetes offrant en outre une haute disponibilité et la tolérance aux erreurs.
Dans l’ensemble, Kubernetes offre la flexibilité, la portabilité et l’évolutivité dont les entreprises ont besoin pour entraîner, tester, planifier et déployer des modèles de ML et d’IA générative.
Les microservices (ou architecture de microservices) offrent une approche moderne de l’architecture cloud native, dans laquelle chaque application est constituée de nombreux composants ou services plus petits, faiblement couplés et déployables indépendamment. Par exemple, les grands sites web d’e-commerce pour la vente au détail sont constitués de nombreux microservices. Il s’agit généralement d’un service de commande, d’un service de paiement, d’un service d’expédition et d’un service client. Chaque service possède sa propre API REST, que les autres services utilisent pour communiquer avec lui.
Kubernetes a été conçu pour gérer la complexité que représente la gestion de tous les composants indépendants exécutés simultanément au sein de l’architecture de microservices. Par exemple, la fonction de haute disponibilité (HA) intégrée à Kubernetes garantit la continuité des opérations, y compris en cas de panne. La fonction d’auto-réparation de Kubernetes intervient en cas de panne d’une application conteneurisée ou d’un composant d’application. La fonction d’auto-réparation permet de redéployer instantanément l’application ou le composant de l’application avec l’état souhaité, ce qui contribue à maintenir le temps de fonctionnement et la fiabilité.
Kubernetes est conçu pour être utilisé n’importe où, ce qui facilite la migration des applications sur site vers des environnements de cloud hybride et multicloud. Kubernetes standardise la migration en fournissant aux développeurs des commandes intégrées pour un déploiement efficace des applications. Kubernetes peut également déployer des modifications sur les applications et les dimensionner à la hausse ou à la baisse en fonction des exigences de l’environnement.
Kubernetes offre une portabilité dans les environnements sur site et dans le cloud, car il crée une abstraction qui masque les complexités de l’infrastructure pour les applications. Ceci élimine le besoin de dépendances d’applications pour une plateforme particulière et permet le déplacement des applications entre différents fournisseurs de cloud ou centres de données avec un minimum d’effort.
Pour les équipes de DevOps, pouvoir mettre à jour et déployer rapidement des applications est essentiel à la réussite de l’entreprise. Kubernetes fournit aux équipes le développement et la maintenance des systèmes logiciels pour améliorer l’agilité globale. L’interface API de Kubernetes permet aux développeurs de logiciels et aux autres parties prenantes DevOps d’accéder facilement à leurs écosystèmes de conteneurs, de les visualiser, de les déployer, de les mettre à jour et de les optimiser.
Le CI/CD, qui signifie intégration continue (« continuous integration » ou CI) et livraison continue (« continuous delivery » ou CD), est devenu un aspect essentiel du développement logiciel. Dans le DevOps, le CI/CD simplifie le codage, les tests et le déploiement des applications en offrant aux équipes un référentiel unique pour stocker les tâches et les outils d’automatisation afin de combiner et de tester le code de manière cohérente et de s’assurer qu’il fonctionne. En automatisant le déploiement des conteneurs dans les environnements d’infrastructure cloud et en garantissant une utilisation efficace des ressources, Kubernetes joue un rôle important dans les pipelines de CI/CD cloud natifs.
Kubernetes joue un rôle essentiel dans l’infrastructure informatique, comme en témoignent ses nombreux cas d’utilisation axés sur la valeur, qui vont au-delà de l’orchestration de conteneurs. C’est pourquoi de nombreuses entreprises continuent d’implanter Kubernetes. En 2021, selon une enquête sur les technologies cloud-natives (lien externe à ibm.com) menée par la CNCF, l’utilisation de Kubernetes a atteint son niveau le plus élevé, avec 96 % des organisations qui utilisent la plateforme conteneurisée ou envisagent de l’adopter. Selon la même étude, l’utilisation de Kubernetes continue d’augmenter dans les régions ou la technologie est émergente, comme l’Afrique, où 73 % des personnes interrogées utilisent Kubernetes en production.
Kubernetes planifie et automatise les tâches qui font partie intégrante de la gestion des architectures basées sur les conteneurs, notamment le déploiement de conteneurs, les mises à jour, la découverte de services, le provisionnement du stockage, l’équilibrage de charge, la surveillance de l’intégrité, etc. Chez IBM, nous aidons nos clients à moderniser leurs applications et à optimiser leur infrastructure informatique grâce à Kubernetes et à d’autres solutions cloud natives.
Déployez des clusters sécurisés et hautement disponibles dans une expérience Kubernetes native avec IBM Cloud Kubernetes Service.
Conteneurisez et déployez des clusters Kubernetes pour des plateformes conteneurisées à l’aide de Red Hat OpenShift on IBM Cloud.