Ordinateurs

Guide du débutant sur la gestion de l’orchestration des conteneurs et Kubernetes

Je suis un passionné de technologie avec un accent particulier sur la définition de solutions Cloud Native à fort impact. Expert en pratiques Scrum & DevOps.

Apprendre Kubernetes et la gestion de l’orchestration des conteneurs

Alors que les applications métier sont rapidement développées soit avec une approche Cloud-Native, soit que les charges de travail existantes migrent vers le cloud, tout le monde, des chefs d’entreprise/produits aux architectes logiciels, développeurs et ingénieurs d’exploitation, a du mal à ignorer deux technologies : Docker et Kubernetes. .

Les conteneurs rendent les déploiements d’applications portables sur différents types d’infrastructure : physique, virtuelle ou à la demande (cloud). Cependant, le nombre de conteneurs en cours de production peut croître de manière exponentielle très rapidement. Ainsi, nous avons besoin de composants technologiques capables de les gérer efficacement.

Ce didacticiel est destiné aux personnes qui recherchent une compréhension conceptuelle de Kubernetes. Dans ce didacticiel, je couvrirai la gestion de l’orchestration des conteneurs et les concepts Kubernetes, l’architecture Kubernetes et les fonctionnalités Kubernetes. Je conclurai le tutoriel avec les avantages et les complexités associés à Kubernetes et quelques points clés à garder à l’esprit avant d’introduire Kubernetes dans votre architecture.

Termes et définitions clés

  • Cloud computing: Disponibilité à la demande des ressources informatiques (CPU, mémoire, stockage)/plateformes/logiciels.
  • Conteneurs, Docker: Lire le tutoriel précédent ici.
  • Kubernetes: Une technologie d’orchestration de conteneurs (explorée en détail tout au long du didacticiel).
  • groupe: Groupe d’ordinateurs interconnectés, qui travaillent ensemble pour effectuer une tâche de calcul.
  • Nœud: Ordinateur unique dans un cluster.
  • Équilibrage de la charge réseau: Répartition du trafic réseau entrant sur plusieurs serveurs
  • API RESTful: Interface de programmation d’application (API) qui utilise le protocole RESTful.
  • Infrastructure en tant que code (IaaC): Capacité à provisionner et à gérer l’infrastructure (réseaux, machines virtuelles, équilibreurs de charge, etc.) à l’aide d’un modèle descriptif versionnable, très similaire au code d’application.
  • YAML: Format structuré lisible par l’homme. Couramment utilisé pour définir les fichiers de configuration.

Qu’est-ce que l’orchestration et la gestion des conteneurs ?

La conteneurisation permet le conditionnement, la distribution et le portage facile des applications. À mesure que le nombre d’applications et de conteneurs augmente au fil du temps, les problèmes clés suivants émergent :

  • Comment gérer les mises à jour/correctifs d’applications ou de conteneurs sans temps d’arrêt ?
  • Que faites-vous si un conteneur cesse de fonctionner ? Votre système peut-il s’auto-guérir ?
  • Comment surveillez-vous tous vos conteneurs ?
  • Où et comment placez-vous un conteneur nouvellement lancé dans votre cluster ?
  • Comment faire évoluer automatiquement (augmenter ou réduire) votre application en faisant varier le nombre de conteneurs en cours d’exécution ?

Afin de surmonter les défis ci-dessus, une stratégie basée sur un logiciel est nécessaire pour pouvoir créer/mettre à jour/supprimer, orchestrer, déployer et mettre à l’échelle automatiquement des conteneurs. Il existe plusieurs outils d’orchestration et de gestion de conteneurs disponibles sur le marché, à savoir Kubernetes, Apache Mesos, Nomad, etc.

A lire aussi :  15 icônes de dossier Mac esthétiques 2022

En plus de fournir des capacités d’orchestration et de gestion de conteneurs pour surmonter les défis mentionnés ci-dessus, ces outils fournissent des capacités supplémentaires telles que la mise en réseau, l’équilibrage de charge, le stockage, la surveillance, etc. Dans ce didacticiel, nous nous concentrerons sur Kubernetes.

Qu’est-ce que Kubernetes ?

Kubernetes est la plateforme d’orchestration et de gestion de conteneurs la plus utilisée. Il est open source et indépendant du fournisseur ; il peut orchestrer des conteneurs de différents fournisseurs, y compris Docker. Kubernetes est flexible et peut orchestrer et gérer des conteneurs s’exécutant sur une infrastructure physique ou virtuelle (y compris le cloud).

Selon le site Web Kubernetes.io :

« Kubernetes est une plate-forme portable, extensible et open source pour la gestion des charges de travail et des services conteneurisés, qui facilite à la fois la configuration déclarative et l’automatisation. »

— kubernetes.io

Voyons comment Kubernetes fonctionne « sous le capot » et apprenons les différents composants d’un cluster Kubernetes.

Architecture des composants Kubernetes

Chaque cluster Kubernetes comprend deux composants principaux :

  • Control Plane, également appelé Kubernetes Master ou simplement Master,
  • et un ou plusieurs nœuds Kubernetes, ou simplement des nœuds.

Faites défiler pour continuer

Figure 1 : Composants du cluster Kubernetes

Figure 1 : Composants du cluster Kubernetes

Nœud Kubernetes

Un nœud est une machine virtuelle ou physique dans le cluster et il contient tous les services requis pour exécuter un pod. Il est géré par le panneau de contrôle. Un nœud comprend les composants suivants :

introduction-à-kubernetes
  • Gousses : Un pod est une construction logique. Pour le dire simplement, un pod est un groupe d’un ou plusieurs conteneurs, avec des ressources de stockage et de réseau partagées. Chaque pod a une spécification de pod qui définit comment chaque pod, y compris ses conteneurs, doit s’exécuter. Le site Web kubernetes.io définit le pod comme :

« Les pods sont les plus petites unités informatiques déployables que vous pouvez créer et gérer dans Kubernetes. »

— kubernetes.io

  • Exécution du conteneur: C’est le moteur de conteneur qui est responsable de l’exécution des conteneurs. Kubernetes prend en charge plusieurs fournisseurs de moteurs de conteneurs : Docker, CRI-O, etc.
  • Kubelet: Il s’agit d’un agent qui s’exécute sur chaque nœud du cluster. La fonction principale de kubelet est de s’assurer que les pods et leurs conteneurs fonctionnent dans l’état souhaité, conformément à la spécification du pod. Le kubelet signale également au « maître » la santé de l’hôte sur lequel il s’exécute.
  • Proxy Kube: Il s’agit d’un proxy réseau exécuté sur chaque nœud. Il transmet les requêtes pour corriger les pods/conteneurs dans un cluster.

Kubect

Kubectl est un outil de ligne de commande (CLI) que vous utiliserez pour envoyer des commandes au volet de contrôle. Il vous permet de contrôler les clusters Kubernetes via le serveur API (expliqué plus loin).

Le serveur d’API Kubernetes expose un ensemble d’API RESTful qui vous permettent de contrôler le cluster. Les commandes Kubectl sont converties en interne en ces requêtes d’API REST envoyées au serveur d’API.

A lire aussi :  Comment configurer un serveur proxy Web de mise en cache Polipo sur pfSense

Avion de contrôle

Le plan de contrôle est responsable de la gestion de tous les nœuds du cluster. Il comprend les composants suivants :

introduction-à-kubernetes

Serveur API

Il agit comme la passerelle vers d’autres composants du volet de contrôle. Le serveur d’API expose des API RESTful, qui aident à gérer le cluster. Les requêtes adressées aux serveurs d’API peuvent être globalement classées en deux types.

  • Récupérer les ressources du cluster : Ces types de requêtes récupèrent des informations sur les composants du cluster. Vous trouverez ci-dessous un exemple d’appel d’API REST pour récupérer des informations sur un pod particulier nommé pod1.
GET /api/v1/namespaces/test/pods/pod1

Nous pouvons également récupérer les mêmes informations à l’aide de l’outil de ligne de commande kubectl. En interne, la commande kubectl est convertie en un appel d’API REST. Vous trouverez ci-dessous un exemple de la commande kubectl.

kubectl get pod pod1
  • Modifier les ressources du cluster : Ces types de requêtes sont utilisés pour apporter des modifications aux ressources du cluster. À l’aide de ces requêtes, vous pouvez créer, mettre à jour ou supprimer des ressources. Vous trouverez ci-dessous un exemple d’appel d’API REST pour créer un pod.
POST /api/v1/namespaces/test/pods/

La commande ci-dessous supprimera tous les pods.

kubectl delete pod --all

etcd

Un simple magasin clé-valeur distribué est utilisé pour stocker la configuration du cluster Kubernetes. Il est accessible uniquement via le serveur API. Etcd stocke également l’état réel et souhaité des objets du cluster.

Tout ce que nous lisons à l’aide de la commande kubectl ou des API est extrait d’etcd. De même, toute mise à jour que nous effectuons sur le cluster entraîne la mise à jour d’une entrée dans etcd.

Gestionnaire de contrôleur

Ce composant est responsable de l’exécution des processus du contrôleur. Les processus du contrôleur régulent l’état du cluster. Ils surveillent en permanence le cluster via le serveur API et s’efforcent de faire correspondre l’état actuel à l’état souhaité du cluster. Comprenons cela plus en détail avec un exemple. Le contrôleur de réplication (un type de contrôleur) est chargé de s’assurer qu’un nombre spécifié de répliques de pod s’exécutent à tout moment.

Supposons maintenant que l’état de cluster souhaité soit d’avoir 3 pods de serveur Web en cours d’exécution à tout moment. Si l’un de ces pods tombe en panne, notre état actuel passe à 2 pods de serveur Web. Le contrôleur de réplication détecte cette anomalie dans l’état actuel et souhaité, et lance automatiquement un nouveau pod de serveur Web.

De même, il existe d’autres types de contrôleurs régulant l’état des objets respectifs, par exemple, le contrôleur Endpoint, le contrôleur Node, le contrôleur Job, etc.

planificateur

Il surveille les pods qui n’ont pas été affectés à un nœud. Le planificateur est responsable de la planification du pod sur le nœud le mieux adapté. Tout en prenant des décisions de planification sur le nœud le mieux adapté, il prend en compte diverses contraintes, telles que les contraintes matérielles ou logicielles du pod, la localité des données, les spécifications d’affinité et d’anti-affinité, etc.

A lire aussi :  Tutoriel – MS Excel – Comment écrire du texte verticalement ou à un angle dans une feuille Excel

Avantages et défis

Comme nous pouvons le voir, Kubernetes automatise une quantité considérable de travail nécessaire pour déployer, orchestrer et gérer des applications conteneurisées, et masque la complexité associée. Cela réduit les ressources nécessaires au déploiement, à la surveillance et à la gestion des incidents, et facilite une vitesse accrue des déploiements continus.

Vous trouverez ci-dessous les principaux avantages de l’utilisation de Kubernetes :

introduction-à-kubernetes

D’un autre côté, les avantages énumérés ci-dessus ont un coût. Vous trouverez ci-dessous les principaux défis liés à la mise en œuvre de Kubernetes qu’il faut garder à l’esprit :

introduction-à-kubernetes

Réflexions finales sur Kubernetes

Dans ce didacticiel, nous avons découvert les problèmes que les plates-formes d’orchestration et de gestion de conteneurs peuvent résoudre, et comment Kubernetes s’acquitte de cette tâche. En gardant à l’esprit les avantages et les défis ci-dessus, vous voudrez peut-être garder à l’esprit les points clés ci-dessous avant d’introduire un composant lourd comme Kubernetes dans votre architecture.

introduction-à-kubernetes

Pour conclure, les avantages de Kubernetes, à long terme, l’emportent sur la complexité associée. Avec une bonne compréhension de la façon dont ses éléments de base fonctionnent ensemble, vous pouvez commencer à concevoir des systèmes tirant parti des capacités de la plate-forme pour déployer, orchestrer et gérer vos charges de travail. Au fur et à mesure que vous progressez, vous pouvez commencer à expérimenter d’autres fonctionnalités et extensions.

Cela nous amène à la fin de ce tutoriel. Bon apprentissage.

Remerciements

Un grand merci à Narotam Puri et Sapan Khandwala pour avoir pris la peine de revoir la version préliminaire de ce tutoriel. Leurs précieux commentaires ont contribué à améliorer la qualité du didacticiel. Continuez votre bon Karma !

Ressources additionnelles

  • Qu’est-ce que Kubernetes ? | Kubernetes
    Kubernetes est une plate-forme portable, extensible et open source pour la gestion des charges de travail et des services conteneurisés, qui facilite à la fois la configuration déclarative et l’automatisation.
  • Concepts et architecture Kubernetes | Plate-forme9
    Kubernetes est plus qu’une simple orchestration de conteneurs. Dans cet article, vous découvrirez les constructions, les concepts et bien plus encore de l’architecture Kubernetes.
  • Introduction à Kubernetes – Architecture, avantages et problèmes – Instana
    Introduction à Kubernetes : découvrez à quoi sert Kubernetes, comment il est conçu, les avantages de l’utilisation de Kubernetes et les problèmes potentiels.
  • Architecture Kubernetes | aqua
    Découvrez l’architecture, les composants et les principes de conception de Kubernetes, et consultez un exemple de procédure d’installation et de configuration.

Cet article est exact et fidèle au meilleur de la connaissance de l’auteur. Le contenu est uniquement à des fins d’information ou de divertissement et ne remplace pas un conseil personnel ou un conseil professionnel en matière commerciale, financière, juridique ou technique.

© 2021 Manhar Puric

michka le 15 mai 2021 :

Kubernetes très bien écrit et expliqué.

Bouton retour en haut de la page