Kubernetes

Kubernetes contre Docker

Kubernetes contre Docker
Kubernetes et Docker ont le vent en poupe. Les deux technologies ont des racines très différentes, mais se sont entrelacées ces dernières années d'une manière que personne ne s'attendait à ce qu'elles. Les communautés se sont regroupées, les packages sont portés sur tous les systèmes d'exploitation possibles et étant largement open source, ils ont donné lieu à une pléthore de projets de satellites et de concurrents.

Tout cela peut être accablant pour tout nouvel utilisateur essayant de comprendre ce paradigme relativement nouveau. Discutons des principales différences entre Kubernetes et Docker en examinant d'abord plus en profondeur ce que signifient réellement les technologies. Si vous connaissez un peu Docker ou K8 (abréviation de Kubernetes), vous pouvez passer directement à la section TL; DR.

Qu'est-ce que Docker?

Docker est une technologie de conteneurisation. Vous pouvez exécuter plusieurs applications toutes isolées les unes des autres sur le même système d'exploitation sans avoir besoin de virtualisation mais avec tous les avantages d'un environnement virtualisé. Considérez les conteneurs Docker comme des machines virtuelles très légères pour Linux (également Windows, mais ce n'est pas aussi populaire).

Docker a 3 composants principaux, d'abord le moteur Docker qui s'exécute en arrière-plan et gère les conteneurs en cours d'exécution et leur approvisionnement. Il expose une API REST que le client Docker consomme et cela permet aux utilisateurs d'interagir avec Docker et de créer de nouveaux conteneurs, ou de gérer ceux en cours d'exécution.

Docker, cependant, est une application système unique. Cela signifie qu'il exécute et gère les conteneurs sur n'importe quel système sur lequel il s'exécute.  D'énormes applications avec une tonne de trafic et des millions de requêtes provenant du monde entier ont besoin de plus d'un serveur. C'est là qu'intervient Kubernetes.

Qu'est-ce que Kubernetes?

Kubernetes tire parti des technologies de conteneurisation, telles que Docker, pour exécuter plusieurs répliques de votre application sur des serveurs et des centres de données dans le monde entier.

L'une des technologies de conteneurisation utilisées par Kubernetes est Docker. Kubernetes se compose de toute une gamme de logiciels différents pour gérer votre cluster. Il fournit un agent de gestion kubeadm, qui s'exécute sur quelques nœuds maîtres sélectionnés (les nœuds sont des serveurs VPS ou physiques), puis il y a des nœuds de travail sur lesquels Docker est installé avec un kubectl qui communique avec le moteur Docker pour automatiser le processus de rotation ou de retrait des conteneurs. Les agents kubectl s'exécutant sur tous les nœuds de travail prennent les commandes du nœud maître et leur donnent des informations sur l'état de l'application s'exécutant sur leur nœud. Voici à peu près comment une installation K8 fonctionne généralement.

Vous pouvez également agréger différents conteneurs Docker associés dans des packages (appelés pods). Par exemple, vous pouvez regrouper la base de données SQL et les conteneurs de cache Redis dans un pod, car vous souhaitez que la base de données et son cache coexistent.

De même, vous pouvez exposer des pods aux autres pods en tant que services (également appelés microservices) afin que vous puissiez avoir 50 pods SQL/Redis exposés en tant que service de banque de données au front-end de votre application et ainsi de suite. L'avantage que vous obtenez est que les 50 pods peuvent fonctionner sur plusieurs centres de données et même si certains d'entre eux tombent en panne, d'autres prendront le relais.

Kubernetes est bien plus qu'une technologie. C'est une façon de raisonner sur l'exécution de votre logiciel sur un système distribué.

Kubernetes sans Docker

Comme vous pouvez le constater d'après ce qui précède, K8 dépend fortement des conteneurs. Docker n'est que l'une des nombreuses technologies de conteneurisation qui existent. D'autres incluent rkt par CoreOS, LXC par Canonical, Jails sur FreeBSD et Zones dans Illumos et SmartOS. Kubernetes pourrait potentiellement être implémenté sur n'importe laquelle de ces technologies. En fait, cela fonctionne assez bien avec rkt de CoreOS.

Cependant, en raison de la popularité de Docker, la communauté et les organisations sont allées au-delà pour s'assurer que Docker offre tout ce que les spécifications de Kubernetes lui demandent. C'est pour cette raison que même des projets comme Docker sur macOS et PC sont certifiés Kubernetes.

Docker sans Kubernetes

La façon dont Kubernetes dispose de l'un des meilleurs supports lors de l'utilisation de Docker, Docker lui-même s'appuie fortement sur Kubernetes pour déployer des conteneurs à grande échelle. Docker possède son propre système de gestion et d'orchestration de conteneurs appelé Docker Swarm, qui est censé être une alternative à Kubernetes.

Bien que Docker Swarm soit une technologie native sur Docker, Kubernetes est ce que les gens demandent et les projections actuelles du marché semblent indiquer que K8 va gagner la plus grande part de marché. Docker doit son succès en grande partie à sa symbiose avec Kubernetes.

TL;DR

Pour faire court, Docker est une technologie de conteneurisation destinée à s'exécuter sur un seul ordinateur. Kubernetes est une technologie de gestion qui gère un grand nombre de conteneurs sur de nombreux nœuds de calcul.

Docker se trouve être l'une des technologies les plus adaptées pour construire votre pile K8 avec. Vous commencez par vous assurer que votre application s'exécute en tant que conteneur Docker, puis K8 s'assure que ce conteneur peut évoluer dans le monde entier, si le besoin se fait sentir à l'avenir.

Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...
0 A.ré. Didacticiel
Sur les nombreux jeux de stratégie disponibles, 0 A.ré. parvient à se démarquer comme un titre complet et un jeu tactique très profond bien qu'il soit...
Tutoriel Unity3D
Introduction à Unity 3D Unity 3D est un puissant moteur de développement de jeux. C'est une plateforme multiplateforme qui vous permet de créer des je...