Kubernetes : définition
Kubernetes (« k8s » ou « kube ») est une plateforme Open Source d'orchestration des conteneurs qui automatise de nombreux processus manuels associés au déploiement, à la gestion et à la mise à l'échelle des applications conteneurisées.
Un cluster Kubernetes, qu'est-ce que c'est ?
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®.
Les clusters Kubernetes peuvent englober des hôtes situés sur site, dans des clouds publics, privés ou hybrides. C'est la raison pour laquelle Kubernetes est la plateforme idéale pour héberger les applications cloud-native qui requièrent une mise à l'échelle rapide, comme la diffusion de données en continu et en temps réel via Apache Kafka.
Qui contribue à Kubernetes ?
À 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.
Anecdote : les sept rayons du logo Kubernetes renvoient au nom d'origine du projet, « Project Seven of Nine », soit « Projet sept sur neuf » en français.
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 depuis devenu son deuxième contributeur principal. Google a fait don du projet Kubernetes à la Cloud Native Computing Foundation (CNCF) lors de sa création en 2015.
Rejoignez-nous au Kubernetes Community Days France le 9 mars !
Red Hat est sponsor Platinum de cet événement essentiel pour la communauté Kubernetes. Rejoignez nous sur le stand F1 pour découvrir des démos live, recevoir des goodies et parler à nos experts!
Quels sont les différents usages de Kubernetes ?
Le principal avantage de la technologie Kubernetes, en particulier si vous cherchez à optimiser le développement des applications pour le cloud, est qu'elle offre une plateforme réservée à la planification et à l'exécution de conteneurs sur des clusters de machines physiques ou virtuelles.
Autrement dit, Kubernetes vous aide à mettre en œuvre et à utiliser une infrastructure de conteneurs dans vos environnements de production. De plus, puisque cette technologie est axée sur l'automatisation des tâches d'exploitation, elle offre les mêmes fonctions que d'autres plateformes d'application ou systèmes de gestion, mais pour les conteneurs.
Avec les modèles Kubernetes, les développeurs peuvent créer des applications cloud-native en utilisant Kubernetes en tant que plateforme d'exécution. Les modèles sont les outils utilisés par les développeurs pour créer des applications et des services basés sur des conteneurs.
Avec Kubernetes, vous pouvez réaliser les tâches suivantes :
- Orchestration des conteneurs sur différents hôtes
- Amélioration de l'utilisation du matériel de manière à optimiser les ressources nécessaires pour exécuter les applications d'entreprise
- Contrôle et automatisation des déploiements et mises à jour des applications
- Montage et ajout de stockage pour l'exécution d'applications stateful
- Mise à l'échelle des applications conteneurisées et de leurs ressources à la volée
- Gestion déclarative des services pour garantir le bon fonctionnement des applications déployées
- Contrôle de l'intégrité et autoréparation des applications grâce au placement, au redémarrage, à la réplication et à la mise à l'échelle automatiques
Kubernetes repose toutefois sur d'autres projets afin d'offrir l'intégralité de ces services orchestrés. Alors, pour exploiter pleinement son potentiel, vous devez recourir à des projets Open Source complémentaires. Voici une liste non exhaustive des éléments essentiels :
- Registre : projet Docker Registry
- Mise en réseau : projet Open vSwitch et routage de périphérie intelligent
- Télémétrie : projets Kibana, Hawkular et Elastic
- Sécurité : projets LDAP, SELinux, contrôle d'accès basé sur les rôles et OAuth avec des couches multi-clients
- Automatisation : playbooks Ansible pour l'installation et la gestion du cycle de vie des clusters
- Services : catalogue riche de schémas d'application fréquemment utilisés
Découvrez les conteneurs Linux et la technologie d'orchestration des conteneurs. Le cours à la demande que nous proposons vous apprendra à conteneuriser des applications et des services, à les tester avec Docker, puis à les déployer sur un cluster Kubernetes à l'aide de la solution Red Hat® OpenShift®.
Apprendre le langage Kubernetes
À l'instar de nombreuses technologies, Kubernetes a son propre langage, qui peut représenter un frein à son adoption. Définissons certains des termes les plus courants pour vous permettre de mieux le comprendre.
Plan de contrôle : ensemble de processus qui contrôle les nœuds Kubernetes et assigne toutes les tâches.
Nœuds : machines qui exécutent les tâches qui leur sont assignées par le plan de contrôle.
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 permettent de dissocier 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 Kubernetes reçoivent automatiquement des demandes de service dans le bon pod, même s'il a été déplacé dans le cluster ou s'il a été 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 des lignes de commande pour Kubernetes.
Fonctionnement
Le terme « cluster » désigne un déploiement fonctionnel de Kubernetes. Un cluster Kubernetes comprend deux principaux composants : le plan de contrôle et les machines de calcul ou nœuds.
Chaque nœud est son propre environnement Linux®. Il peut s'agir d'une machine physique ou virtuelle. Chaque nœud exécute des pods, constitués de conteneurs.
Le plan de contrôle est responsable du maintien du cluster dans un état souhaité, c'est-à-dire qu'il vérifie, par exemple, les applications exécutées et les images de conteneurs utilisées. Ce sont les machines de calcul qui exécutent concrètement les applications et les charges de travail.
Kubernetes fonctionne sur un système d'exploitation (Red Hat® Enterprise Linux®, par exemple) et interagit avec les pods des conteneurs qui s'exécutent sur les nœuds.
Le plan de contrôle Kubernetes reçoit les commandes d'un administrateur (ou d'une équipe DevOps) et transfère ces instructions aux machines de calcul.
Ce transfert fonctionne avec une multitude de services afin de choisir automatiquement le nœud le plus adapté à la tâche. Il alloue ensuite les ressources et attribue le travail demandé aux pods de ce nœud.
L'état souhaité d'un cluster Kubernetes détermine les applications ou autres charges de travail à exécuter, ainsi que les images à utiliser, les ressources qui leur sont allouées et d'autres informations de configuration.
Au niveau de l'infrastructure, la gestion des conteneurs est légèrement différente : le contrôle s'effectue à un niveau supérieur, ce qui renforce votre contrôle sans avoir à gérer individuellement chacun des conteneurs ou nœuds.
Votre travail consiste à configurer Kubernetes, définir des nœuds, des pods et les conteneurs qu'ils contiennent, tandis que Kubernetes gère l'orchestration des conteneurs.
Vous pouvez choisir l'environnement d'exécution de Kubernetes : serveurs bare metal, machines virtuelles ou clouds publics, privés et hybrides. Kubernetes peut fonctionner sur de nombreux types d'infrastructures, ce qui représente un avantage non négligeable.
Qu'en est-il de Docker ?
Vous pouvez utiliser Docker en tant qu'environnement d'exécution orchestré par Kubernetes. Lorsque Kubernetes planifie un pod dans un nœud, le kubelet de ce nœud donne l'ordre à 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 dans le plan de contrôle. Docker transfère ces conteneurs dans ce nœud, les démarre et les arrête.
Lorsque vous utilisez Kubernetes avec Doker, 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.
Qu'est-ce qu'une infrastructure native pour Kubernetes ?
Aujourd'hui, la majorité des déploiements Kubernetes sur site s'exécutent sur une infrastructure virtuelle existante, et l'on observe une progression des déploiements sur serveurs bare metal. Il s'agit d'une évolution naturelle dans les datacenters. Kubernetes sert d'outil de gestion du déploiement et du cycle de vie pour les applications conteneurisées, tandis que d'autres outils permettent de gérer des ressources d'infrastructure.
Qu'en serait-il si vous conceviez votre datacenter à partir de zéro (y compris la couche d'infrastructure) pour qu'il prenne en charge les conteneurs ?
Nous vous conseillons de commencer directement avec des serveurs bare metal et un stockage logiciel déployé et géré par Kubernetes pour que l'infrastructure bénéficie des mêmes avantages d'installation, de mise à l'échelle et de réparation autonomes que les conteneurs. C'est là tout l'intérêt d'une infrastructure native pour Kubernetes.
Quels sont les avantages d'une infrastructure native pour Kubernetes ?
Agilité digne du cloud public et simplicité sur site pour favoriser la collaboration entre les équipes de développement et d'exploitation
Baisse des coûts grâce à la suppression de la couche d'hyperviseur distincte pour exécuter les machines virtuelles
Flexibilité pour le déploiement des conteneurs, applications serverless et machines virtuelles à partir de Kubernetes, pour la mise à l'échelle des applications et de l'infrastructure
Extensibilité du cloud hybride, avec Kubernetes comme couche commune dans les clouds publics et sur site
Red Hat concrétise l'infrastructure native pour Kubernetes
Red Hat OpenShift
Red Hat OpenShift permet l'automatisation de la pile complète grâce aux opérateurs Kubernetes, qui automatisent l'installation et la gestion du cycle de vie des infrastructures non natives pour Kubernetes.
Red Hat OpenShift Data Foundation
Red Hat OpenShift Data Foundation fournit un stockage provisionné de manière dynamique par l'intermédiaire de l'opérateur Rook pour Kubernetes.
La virtualisation native pour les conteneurs
La virtualisation native pour les conteneurs de Red Hat OpenShift permet l'utilisation de machines virtuelles sous Kubernetes. Elle se base sur KubeVirt, le projet de la communauté Open Source qui intervient en amont.
Metal3
Metal3 est un projet en amont qui permet d'automatiser totalement le déploiement et la gestion du cycle de vie des serveurs bare metal à l'aide de Kubernetes.
En quoi Kubernetes peut-il vous aider ?
Celle-ci peut vous aider à distribuer et à gérer les applications conteneurisées, existantes et cloud-native ainsi que celles décomposées en microservices.
Pour répondre aux besoins changeants de l'entreprise, votre équipe de développement doit être en mesure de créer rapidement des applications et des services. Le développement d'applications cloud-native permet d'accélérer le processus de développement et facilite la transformation ainsi que l'optimisation des applications existantes en commençant par le stockage des microservices dans des conteneurs.
Dans cette série de webinars, plusieurs experts partagent leur point de vue pour vous aider à installer la plateforme de données Kubernetes d'entreprise dont vous avez besoin pour créer, exécuter, déployer et moderniser vos applications.
Développement d'applications avec Kubernetes
Les applications de production s'étendent dans plusieurs 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 fonctions d'orchestration de Kubernetes vous permettent de créer des services d'application 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. Avec Kubernetes, vous pouvez prendre des mesures efficaces pour améliorer la sécurité informatique.
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.
Dans un environnement de production avec plusieurs applications, il vous faut plusieurs conteneurs colocalisés qui fonctionnent ensemble pour fournir chaque service individuel.
Avec les conteneurs Linux, vos applications basées sur des microservices disposent d'une unité de déploiement et d'un environnement d'exécution parfaitement adaptés. De plus, les microservices stockés dans les conteneurs simplifient l'orchestration des services, notamment les services de stockage, de réseau et de sécurité.
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 de « pods ». 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 les charges 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 comme Open vSwitch, OAuth et SELinux, vous pouvez orchestrer l'ensemble de votre infrastructure de conteneurs.
Cas d'utilisation : mettre au point une plateforme cloud pour offrir des services bancaires novateurs
Emirates NBD, l'une des plus grandes banques des Émirats arabes unis, avait besoin d'une base évolutive et résiliente qui lui permettrait d'innover dans le domaine numérique. La banque rencontrait deux difficultés : la lenteur du provisionnement et la complexité de l'environnement informatique. La mise en place d'un serveur pouvait prendre deux mois, tandis que la modification des applications monolithiques prenait plus de six mois.
En se servant de la solution Red Hat OpenShift Container Platform pour l'orchestration, l'intégration et la gestion des conteneurs, la banque a créé Sahab, le premier cloud privé à grande échelle géré par une banque du Moyen-Orient. Sahab fournit des applications, des systèmes et d'autres ressources pour un développement complet, du provisionnement à la production, via un modèle de distribution en tant que service.
Avec sa nouvelle plateforme, Emirates NBD a amélioré la collaboration entre les équipes internes et avec ses partenaires en utilisant des interfaces de programmation d'applications (API) et des microservices. En outre, grâce à des pratiques de développement agile et DevOps, la banque a réduit les cycles de lancement et de mise à jour des applications.
Vous ne savez pas encore tout sur les conteneurs…
Kubernetes au service de l'approche DevOps
Pour développer des applications modernes, il faut adopter de nouveaux processus, différents de ceux qui fonctionnaient par le passé. Le modèle DevOps accélère la concrétisation d'une idée, du développement au déploiement.
C'est un modèle qui s'appuie sur l'automatisation des tâches d'exploitation courantes et la standardisation des environnements associés au cycle de vie d'une application. Les conteneurs prennent en charge un environnement unifié pour le développement, la distribution et l'automatisation, et facilitent le déplacement des applications entre les environnements de développement, de test et de production.
La mise en œuvre du modèle DevOps a pour résultat majeur la création d'un pipeline d'intégration et de déploiement continus (CI/CD). L'approche CI/CD vous aide à fournir régulièrement des applications aux clients et à valider la qualité des logiciels en réduisant au maximum les interventions humaines.
La gestion du cycle de vie des conteneurs avec Kubernetes ainsi qu'une approche DevOps permet d'aligner le développement de logiciels et l'exploitation informatique pour prendre en charge un pipeline CI/CD.
De plus, avec les plateformes adaptées à l'intérieur comme à l'extérieur des conteneurs, vous pouvez tirer le meilleur parti des changements que vous avez apportés en matière de culture et de processus.
Utiliser 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 ennuyé. Tout comme vos clients.
Kubernetes, c'est comme un moteur. Il peut tourner de façon autonome, mais on obtient un véhicule pleinement fonctionnel uniquement lorsqu'on l'associe à un système de transmission, des essieux et des roues. Il ne suffit donc pas d'installer Kubernetes pour bénéficier d'une plateforme adaptée à la production.
Cette technologie nécessite d'autres composants, notamment des outils d'authentification, de mise en réseau, de sécurité, de surveillance et de gestion de journaux.
C'est là qu'intervient Red Hat OpenShift, pour vous offrir une solution complète.
Red Hat OpenShift est une plateforme Kubernetes conçue pour les entreprises. Elle 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.
Kubernetes est au cœur de la plateforme Red Hat OpenShift, une solution Kubernetes certifiée par la CNCF.
Avec Red Hat OpenShift Container Platform, les développeurs peuvent créer des applications conteneurisées, les héberger et les déployer dans le cloud rapidement et facilement grâce à de bons niveaux d'évolutivité, de contrôle et d'orchestration.
Avec l'essai gratuit de 60 jours, vous pouvez tester la plateforme Red Hat OpenShift et automatiser l'exploitation de vos conteneurs.