jeudi, 18 août 2022

Qu’est-ce que Kubernetes ? Votre prochaine plateforme d’applications

Kubernetes est une plate-forme open source populaire pour l’orchestration de conteneurs , c’est-à-dire pour la gestion d’applications développées à partir de nombreux runtimes largement autonomes appelés conteneurs. Les conteneurs sont devenus de plus en plus populaires étant donné que la tâche de conteneurisation Docker a été introduite en 2013, mais les applications conteneurisées distribuées de grande taille peuvent devenir de plus en plus difficiles à coordonner. En rendant les applications conteneurisées beaucoup plus faciles à gérer à grande échelle, Kubernetes est devenu un élément crucial de la révolution des conteneurs.

  • Qu’est-ce que l’orchestration de conteneurs ? Qu’est-ce que Kubernetes ? et Kubernetes vs. autres travaux Kubernetes vs. Mesos Architecture Kubernetes
  •  : comment fonctionne Kubernetes Avantages Kubernetes Qu’est-ce que
  • l’orchestration de conteneurs ? Les conteneurs aident à la
  • séparation des problèmes de type VM

mais avec beaucoup moins de surcharge et une bien plus grande polyvalence. En conséquence, les conteneurs ont en fait amélioré la façon dont les gens pensent développer, déployer et conserver des applications logicielles. Dans une architecture conteneurisée, les différents services qui constituent une application sont conditionnés dans différents conteneurs et déployés sur un cluster de fabricants physiques ou virtuels. Cependant, cela donne lieu à l’exigence d’une orchestration de conteneurs – un outil qui automatise le déploiement, la gestion, la mise à l’échelle, la mise en réseau et la disponibilité des applications basées sur des conteneurs. Qu’est-ce que Kubernetes ? Kubernetes est une tâche open source qui est en fait devenue l’un des outils d’orchestration de conteneurs les plus populaires ; il vous permet de déployer et de gérer des applications multi-conteneurs à grande échelle. Alors qu’en pratique, Kubernetes est fréquemment utilisé avec Docker, la plate-forme de conteneurisation la plus populaire, il peut également gérer tout système de conteneur conforme aux normes Open Container Initiative (OCI) pour les formats d’image de conteneur et les environnements d’exécution. Et en raison du fait que Kubernetes est open source, avec quelques limitations raisonnables sur la façon dont il peut être utilisé, il peut être utilisé facilement par quiconque souhaite exécuter des conteneurs, presque partout où ils souhaitent les exécuter – sur site, dans le cloud public, ou les deux. et Kubernetes ont commencé leur vie en tant que travail au sein de Google. Il s’agit d’un successeur, mais pas d’un descendant direct, de Google Borg, un ancien outil de gestion de conteneurs

que utilisait en interne. Google a ouvert Kubernetes en 2014, en partie parce que les architectures de microservices dispersées avec lesquelles Kubernetes aide facilitent l’exécution d’applications dans le cloud. Google considère que l’adoption de conteneurs, de microservices et de Kubernetes peut conduire les clients vers ses services cloud (bien que Kubernetes traite également avec Azure et AWS). Kubernetes est actuellement préservé par la Cloud Native Computing Foundation, qui est elle-même sous l’égide de la Linux Foundation. Kubernetes par rapport aux autres tâches Kubernetes n’est pas le seul moyen de gérer les conteneurs à grande échelle, bien qu’il soit devenu le choix le plus courant et le plus largement pris en charge. Quelques-unes des autres alternatives méritent discussion.

Kubernetes vs Docker et Docker swarm

mode Kubernetes ne modifie pas Docker, mais l’améliore. Cependant, Kubernetes remplace quelques-unes des technologies de plus haut niveau qui ont réellement émergé autour de Docker. L’une de ces technologies est le mode swarm de Docker, un système de gestion d’un cluster de moteurs Docker appelé « swarm », en gros un petit système d’orchestration. Il est toujours possible d’utiliser le mode essaim Docker au lieu de Kubernetes, mais Docker Inc. a choisi de faire de Kubernetes un élément clé de l’assistance Docker à l’avenir. Néanmoins, notez que Kubernetes est nettement plus complexe que le mode essaim Docker et nécessite plus de travail pour se déployer. Mais encore une fois, le travail est destiné à fournir un gros gain à long terme – des installations d’application plus gérables et durables. Pour les travaux de développement et les clusters de conteneurs plus petits

, le mode swarm de Docker présente une option plus simple. Kubernetes vs Mesos Une autre tâche dont vous avez peut-être entendu parler en tant que concurrent de Kubernetes est Mesos. Mesos est un travail Apache qui a émergé à l’origine des développeurs de Twitter ; il était en fait considéré comme une réponse à la tâche de Borg. Mesos propose en réalité des services d’orchestration de conteneurs

, mais ses ambitions vont bien au-delà : il vise à être une sorte de système d’exploitation cloud capable de coordonner à la fois des éléments conteneurisés et non conteneurisés. À cette fin, de nombreuses plates-formes différentes peuvent fonctionner dans Mesos, y compris Kubernetes lui-même. Architecture Kubernetes : Comment Kubernetes

fonctionne L’architecture de Kubernetes utilise de nombreuses idées et abstractions. Certaines d’entre elles sont des variantes de notions familières existantes, mais d’autres sont spécifiques à Kubernetes. Clusters Kubernetes L’abstraction Kubernetes de plus haut niveau, le cluster, décrit le groupe de machines exécutant Kubernetes (lui-même une application en cluster

) et les conteneurs qu’il gère. Un cluster Kubernetes doit avoir un maître, le système qui commande et contrôle tous les autres appareils Kubernetes du cluster. Un cluster Kubernetes hautement offert duplique les centres du maître

sur plusieurs appareils. Un seul maître à la fois exécute le planificateur de tâches et le gestionnaire de contrôleur. Nœuds et pods Kubernetes Chaque cluster comprend des nœuds Kubernetes. Les nœuds peuvent être des périphériques physiques ou des machines virtuelles. Encore une fois, le concept est l’abstraction : quel que soit le travail sur lequel l’application travaille, Kubernetes s’occupe du déploiement sur ce substrat. Kubernetes permet même de s’assurer que certains conteneurs fonctionnent uniquement sur des VM ou uniquement sur du bare metal. Les nœuds exécutent des pods, les éléments Kubernetes les plus standard qui peuvent être produits ou gérés.

Chaque pod représente une instance unique d’une application ou d’un processus en cours d’exécution dans Kubernetes, et se compose de plusieurs conteneurs. Kubernetes démarre, arrête et reproduit tous les conteneurs d’un pod en tant que groupe. Les pods gardent l’attention de l’utilisateur sur l’application, plutôt que sur les conteneurs eux-mêmes. Les informations sur la façon dont Kubernetes doit être configuré, à partir de l’état des pods, sont conservées dans Etcd, un magasin clé-valeur distribué. Les pods sont développés et détruits sur les nœuds selon les besoins pour se conformer à l’état préféré défini par l’utilisateur dans le sens des pods. Kubernetes fournit une abstraction appelée contrôleur pour gérer la logistique de la façon dont les pods sont lancés, présentés et arrêtés. Les contrôleurs sont disponibles en plusieurs versions selon le type d’application gérée. Par exemple, le contrôleur StatefulSet est utilisé pour traiter les applications qui nécessitent un état persistant. Le contrôleur d’implémentation est utilisé pour

mettre à l’échelle une application vers le haut ou vers le bas, mettre à jour une application vers une nouvelle variante ou restaurer une application vers une variante connue en cas de problème. Services Kubernetes En raison du fait que les pods vivent et disparaissent selon les besoins, nous avons besoin d’une abstraction différente pour gérer le cycle de vie de l’application. Une application est censée être une entité implacable, même lorsque les pods exécutant les conteneurs qui composent l’application ne sont pas eux-mêmes persistants. À cette fin, Kubernetes propose une abstraction appelée service. Un service dans Kubernetes décrit comment un groupe fourni de pods (ou d’autres éléments Kubernetes) est accessible via le réseau.

Comme le disent les documents de Kubernetes, les pods qui constituent le back-end d’une application pourrait changer, mais le front-end ne devrait pas avoir à en apprendre davantage ou à le suivre. Les services rendent cela possible. Quelques autres éléments internes à Kubernetes complètent le tableau. Le planificateur répartit les charges de travail sur les nœuds afin qu’elles soient équilibrées entre les ressources et que les implémentations satisfassent aux exigences des significations de l’application. Le gestionnaire de contrôleur s’assure que l’état du système (applications, travail, etc.) correspond à l’état souhaité défini dans les paramètres de configuration d’Etcd. Il est essentiel de garder à l’esprit qu’aucun des systèmes de bas niveau utilisés par les conteneurs, tels que Docker lui-même, n’est modifié par Kubernetes. Au contraire, Kubernetes propose un

plus grand ensemble d’abstractions pour l’utilisation de ces mécanismes afin de maintenir les applications performantes à grande échelle. Politiques Kubernetes Les politiques de Kubernetes garantissent que les pods sont conformes à des normes de comportement particulières. Les stratégies évitent aux pods d’utiliser trop de CPU, de mémoire, d’ID de processus ou d’espace disque , par exemple. De telles « plages de limitation » sont exprimées en termes relatifs pour le processeur (par exemple, 50% d’un thread matériel) et en termes absolus pour la mémoire (par exemple, 200 Mo).

Ces limitations peuvent être intégrées avec des quotas de ressources pour rendre assurez-vous que divers groupes d’utilisateurs de Kubernetes (plutôt que les applications en général) ont un accès égal aux ressources. Les services Kubernetes Ingress Kubernetes sont considérés comme s’exécutant au sein d’un cluster. Vous souhaiterez pouvoir accéder à ces services depuis le monde extérieur. Kubernetes possède

plusieurs composants qui facilitent cela avec différents degrés de simplicité et de robustesse, notamment NodePort et LoadBalancer, mais l’élément le plus polyvalent est Ingress. Ingress est une API qui gère l’accès externe aux services d’un cluster, généralement via HTTP. Ingress nécessite un peu de configuration pour être configuré correctement. Matthew Palmer, qui a composé un livre sur l’avancement de Kubernetes, vous explique la procédure sur son site . Tableau de bord Kubernetes Un élément Kubernetes qui vous aide à rester au sommet de tous ces autres

éléments est le tableau de bord,

une interface utilisateur Web avec laquelle vous pouvez publier et dépanner des applications et gérer les ressources de cluster. Le panneau de configuration n’est pas configuré par défaut, mais l’ajouter n’est pas un problème excessif. Vidéo associée : Qu’est-ce que Kubernetes ? Dans cette vidéo de 90 secondes, apprenez-en plus sur Kubernetes, le système open source d’automatisation d’applications conteneurisées, grâce à l’un des développeurs de la technologie, Joe Beda, fondateur et CTO d’Heptio. Avantages de Kubernetes Parce que Kubernetes introduit de nouvelles abstractions et de nouveaux principes, et parce que la courbe de connaissance de Kubernetes est élevée, il est normal de se demander quels sont les avantages à long terme de l’utilisation de Kubernetes. Voici un aperçu de certaines des manières spécifiques dont l’exécution d’applications dans Kubernetes est plus facile.

Kubernetes gère pour vous l’intégrité des applications, la réplication, l’équilibrage de charge et l’allocation des ressources matérielles. Les applications qui finissent par être « malsaines » ou qui ne respectent pas la

sens de la santé que vous leur expliquez, peuvent

être automatiquement récupérées. Un autre avantage fourni par Kubernetes est l’optimisation à l’aide de ressources matérielles constituées de mémoire, d’E/S de stockage et de bande passante réseau. Les applications peuvent avoir des limites souples et difficiles fixées sur leur utilisation des ressources. De nombreuses

applications qui utilisent très peu de ressources

peuvent être regroupées sur le même matériel ; les applications qui nécessitent de s’étendre peuvent être placées sur des systèmes où elles ont de l’espace pour se développer. Et encore une fois, la présentation des mises à jour dans l’ensemble d’un cluster, ou le retour en arrière en cas d’interruption des mises à jour, peut être automatisé. Kubernetes facilite le déploiement d’applications préconfigurées avec les chartes Helm. Ceci est particulièrement pratique lorsqu’une application a plusieurs dépendances externes. Helm est essentiellement un gestionnaire de packages pour Kubernetes. De nombreuses applications logicielles populaires devraient s’exécuter dans Kubernetes en tant que groupe de conteneurs interdépendants. Helm propose un mécanisme de signification

, un « graphique », qui décrit comment une application ou un service peut être exécuté en tant que groupe de conteneurs dans Kubernetes. Vous pouvez créer vos propres graphiques Helm à partir de zéro, et vous devrez peut-être le faire si vous créez une application sur mesure à publier en interne. Mais si vous utilisez une application populaire qui a un modèle de version commun, il est probable que quelqu’un ait actuellement créé une charte Helm pour celle-ci et l’ait publiée dans Artifact Center. Le site d’annuaire Kubeapps.com est un autre endroit où rechercher les chartes Helm officielles. Kubernetes rationalise la gestion du stockage, des astuces et d’autres ressources liées aux applications. Les conteneurs sont censés être immuables ; le code et les informations que vous y mettez ne sont pas censés être modifiés. Les applications ont besoin d’état, ce qui suggère qu’elles ont besoin d’une méthode fiable pour gérer les volumes de stockage externes. Cela est rendu d’autant plus complexe par la méthode que les conteneurs vivent, disparaissent et renaissent

tout au long de la durée de vie d’une application. Kubernetes propose des abstractions pour permettre aux conteneurs et aux applications de gérer le stockage de la même manière découplée que les autres ressources. De nombreux types de stockage typiques, des volumes Amazon EBS aux anciens partages NFS, sont accessibles via les pilotes de stockage Kubernetes, appelés volumes.

Généralement, les volumes sont liés à un pod particulier, mais un sous-type de volume appelé « Volume cohérent » peut être utilisé pour les données qui doivent survivre séparément de n’importe quel pod. Les conteneurs nécessitent souvent de gérer des « trucs » – des qualifications telles que des clés API ou des mots de passe de service que vous ne souhaitez pas coder en dur dans un conteneur ou ranger ouvertement sur un volume de disque. Alors que des solutions tierces sont proposées pour cela, comme les astuces Docker et HashiCorp Vault

, Kubernetes possède son propre système de gestion native des secrets, bien qu’il nécessite d’être configuré avec soin

. Les applications Kubernetes peuvent s’exécuter dans des environnements cloud hybrides et multicloud. Parmi les solutions durables, le cloud computing est la possibilité d’exécuter n’importe quelle application dans n’importe quel cloud, ou dans n’importe quel mélange de clouds publics ou privés. Il ne s’agit pas seulement d’éviter le blocage des fournisseurs, mais également de tirer le meilleur parti des fonctionnalités spécifiques à des clouds spécifiques.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici