Kubernetes et Docker
Concevez, déployez et mettez à l’échelle des applications plus rapidement avec des technologies de conteneur qui fonctionnent plus efficacement ensemble.
La question Kubernetes/ Docker
La question au cœur des débats sur les différences entre Kubernetes et Docker est souvent formulée comme suit : dois-je plutôt utiliser Kubernetes ou Docker ? Cela revient à comparer des pommes avec une tarte aux pommes , c’est une méprise courante de penser qu’il faut choisir soit l’un, soit l’autre.
La différence entre Kubernetes et Docker est plus facile à comprendre si on démontre leur complémentarité plutôt que de les mettre en opposition. En réalité, il n’y a pas à choisir : Kubernetes et Docker sont des technologies fondamentalement différentes qui fonctionnent bien ensemble pour créer, déployer et mettre à l’échelle des applications conteneurisées.
Docker et l’avènement de la conteneurisation
Docker est une technologie open source, et un format de fichier conteneur, pour l’automatisation du déploiement d’applications sous forme de conteneurs portables, autonomes, pouvant s’exécuter dans le cloud ou en local. Docker, Inc., malgré un nom similaire, est l’une des sociétés qui préconisent l’exécution de la technologie Docker open source sur Linux et Windows en collaboration avec des fournisseurs de cloud comme Microsoft.
Même si l’idée d’isoler les environnements n’a rien de nouveau et qu’il existe d’autres types de logiciels de conteneurisation, Docker a connu un essor ces dernières années, devenant le format de conteneur par défaut. Docker comprend le moteur Docker, un environnement runtime. Il permet de créer et d’exécuter des conteneurs sur n’importe quelle machine de développement, puis de stocker ou de partager des images conteneur via un registre de conteneurs comme Docker Hub ou Azure Container Registry.
À mesure que les applications s'étendent sur plusieurs conteneurs déployés sur plusieurs serveurs, leur utilisation se complexifie. Docker propose certes une norme ouverte pour le packaging et la distribution d’applications conteneurisées, mais les complexités potentielles peuvent vite s’accumuler. Comment coordonner et planifier un nombre important de conteneurs ? Comment les différents conteneurs au sein de votre application communiquent-ils entre eux ? Comment mettre à l’échelle un nombre important d’instances de conteneur ? C’est là qu’intervient Kubernetes.
Kubernetes et l’orchestration de conteneurs
Kubernetes est un logiciel d’orchestration open source qui fournit une API pour contrôler le mode et l’emplacement d’exécution de ces conteneurs. Il permet d’exécuter vos conteneurs Docker et charges de travail, et vous aide à faire face à certaines complexités opérationnelles lors de la mise à l’échelle de plusieurs conteneurs, répartis sur plusieurs serveurs.
Kubernetes permet d’orchestrer un cluster de machines virtuelles et de planifier l’exécution des conteneurs sur ces machines virtuelles en fonction de leurs ressources de calcul et des besoins de chaque conteneur. Les conteneurs sont regroupés dans des pods, l'unité opérationnelle de base de Kubernetes. Ces conteneurs et pods peuvent être adaptés à l’état souhaité et vous pouvez gérer leur cycle de vie pour assurer la bonne exécution de vos applications.
Quelle est la différence entre Kubernetes et Docker ?
Kubernetes est un logiciel d’orchestration open source qui fournit une API pour contrôler le mode et l’emplacement d’exécution de ces conteneurs. Il permet d’exécuter vos conteneurs Docker et charges de travail, et vous aide à faire face à certaines complexités opérationnelles lors de la mise à l’échelle de plusieurs conteneurs, répartis sur plusieurs serveurs.
Kubernetes permet d’orchestrer un cluster de machines virtuelles et de planifier l’exécution des conteneurs sur ces machines virtuelles en fonction de leurs ressources de calcul et des besoins de chaque conteneur. Les conteneurs sont regroupés dans des pods, l'unité opérationnelle de base de Kubernetes. Ces conteneurs et pods peuvent être adaptés à l’état souhaité et vous pouvez gérer leur cycle de vie pour assurer la bonne exécution de vos applications.
Kubernetes et Docker : l’union fait la force
Le principe des conteneurs est le suivant : « coder une fois, exécuter partout ». Or, Kubernetes permet d’orchestrer et de gérer toutes vos ressources de conteneur à partir d’un seul et même plan de contrôle. Cela aide pour la gestion réseau, l’équilibrage de charge, la sécurité et la mise à l’échelle sur tous les nœuds Kubernetes qui exécutent vos conteneurs. Kubernetes dispose également d’un mécanisme d’isolation intégré comme les espaces de noms, qui permet de regrouper les ressources conteneurisées par autorisation d’accès, environnements intermédiaires, entre autres. Grâce à ces structures, les équipes informatiques fournissent plus facilement aux développeurs un accès en libre-service aux ressources, leur permettant ainsi de travailler en collaboration, même sur les architectures de microservices les plus complexes, sans avoir à simuler l’intégralité de l’application dans leur environnement de développement. La combinaison des pratiques DevOps avec les conteneurs et Kubernetes renforce l’établissement d’une base d’architecture de microservices favorisant un déploiement rapide et une orchestration évolutive des applications cloud natives.
En résumé, utilisez Kubernetes avec Docker pour :
- renforcer la robustesse de votre infrastructure et la haute disponibilité de vos applications. Votre application reste en ligne, même si certains nœuds sont hors connexion.
- renforcer encore l’évolutivité de votre application. Si votre application commence à recevoir davantage de charge et que vous avez besoin de monter en charge pour pouvoir fournir une meilleure expérience utilisée, il est facile de déployer davantage de conteneurs ou d’ajouter plus de nœuds à votre cluster Kubernetes.
Kubernetes et Docker fonctionnent ensemble. Docker propose une norme ouverte à des fins d'empaquetage et de distribution des applications conteneurisées. À l'aide de Docker, vous pouvez créer et exécuter des conteneurs, ainsi que stocker et partager des images de conteneur. Il est facile d’exécuter une instance Docker sur un cluster Kubernetes, mais Kubernetes n’est pas une solution complète en soi. Pour optimiser Kubernetes en production, mettez en œuvre des outils et services supplémentaires pour gérer la sécurité, la gouvernance, les identités et les accès, ainsi que les workflows d’intégration continue/de déploiement continu (CI/CD) et d’autres pratiques DevOps.
Architectures de solutions Kubernetes et Docker en production
Microservices avec AKS
AKS permet de simplifier le déploiement et la gestion de l’architecture basée sur des microservices. AKS rationalise la scalabilité horizontale, l’auto-adaptation, l’équilibrage de charge, la gestion des secrets.
Secure DevOps pour AKS
DevOps et Kubernetes fonctionnent mieux ensemble. L’implémentation sécurisée de DevOps avec Kubernetes sur Azure vous permet d’atteindre un équilibre entre vitesse et sécurité, et de fournir du code plus rapidement à grande échelle.
Appuyez-vous sur la force de Kubernetes avec Azure
Il est facile de déployer et de gérer vos applications conteneurisées avec Azure Kubernetes Service (AKS). AKS offre une expérience CI/CD Kubernetes serverless intégrée, ainsi qu’une sécurité et une gouvernance avancées. Réunissez vos équipes dédiées au développement et aux opérations sur une même plateforme pour rapidement créer, livrer et mettre à l'échelle des applications en toute confiance.
Ressources
Vidéos, webinaires, démonstrations, sessions techniques
Didacticiels et documents
Voir les stratégies de déploiement de Kubernetes
Installer une extension Docker avec Visual Studio
Exécuter des images de conteneur dans Kubernetes
Mettre à l’échelle une application et l’infrastructure Kubernetes
Mettre à jour une application en cours d’exécution dans Kubernetes
Communauté open source
Rejoignez d’autres utilisateurs AKS sur Github, à KubeCon ou à une réunion Kubernetes près de chez vous.
En savoir plus sur l'open source sur Azure
Voir les API, kits de développement logiciel (SDK) et projets open source à partir d'Azure