Souvent décrit comme le « système d’exploitation du cloud, » Kubernetes est une plateforme open source de gestion de clusters d’applications et de services en conteneur. Développé en 2014 par Joe Beda, Brendan Burns et Craig McLuckie, ingénieurs chez Google et publié en open source peu de temps après, Kubernetes est rapidement devenu un écosystème natif cloud florissant à part entière. Aujourd’hui, Kubernetes, qui signifie « barreur » ou « pilote » en grec ancien, est géré par la Cloud Native Computing Foundation (CNCF), une branche de la Linux Foundation.
Kubernetes a été le premier projet de la CNCF à être le sujet d’une formation diplômante, et il est devenu l’un des projets open source à la croissance la plus rapide de l’histoire. Kubernetes compte désormais plus de 2 300 contributeurs et a été largement adopté par les entreprises, grandes et petites, dont la moitié figurent au classement Fortune 100.
Pour commencer, voici quelques termes liés à Kubernetes. Une liste plus exhaustive est disponible sur la page du glossaire normalisé de Kubernetes. Vous pouvez également consulter l'antisèche sur Kubernetes, qui reprend une liste de commandes et d’indicateurs kubectl couramment utilisés.
Ensemble de machines, appelées individuellement « nœuds », utilisées pour exécuter des applications conteneurisées gérées par Kubernetes.
Il s'agit d'une machine virtuelle ou physique. Un cluster se compose d'un nœud maître et de plusieurs nœuds de travail.
Image qui contient un software et ses dépendances.
Conteneur unique ou ensemble de conteneurs s’exécutant sur un cluster Kubernetes.
Objet qui gère les applications répliquées représentées par des pods. Les pods sont déployés sur les nœuds d’un cluster.
Vérifie que le nombre voulu de répliques de pod sont exécutées simultanément.
Indique comment accéder aux applications représentées par un ensemble de pods. Les services décrivent généralement les ports et les équilibreurs de charge. Ils peuvent être utilisés pour contrôler l’accès interne et externe à un cluster.
KubeCon est la conférence annuelle des développeurs et des utilisateurs de Kubernetes. Depuis la première édition en 2015, qui rassemblait 500 participants, la KubeCon est devenue un événement important pour la communauté native cloud. En 2019, l’édition de KubeCon à San Diego, en Californie, a attiré 12 000 développeurs et ingénieurs en fiabilité de site qui célébraient l’écosystème open source qui voyait le jour autour de la plateforme d’orchestration cloud Kubernetes.
Alors que les développeurs déploient de plus en plus de logiciels pour un ensemble diversifié d’environnements informatiques avec différents clouds, environnements de test, ordinateurs portables, terminaux, systèmes d’exploitation et plateformes, la question de la fiabilité des logiciels revêt une importance capitale. C'est là que les conteneurs entrent en scène : ils regroupent une application et tout son environnement d'exécution. En ce sens, les conteneurs sont une forme de virtualisation, car ils fournissent une « bulle » dans laquelle l’application peut s’exécuter en incluant les bibliothèques, dépendances et systèmes d’exploitation appropriés. Mais les conteneurs sont plus petits que les machines virtuelles, car ils ne contiennent que les ressources dont l’application a besoin et rien de plus.
Si les conteneurs Linux existent depuis 2008, il aura fallu attendre l’émergence des conteneurs Docker en 2013 pour qu'ils se démocratisent. De même, l'engouement pour le déploiement d’applications conteneurisées (applications contenant tout ce dont elles ont besoin pour s’exécuter) a en fin de compte créé un nouveau problème, puisqu'il faut à présent pouvoir gérer des milliers de conteneurs. Kubernetes orchestre automatiquement le cycle de vie du conteneur, en répartissant les conteneurs sur l’ensemble de l’infrastructure d’hébergement. Kubernetes augmente ou diminue les ressources, selon la demande. Il provisionne, planifie, supprime et surveille l’intégrité des conteneurs.
Les composants clés de Kubernetes sont les clusters, les nœuds et le plan de contrôle. Les clusters contiennent des nœuds. Chaque nœud comprend un ensemble d’au moins une machine de travail. Les nœuds hébergent des pods contenant des éléments de l’application déployée. Le plan de contrôle gère les nœuds et les pods du cluster, souvent sur de nombreux ordinateurs, pour une haute disponibilité.
Le plan de contrôle contient les éléments suivants :
Les composants de nœud sont les suivants :
Grâce aux conteneurs, vous pouvez être sûr que vos applications sont fournies avec tout ce dont elles ont besoin pour s’exécuter. Mais à mesure que vous ajoutez des conteneurs, qui contiennent souvent des microservices, vous pouvez les gérer et les distribuer automatiquement grâce à Kubernetes.
Avec Kubernetes, les organisations peuvent effectuer les opérations suivantes :
Mettre à l’échelle automatiquement | Augmentez ou diminuez les déploiements, selon la demande. |
Découvrir les services | Trouvez des services en conteneur grâce au DNS ou à l’adresse IP. |
Équilibrer les charges | Stabiliser le déploiement en distribuant le trafic réseau. |
Gérer le stockage | Choisissez un stockage local ou cloud. |
Contrôler les versions | Choisissez les types de conteneurs que vous souhaitez exécuter et ceux à remplacer à l’aide d’une nouvelle image ou de nouvelles ressources de conteneur. |
Gérer la sécurité | Mettez à jour en toute sécurité les mots de passe, les jetons OAuth et les clés SSH associés à des images de conteneur spécifiques. |
Bien que Kubernetes soit hautement composable et puisse prendre en charge tout type d’application, il peut être difficile à comprendre et à utiliser. Kubernetes n’est pas toujours la bonne solution pour une charge de travail donnée, comme l’ont indiqué plusieurs membres de la CNCF. C’est pourquoi l’écosystème Kubernetes contient un certain nombre d’outils cloud natifs associés que les organisations ont créés pour résoudre des problèmes liés à des charge de travail spécifiques.
Kubernetes déploie des conteneurs, pas du code source, et ne crée pas d’applications. Pour la journalisation, le middleware, la surveillance, la configuration, la CI/CD et de nombreuses autres activités de production, vous aurez besoin d’outils supplémentaires. Cela dit, Kubernetes est extensible et s’est révélé adapté à une kyrielle de cas d’utilisation, d’avions à réaction au machine learning. En fait, les fournisseurs de cloud, notamment Oracle, Google, Amazon Web Services, et autres, ont utilisé l’extensibilité de Kubernetes pour créer des Kubernetes gérés, qui sont des services qui réduisent la complexité et augmentent la productivité des développeurs.
Notre instance Cloud Infrastructure Kubernetes Engine est un service géré convivial pour les développeurs que vous pouvez utiliser pour déployer vos applications en conteneur dans le cloud. Utilisez Kubernetes Engine lorsque votre équipe de développement souhaite créer, déployer et gérer en toute fiabilité des applications cloud natives. Vous spécifiez les ressources de calcul dont vos applications ont besoin et Kubernetes Engine les provisionne sur une location Cloud Infrastructure existante.
Bien qu'il ne soit pas indispensable d’utiliser un service Kubernetes géré, Cloud Infrastructure Kubernetes Engine constitue un moyen simple d'exécuter des clusters hautement disponibles avec le contrôle, la sécurité et les performances prévisibles d'Oracle Cloud Infrastructure. Kubernetes Engine prend en charge à la fois le bare metal et les machines virtuelles en tant que nœuds, il est certifié conforme par le CNCF. Vous bénéficiez également de toutes les mises à jour Kubernetes et conservez la compatibilité avec l’écosystème CNCF sans travail supplémentaire de votre part.
Oracle est membre Platine de la Cloud Native Computing Foundation (CNCF), une communauté open source qui soutient plusieurs dizaines de projets de développement logiciel organisés par niveau de maturité. Les divers projet (Kubernetes, Prometheus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUF et Helm) sont des outils précieux pour tous les aspects du développement natif du cloud.
Kubernetes dispose d’un vaste écosystème de projets de soutien qui se sont développés autour. Cette diversité peut être intimidante et rechercher des réponses à des questions simples peut s’apparenter à rechercher une aiguille dans une botte de foin. Mais les premières étapes de ce parcours sont simples et permettent d’explorer des concepts avancés en fonction de vos besoins. Découvrez comment :
Les développeurs désireux de démarrer leur premier projet Kubernetes peuvent consulter notre portail pour les développeurs afin d'apprendre comment créer une application Arm sur Kubernetes ou déployer un cluster Kubernetes à l'aide du shell cloud.