Qu’est-ce que Kubernetes ?

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.

Les termes clés pour comprendre Kubernetes

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.

Cluster

Ensemble de machines, appelées individuellement « nœuds », utilisées pour exécuter des applications conteneurisées gérées par Kubernetes.

Nœud

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.

Conteneur cloud

Image qui contient un software et ses dépendances.

Pod

Conteneur unique ou ensemble de conteneurs s’exécutant sur un cluster Kubernetes.

Déploiement

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.

Ensemble de réplicas

Vérifie que le nombre voulu de répliques de pod sont exécutées simultanément.

Service

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.

Qu’est-ce que KubeCon ?

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.

Que sont les conteneurs 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.

Comparaison entre Kubernetes et Docker

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.

Quels sont les composants de Kubernetes ?

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é.

Qu’est-ce que Kubernetes ?

Le plan de contrôle contient les éléments suivants :

  • Serveur d’API Kubernetes : fournit l’interface de programmation (API) pour contrôler Kubernetes
  • etcd : magasin de valeurs-clés pour les données de cluster
  • Ordonnanceur Kubernetes : associe les nouveaux pods aux nœuds disponibles
  • Gestionnaire de contrôleurs Kubernetes : exécute divers processus pour gérer la défaillance des nœuds, contrôler la réplication, joindre les services et les pods via des points de terminaison et contrôler les comptes et les jetons d’accès
  • Gestionnaire-contrôleur cloud : aide à gérer les API de fournisseurs cloud spécifiques autour d’aspects tels que les routes d’infrastructure spécifiques et l’équilibrage de charge

Les composants de nœud sont les suivants :

  • kubelet : un agent qui vérifie que les conteneurs s’exécutent dans un pod
  • Proxy réseau Kubernetes : gère les règles du réseau
  • Docker, containerd ou autre type d’exécution de conteneur

Quels sont les avantages de Kubernetes ?

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.

Quels sont les défis liés à l’utilisation de Kubernetes ?

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.

Qu’est-ce que Kubernetes géré ?

Cloud Native et Kubernetes transforment le soutien apporté aux entreprises par AgroScout.

Notre instance Cloud Infrastructure Container Engine for Kubernetes est un service géré facile à utiliser en matière de développement que vous pouvez utiliser pour déployer vos applications en conteneur dans le cloud. Utilisez Container Engine for Kubernetes 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 Container Engine for Kubernetes les provisionne sur une location Cloud Infrastructure existante.

Bien qu'il ne soit pas indispensable d’utiliser un service Kubernetes géré, Cloud Infrastructure Container Engine for Kubernetes 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. Container Engine for Kubernetes 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.


L’écosystème et la communauté Kubernetes

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.

Comment démarrer avec Kubernetes

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 :

  • Configurer un environnement de développement local avec Docker et Kubernetes
  • Créer un microservice Java simple avec Helidon
  • Créer le microservice dans une image de conteneur avec Docker
  • Déployer le microservice sur un cluster Kubernetes local
  • Faire évoluer le microservice à la hausse ou à la baisse sur le cluster

Kubernetes pour les développeurs

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.


Introduction à Kubernetes sur OCI (8:32)