web-dev-qa-db-fra.com

Que fait réellement Kubernetes?

Kubernetes est facturé comme un cluster de conteneurs "planificateur/orchestrateur", mais je n'ai aucune idée de ce que cela signifie. Après avoir lu le site Kubernetes et le wiki (vague) GitHub, le mieux que je puisse dire est qu’il détermine en quelque sorte les machines virtuelles disponibles/capables d’exécuter votre conteneur Docker, puis de les déployer à cet emplacement. Mais ce n’est que ce que je pense, et je n’ai pas trouvé de verbiage concret dans leur documentation pour appuyer cela.

Alors, qu'est-ce que Kubernetes, exactement, et quels sont certains spécifiques problèmes résolus?

116
smeeb

Kubernetes a pour objectif de faciliter l'organisation et la planification de votre application sur un parc de machines. À un niveau élevé, c'est un système d'exploitation pour votre cluster.

En gros, cela vous permet de ne pas vous soucier de la machine spécifique sur laquelle votre application s'exécute dans votre centre de données. En outre, il fournit des primitives génériques pour la vérification de l'intégrité et la réplication de votre application sur ces machines, ainsi que des services pour le câblage de votre application dans des micro-services afin que chaque couche de votre application soit découplée des autres couches afin que vous puissiez les mettre à l'échelle, les mettre à jour et les gérer. indépendamment.

Bien qu'il soit possible de réaliser nombre de ces tâches dans la couche d'application, ces solutions ont tendance à être uniques et fragiles, mais il est préférable de séparer les problèmes, lorsqu'un système d'orchestration s'inquiète de la façon dont votre application doit être exécutée et le code qui compose votre application.

95
brendan

Comme vous l'avez lu dans sa page Github :

Kubernetes est un système open source permettant de gérer des applications conteneurisées sur plusieurs hôtes. Il fournit des mécanismes de base pour le déploiement, la maintenance et la mise à l'échelle des applications.

Kubernetes est:

lean: lightweight, simple, accessible
portable: public, private, hybrid, multi cloud
extensible: modular, pluggable, hookable, composable
self-healing: auto-placement, auto-restart, auto-replication

Kubernetes s’appuie sur une expérience de quinze ans chez Google dans l’exécution de tâches de production à grande échelle, combinées aux meilleures idées et pratiques de la communauté.

Pour moi, Kubernetes est un outil d’orchestration de conteneur de Google. En raison de sa conception, vous pouvez implémenter la compatibilité avec n’importe quel moteur de conteneur, mais je pense qu’il est désormais limité à Docker. Il y a quelques concepts importants dans son architecture:

Kubernetes fonctionne avec les concepts suivants:

Les clusters sont les ressources de calcul sur lesquelles sont construits vos conteneurs. Kubernetes peut courir n'importe où! Consultez les Guides de mise en route pour obtenir des instructions sur une variété de services.

Les pods sont un groupe de conteneurs Docker co-localisés avec des volumes partagés. Ce sont les plus petites unités déployables pouvant être créées, planifiées et gérées avec Kubernetes. Les pods peuvent être créés individuellement, mais il est recommandé d'utiliser un contrôleur de réplication même si vous créez un seul pod. Plus sur les pods.

Les contrôleurs de réplication gèrent le cycle de vie des pods. Ils veillent à ce qu'un nombre spécifié de pods soient exécutés à tout moment, en créant ou en supprimant des pods selon les besoins. En savoir plus sur les contrôleurs de réplication.

Les services fournissent un nom et une adresse uniques et stables pour un ensemble de modules. Ils agissent comme des équilibreurs de charge de base. Plus sur les services.

Les étiquettes sont utilisées pour organiser et sélectionner des groupes d'objets en fonction de paires clé: valeur. Plus sur les étiquettes.

Ainsi, vous avez un groupe de machines qui forment un cluster dans lequel vos conteneurs sont exécutés. Vous pouvez également définir un groupe de conteneurs fournissant un service, comme vous le feriez avec d’autres outils tels que fig (par exemple: le pod Webapp peut être un Rails et une base de données postgres). disposent également d’autres outils pour assurer un certain nombre de conteneurs/pods d’un service fonctionnant simultanément, un magasin clé-valeur, une sorte d’équilibreur de charge intégré ...

Si vous connaissez quelque chose sur les coreos, c'est une solution très similaire, mais celle de Google. Algo Kubernetes a une bonne intégration avec Google Cloud Engine.

14
Javier Cortejoso

Kubernetes fournit une grande partie des mêmes fonctionnalités que les API d'infrastructure en tant que service, mais vise des conteneurs planifiés de manière dynamique plutôt que des machines virtuelles et des systèmes de plate-forme en tant que service, mais avec une plus grande flexibilité, notamment:

  • montage de systèmes de stockage,
  • la distribution de secrets,
  • vérification de l'état de l'application,
  • réplication d'instances d'application,
  • mise à l'échelle automatique horizontale,
  • dénomination et découverte,
  • l'équilibrage de charge,
  • mises à jour roulantes,
  • surveillance des ressources,
  • accès au journal et ingestion,
  • prise en charge de l'introspection et du débogage, et
  • identité et autorisation.

Si vous utilisez déjà d'autres mécanismes pour la découverte de services, la distribution secrète, l'équilibrage de charge, la surveillance, etc., vous pouvez bien entendu continuer à les utiliser, mais nous visons à faciliter la transition vers Kubernetes à partir de systèmes IaaS et PaaS existants en fournissant cette fonctionnalité.

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-can-it-do

7
briangrant