Kubernetes vs Docker : comprendre la différence

Contenus

Accueil » Infrastructure » Kubernetes vs Docker : comprendre la différence

Vous avez certainement entendu parler de ces deux technologies que sont Docker et Kubernetes.
En 10 ans, Docker a révolutionné le déploiement d’application à l’échelle mondiale. Kubernetes quant à lui, a révolutionné la gestion d’infrastructures Cloud, et notamment la gestion de conteneurs.

Si vous envisagez de mettre l’une ou l’autre en place dans votre entreprise, il convient d’abord de bien comprendre les avantages et les inconvénients de chaque.

Et on va commencer par vous spoiler tout de suite: les comparer n’a aucun sens.

On vous explique 👇

Qu’est-ce-que Docker ?

Docker, c’est un peu comme la révolution de la cuisine en mode fast-food, mais pour les développeurs, les devOps et les Ops. Lancé en 2013 par Solomon Hykes dans le cadre de la start-up Docker, Inc. (initialement sous le nom de dotCloud), Docker est venu changer la donne dans le monde du développement logiciel et de la gestion des infrastructures IT. Avant Docker, on s’arrachait les cheveux à essayer de s’assurer que les logiciels fonctionneraient de la même manière dans tous les environnements. Docker a introduit le concept de conteneurisation, permettant d’emballer une application et tout son environnement (bibliothèques, outils, fichiers de config, etc.) dans un conteneur léger et portable.

Ce qui est cool avec Docker, c’est qu’il permet à ces conteneurs de tourner sur n’importe quel système d’exploitation supportant Docker, éliminant ainsi le fameux « ça marche sur ma machine ». En gros, Docker facilite le déploiement, le scaling et la gestion des applications en les isolant dans ces conteneurs, rendant le développement et la production beaucoup plus fluides et prévisibles. Il a été conçu dans un contexte où l’agilité et l’efficacité de développement étaient de plus en plus demandées, répondant ainsi à un besoin crucial d’unification et de simplification des processus de déploiement et de gestion d’applications.

Pour comparer avec son ancêtre, la VM (Virtual Machine ou VPS pour Virtual Private Server), Docker permet de virtualiser le système d’exploitation là ou la VM virtualise le matériel:

 

Qu’est-ce-que Kubernetes ?

Kubernetes, souvent surnommé K8s, c’est comme le chef d’orchestre des conteneurs dans le monde du cloud computing. Né en 2014 chez Google, il est le fruit de l’expérience accumulée par le géant de la tech avec son système interne Borg. L’idée était de permettre aux entreprises de gérer leurs applications conteneurisées (comme celles que vous créez avec Docker) à une échelle jamais vue auparavant.

Conçu par Joe Beda, Brendan Burns, et Craig McLuckie, et rapidement devenu un projet maintenu par la Cloud Native Computing Foundation, Kubernetes répond à un besoin crucial dans l’écosystème cloud : orchestrer et gérer la vie et la mort des conteneurs de manière efficace, scalable, et automatique. Cela signifie qu’il peut déployer vos applications, les mettre à l’échelle selon la demande, gérer des mises à jour sans temps d’arrêt, et fournir une multitude d’autres services essentiels pour que vos applications restent en ligne et performantes, peu importe la charge.

Imaginez que votre entreprise soit une pizzeria et que vos développeurs soient des pizzaïolo. Leur travail, c’est simplement de réaliser les meilleures pizza. Une fois que la pizza sort du four, ils vont la mettre dans une boite à pizza (👋 Docker) et la poser à un endroit où elle pourra être livrée.
Eh bien, de façon très simplifiée, Kubernetes a le même rôle qu’un acteur de la livraison comme Uber Eats: il va se charger de vous trouver un livreur qui puisse livrer la pizza à votre client. Et si le livreur a un problème en route, il se débrouillera pour en affecter un autre qui pourra récupérer la pizza et finir la livraison. Vous n’avez pas 1 pizza à livrer mais 200 000 en 15 minutes ? Chacun sa guerre : c’est Uber Eats (Kubernetes) qui doit se débrouiller pour organiser les 200 000 livraisons (orchestrer vos conteneurs).

En bref, Kubernetes est là pour s’assurer que votre flotte de conteneurs navigue de manière coordonnée et efficiente, optimisant l’utilisation des ressources et simplifiant la gestion des déploiements et des services dans des environnements de cloud computing complexes. Il est devenu le système de choix pour déployer et gérer des applications conteneurisées à grande échelle, jouant un rôle clé dans l’évolution vers des infrastructures modernes, agiles et automatisées.

Kubernetes vs Docker : pourquoi la comparaison n’a aucun sens ?

On va reprendre l’exemple de la pizzeria car il répond de lui-même à la question.

Auriez-vous recherché « Pizzeria vs Uber Eats » ? Non, évidemment. L’un est un restaurant, l’autre un service de livraison.

Imaginez une pizzeria, l’endroit où la magie opère et où les pizzas sont créées avec amour et savoir-faire. C’est un peu comme Docker dans notre analogie précédente. La pizzeria s’occupe de rassembler les ingrédients, de pétrir la pâte, d’ajouter la sauce, le fromage, les garnitures, et de cuire le tout à la perfection. Chaque pizza est soigneusement préparée pour répondre aux attentes spécifiques des clients, emballée dans sa boîte, prête à être dégustée.

Maintenant, imaginez le service de livraison, comme Uber Eats. Ce n’est pas lui qui prépare les pizzas, mais il joue un rôle crucial dans l’expérience : il prend ces chefs-d’œuvre culinaires et les livre aux affamés à domicile. Uber Eats, c’est Kubernetes dans notre histoire. Il ne crée pas le contenu (les conteneurs), mais il s’assure qu’ils arrivent là où ils doivent être, en bon état et à temps. Il orchestre la logistique, gère les commandes, les trajets, et s’assure que chaque pizza arrive à la bonne adresse, tout en tenant compte du trafic et de la meilleure route à prendre.

Dire que la pizzeria est meilleure qu’Uber Eats, ou l’inverse, n’a pas vraiment de sens. L’une ne peut pas exister sans l’autre dans ce modèle d’affaires. La pizzeria a besoin d’un service de livraison efficace pour que ses pizzas atteignent les clients qui préfèrent ou doivent rester chez eux. Et Uber Eats a besoin de pizzerias qui préparent de délicieuses pizzas pour avoir quelque chose à livrer. Ensemble, ils offrent une expérience complète : de la préparation à la livraison de la pizza, chaque étape est essentielle pour satisfaire la faim des clients.

Exemples d’utilisation de Kubernetes et Docker

Imaginez-vous en train de diriger une équipe de cuisine dans un restaurant réputé. Chaque membre de votre équipe est spécialisé dans la création de différents plats délicieux, tout comme Docker est maître dans l’art de créer et de gérer des conteneurs pour vos applications. Kubernetes, lui, est comme le chef de cuisine expérimenté qui orchestre l’ensemble de l’opération, s’assurant que tout est préparé, servi, et débarrassé en temps voulu.

Pour le développement et les tests

Vous avez une idée géniale pour une application, mais avant de la lancer officiellement, vous devez la tester. Docker permet de créer un conteneur pour chaque composant de votre application (par exemple, l’interface utilisateur, le serveur de base de données, l’API, etc.), vous assurant qu’elle fonctionne de manière cohérente dans différents environnements de développement. Pensez à préparer différents plats dans des boîtes à emporter ; peu importe où vous les ouvrez, le contenu reste délicieux et prêt à consommer.

Maintenant, pour tester comment ces composants interagissent sous une charge lourde (comme un service le samedi soir dans un restaurant bondé), vous utilisez Kubernetes. Il va déployer votre application dans un environnement de test qui simule le monde réel, gérant automatiquement la montée en charge en lançant plus de conteneurs lorsque nécessaire, tout comme un chef ajuste les ressources de la cuisine pour servir plus de clients.

Pour le déploiement et la mise à l’échelle

Votre application est prête à être lancée. Docker a emballé chaque partie de l’application dans ses propres conteneurs, prêts pour le grand monde. Kubernetes entre en scène pour déployer ces conteneurs dans votre environnement de production, s’assurant qu’ils sont répartis de manière optimale sur vos serveurs pour une performance maximale, tout comme un chef organise la cuisine pour un service efficace.

Lorsque votre application devient populaire (gg 👌) et que le trafic augmente, pas de panique. Kubernetes ajuste automatiquement les ressources, ajoutant plus de conteneurs ou de serveurs au besoin, sans que vous ayez à intervenir manuellement. C’est comme si votre restaurant pouvait automatiquement ouvrir plus de tables et embaucher plus de personnel en plein rush.

Pour l’optimisation des ressources

Utiliser Docker et Kubernetes ensemble, c’est aussi une question d’économie. Docker assure que chaque application utilise uniquement les ressources dont elle a besoin, évitant le gaspillage. Kubernetes, de son côté, optimise l’utilisation des serveurs en exécutant des conteneurs de manière dense, réduisant les coûts d’infrastructure. Imaginez un restaurant qui maximise l’utilisation de chaque ingrédient et optimise l’espace de la cuisine pour éviter le gaspillage et réduire les coûts.

En résumé, Docker et Kubernetes offrent une combinaison puissante pour le développement, le déploiement, et la gestion d’applications modernes, du concept initial jusqu’à la mise à l’échelle en production. Comme dans une cuisine bien huilée, chaque outil joue un rôle clé dans la préparation du festin final.

Questions fréquentes

Qui utilise Kubernetes ?

Les grands groupes comme Bouygues, Michelin, BNP et LVMH ont tous intégrés Kubernetes dans leur stack depuis plusieurs années maintenant.
En 2015, soit 1 an après la première version stable de K8S, Mercedes-Benz annonçait déjà l’utilisation en production de plus de 900 clusters Kubernetes.

On retrouve aussi énormément Kubernetes dans le monde des start-up (Netflix, Swile, Doctolib, Qonto, etc.) et de plus en plus chez nos clients pour des équipes techniques de taille plus modeste.
Vous pourrez trouver une liste intéressante sur le site de Welcome To The Jungle pour vous en faire une idée.

Qui utilise Docker ?

Docker est massivement utilisé par les équipes technologiques de toutes tailles (de la BNP à la TPE du coin) pour gérer la conteneurisation et le déploiement de leurs applicatifs.

Bien que Docker ai été déprécié par Kubernetes depuis sa version 1.20 au profit de Conteneurd, Docker reste une solution très utilisée en dehors de Kubernetes, notamment via des outils comme Docker-swarm qui permettent l’orchestration des containers.

Comment se prononce Kubernetes ?

Kubernetes se prononce « Koo-ber-nay-tees ». Le nom vient du grec, signifiant gouvernail ou pilote, ce qui reflète bien son rôle dans l’orchestration de conteneurs.

Maintenant si vous préférez dire « Ku-bèr-nèt » bien à la Française, tout le monde vous comprendra quand même.

Quelle est la différence entre Docker et Docker-compose ?

Docker permet la conteneurisation de vos applicatifs pour en simplifier le déploiement. Docker-compose permet de définir comment ces conteneurs doivent se déployer et interagir entre eux pour que votre application fonctionne correctement.

Par exemple: vous allez créer un conteneur Docker contenant le code de votre application NodeJS. Le conteneur Docker saura comment lancer votre application et quel port exposer (à priori le 80 et/ou le 443).
Mais il est fort probable que votre application ait aussi besoin de communiquer avec une base de données, imaginons un serveur MySQL. Il vous faudra donc un deuxième conteneur Docker avec votre base de donnée.
Dans ce cas, docker-compose va vous permettre de définir dans un fichier de configuration comment ces deux conteneurs doivent être lancés et comment ils doivent communiquer pour arriver à produire le résultat souhaité. Vous n’aurez plus qu’à taper « docker-compose up » pour exécuter la configuration, déployer ces 2 conteneurs et avoir une application en ligne.

CMO & Co-fondateur @ Log'in Line

Audit gratuit

Nos experts auditent gratuitement votre infrastructure pour réduire vos coûts.

Nos dernières recherches

Comment (bien) nommer ses images Docker ?

Comment (bien) nommer ses images Docker ?

Les images Docker sont le fondement de la technologie des conteneurs, permettant aux développeurs de créer, distribuer et exécuter des applications de manière cohérente et isolée. Cependant, une question cruciale se pose lors de la gestion des images Docker : comment gérer correctement leur nom et pourquoi est-il essentiel d’indiquer la registry où elles doivent être récupérées ?

Les challenges du CTO – Notes d’interview

On a eu la chance de pouvoir interviewer le CTO d’une entreprise SaaS B2B avec laquelle nous travaillons. On a abordé quelques sujets sensibles, l’entreprise qui témoigne a accepté de partager le contenu de notre conversation mais a tenu à rester anonyme … 🤫

Commencer par un audit gratuit