Que fait réellement Kubernetes?

Kubernetes est présenté comme un cluster de conteneur “scheduler / orchestrator”, mais je n’ai aucune idée de ce que cela signifie. Après avoir lu le site de Kubernetes et le wiki (vague) de GitHub, le mieux que je puisse dire est que cela permet de déterminer quelles machines virtuelles sont disponibles et capables d’exécuter votre conteneur Docker, et de les déployer ensuite. Mais ce n’est que ce que je pense, et je n’ai vu aucun document concret à ce sujet.

Alors, qu’est-ce que Kubernetes, exactement , et quels sont les problèmes spécifiques qu’il résout?

Le but de Kubernetes est de faciliter l’organisation et la planification de votre application sur un parc de machines. À un niveau élevé, il s’agit d’un système d’exploitation pour votre cluster.

Fondamentalement, il vous permet de ne pas vous soucier de la machine spécifique de votre centre de données sur laquelle chaque application s’exécute. 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 connecter votre application à des micro-services afin que chaque couche de votre application soit découplée des autres couches. indépendamment.

Bien qu’il soit possible de faire beaucoup de ces choses dans la couche application, ces solutions ont tendance à être uniques et fragiles, il est préférable de séparer les préoccupations, où un système d’orchestration s’interroge sur la façon d’exécuter votre application, et vous vous inquiétez le code qui constitue votre application.

Comme vous l’avez lu sur sa page Github :

Kubernetes est un système open source pour la gestion des applications conteneurisées sur plusieurs hôtes, fournissant 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 décennie et demie d’expérience chez Google en charge des charges de travail de production à grande échelle, combinée aux meilleures idées et pratiques de la communauté.

Pour moi, Kubernetes est un outil d’orchestration de conteneurs de Google. Grâce à sa conception, vous pouvez implémenter la compatibilité avec n’importe quel moteur de conteneur, mais je pense que maintenant, il est 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 fonctionner n’importe où! Consultez les guides de démarrage pour obtenir des instructions sur divers services.

Les pods sont un groupe de conteneurs Docker regroupé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. En savoir plus sur les gousses.

Les contrôleurs de réplication gèrent le cycle de vie des modules. Ils veillent à ce qu’un certain nombre de modules fonctionnent à un moment donné, en créant ou en supprimant des modules en fonction des 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. En savoir plus sur les services.

Les étiquettes permettent d’organiser et de sélectionner des groupes d’objects en fonction de paires clé / valeur. En savoir plus sur les étiquettes.

Donc, vous avez un groupe de machines qui forme un cluster sur lequel vos conteneurs sont exécutés. Vous pouvez également définir un groupe de conteneurs qui fournissent un service, comme vous le feriez avec d’autres outils tels que fig (par exemple: le webapp pod peut être un serveur de rails et une firebase database postgres). Vous disposez également d’autres outils pour garantir un certain nombre de conteneurs / modules d’un service s’exécutant simultanément, un magasin de valeurs-clés, une sorte d’équilibreur de charge intégré …

Si vous connaissez quelque chose à propos de Coreos, c’est une solution très similaire, mais de Google. Algo Kubernetes a une bonne intégration avec Google Cloud Engine.

Kubernetes fournit une grande partie des mêmes fonctionnalités que les API Infrastructure en tant que service, mais vise les conteneurs à planification dynamic plutôt que les machines virtuelles, et en tant que systèmes Plateforme en tant que service, mais avec une plus grande flexibilité, notamment:

  • assembly de systèmes de stockage,
  • dissortingbuer des secrets,
  • vérification de la santé des applications,
  • répliquer des instances d’application,
  • mise à l’échelle automatique horizontale,
  • dénomination et découverte,
  • l’équilibrage de charge,
  • mises à jour roulantes,
  • suivi des ressources,
  • consigner l’access et l’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 dissortingbution secrète, l’équilibrage de charge, la surveillance, etc., vous pouvez bien sûr continuer à les utiliser, mais nous souhaitons faciliter la transition vers Kubernetes à partir des systèmes fonctionnalité.

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