Architecture et composants de Kubernetes

Connaître les composants critiques de l'architecture Kubernetes et les optimiser pour améliorer les opérations.

Amadou SIDIBE

8 mins de lecture 21 juil. 2025

Introduction

Kubernetes est devenu le cheval de bataille de nombreuses entreprises, éliminant l'anarchie que la mise en œuvre de microservices peut entraîner avec des structures d'API complexes.

Cependant, comme solution innovante, Kubernetes a ses faiblesses. C'est là que la compréhension du diagramme d'architecture Kubernetes devient cruciale.

Il vous permet de comprendre les composants critiques de l'architecture Kubernetes et de les optimiser pour des opérations efficaces. Il est indéniable que Kubernetes offre des capacités d'automatisation, ce qui permet de simplifier la gestion et le déploiement des applications. Mais, pour un déploiement Kubernetes efficace, vous avez besoin des bons outils et des bonnes techniques pour garantir un meilleur retour sur investissement.

Cet article se concentre sur le diagramme de l'architecture Kubernetes, ses composants et les outils qui vous aident à optimiser le déploiement.

Qu'est ce que Kubernetes

Kubernetes est un système d'orchestration de conteneurs qui permet d'automatiser le déploiement, la mise à l'échelle et la gestion des applications. Il regroupe les conteneurs en unités logiques, ce qui facilite leur gestion. Kubernetes offre des fonctionnalités de mise à l'échelle automatique, d'équilibrage de la charge, d'autoréparation et de découverte de services. Conçu à l'origine par Google, il est actuellement maintenu par la Cloud Native Computing Foundation.

Qu'est-ce que l'architecture Kubernetes

L'architecture Kubernetes est un ensemble de composants répartis sur différents serveurs ou clusters qui travaillent ensemble pour garantir un environnement fiable et adaptable pour les charges de travail conteneurisées.

Chaque cluster Kubernetes se compose de nœuds de plan de contrôle (Controle Plane) et de nœuds de travail (Worker Node). Comprenons en détail ces éléments et d'autres éléments critiques du diagramme d'architecture Kubernetes.


Image

Composants de l'architecture Kubernetes

L'architecture Kubernetes suit un modèle maître-ouvrier, où le maître, connu sous le nom de plan de contrôle, gère les nœuds ouvriers. D'autre part, les conteneurs (encapsulés dans des pods) sont déployés et exécutés dans les nœuds de travail. Ces nœuds peuvent être des machines virtuelles (sur site ou dans le nuage) ou des serveurs physiques.

Décortiquons les composants essentiels de cette architecture :

Plan de contrôle (Control Plane)
Le plan de contrôle est responsable de l'orchestration des conteneurs et maintient l'état d'un cluster.

Composants du plan de contrôle de Kubernetes 
Le plan de contrôle de Kubernetes est constitué de plusieurs composants, chacun étant responsable d'une tâche spécifique (comme expliqué ci-dessous). Ces composants travaillent ensemble pour s'assurer que l'état de chaque cluster Kubernetes correspond à l'état souhaité prédéfini.

kube-apiserver
Le serveur kube-API aide les utilisateurs et les autres composants à communiquer facilement avec le cluster. Certains systèmes de surveillance et services tiers peuvent également (très rarement) l'utiliser pour interagir avec le cluster. Lorsque vous utilisez un CLI comme kubectl pour gérer le cluster, vous utilisez les API HTTP REST pour communiquer avec le serveur API.

Les composants internes du cluster (tels que le planificateur et le contrôleur) utilisent cependant gRPC pour cette communication.

Le serveur API crypte ses communications avec les autres composants pour garantir la sécurité grâce à TLS. Sa fonction principale est de gérer les demandes d'API, de valider les données pour les objets API, d'authentifier et d'autoriser les utilisateurs, et de coordonner les processus entre le plan de contrôle et les composants des nœuds de travail.

Le serveur API fonctionne uniquement avec etcd et comprend un proxy bastion apiserver intégré, permettant un accès externe aux services ClusterIP.

etcd

etcd est un outil utile pour stocker des données clé-valeur dans une approche distribuée. Il est conçu pour stocker des données sur les clusters Kubernetes, telles que des informations sur les pods, leur état et les espaces de noms. etcd n'est accessible qu'à partir du serveur API pour maintenir la sécurité.

Kubernetes utilise etcd pour gérer son API clé-valeur via gRPC. Tous les objets sont stockés sous la clé du répertoire /registry au format clé-valeur.

Le serveur api de Kubernetes utilise la fonction watch d'etcd pour surveiller toute modification de l'état d'un objet. En tant que seul composant Statefulset dans le plan de contrôle, etcd est une excellente base de données pour Kubernetes.

kube-scheduler

Lors du déploiement d'un pod dans un cluster Kubernetes, le planificateur kube identifie le meilleur nœud ouvrier qui répond aux exigences du pod, telles que le CPU, la mémoire et l'affinité. Une fois identifié, il planifie le pod sur le bon nœud.

Ce processus est rendu possible grâce au rôle d'etcd qui stocke les informations vitales nécessaires au bon fonctionnement de Kubernetes. Les informations nécessaires sont stockées dans l'armoire à fichiers etcd chaque fois qu'une demande est adressée à Kubernetes.

Kubernetes planifie un pod à l'aide de plusieurs techniques.

Tout d'abord, il filtre tous les nœuds disponibles afin de trouver les meilleurs pour le module. Ensuite, il attribue à chaque nœud un score basé sur les plugins d'ordonnancement. L'ordonnanceur sélectionne le meilleur nœud et y associe le module. Ce processus garantit que les modules hautement prioritaires reçoivent la priorité qu'ils méritent et que des plugins personnalisés peuvent être facilement ajoutés au mélange. C'est une manière innovante et efficace de gérer les pods Kubernetes.

kube-controller-manager

Le kube-controller-manager gère différents contrôleurs qui permettent de créer des répliques de conteneurs et de s'assurer que le cluster reste dans l'état souhaité.

Par exemple, lorsque vous créez un fichier manifest YAML pour spécifier le déploiement (deux répliques, un montage de volume, une carte de configuration, etc.) Grâce au contrôleur de déploiement intégré, le déploiement restera toujours dans l'état souhaité.

Il existe plusieurs types de contrôleurs gérés par le kube-controller-manager :

  • Les contrôleurs de déploiement gèrent le déploiement de plusieurs répliques d'une application fonctionnant dans des conteneurs.
  • Les contrôleurs de réplication garantissent qu'un nombre spécifique de répliques de pods est toujours en cours d'exécution. Si un pod tombe en panne, le contrôleur de réplication en crée un nouveau pour le remplacer.
  • Les contrôleurs StatefulSet offrent des fonctionnalités utiles telles que le stockage persistant, des identités réseau uniques et un moyen contrôlé de déployer et de faire évoluer l'application.
  • Les contrôleurs DaemonSet garantissent qu'un module spécifique s'exécute sur chaque nœud du cluster ou uniquement sur des nœuds sélectionnés en fonction d'étiquettes particulières.

cloud-controller-manager (CCM)

Lors du déploiement de Kubernetes dans des environnements en nuage, il est essentiel de faire le lien entre les API de la plateforme en nuage et le cluster Kubernetes. Cela peut se faire à l'aide du gestionnaire de contrôleur cloud, qui permet aux composants principaux de Kubernetes de fonctionner indépendamment et aux fournisseurs de cloud de s'intégrer à Kubernetes à l'aide de modules d'extension (plugins).

Par exemple, si vous travaillez avec Azure, le gestionnaire de contrôleur cloud sert d'intermédiaire entre le plan de contrôle Kubernetes et l'API Azure. Il fournit des fonctionnalités supplémentaires et une intégration avec les services Azure, tels que Azure Virtual Machines, Azure Load Balancer et Azure Disk Storage.

De même, il peut s'intégrer à d'autres fournisseurs de cloud (Amazon Web Services, Google Cloud Platform, etc.), ce qui permet à Kubernetes de s'adapter à l'environnement de cloud choisi.

Worker nodes

Les nœuds de travail sont des composants critiques dans une architecture Kubernetes car ils aident à l'exécution des applications conteneurisées.

Composants des nœuds de travail Kubernetes
Les nœuds de travail sont les principales unités d'exécution d'un cluster Kubernetes, où s'exécutent les charges de travail réelles. Chaque nœud de travailleur peut héberger plusieurs pods, chacun contenant un ou plusieurs conteneurs s'exécutant à l'intérieur. Chaque nœud de travailleur est constitué de trois composants responsables de la planification et de la gestion de ces pods :

kubelet
Le kubelet est un composant essentiel qui s'exécute sur chaque nœud du cluster Kubernetes. Il agit en tant qu'agent responsable de l'enregistrement des nœuds ouvrier auprès du serveur API et du travail avec le podSpec principalement à partir du serveur API.

Le kubelet crée, modifie et supprime des conteneurs pour le pod. En outre, il gère les sondes de vivacité, de préparation et de démarrage. Il monte également des volumes en lisant la configuration du pod et en créant les répertoires.

Le kubelet peut accepter des podSpec provenant de diverses sources, notamment d'un fichier, d'un point d'extrémité HTTP et d'un serveur HTTP. Il utilise également le moteur d'exécution de conteneurs du nœud pour extraire des images, exécuter des conteneurs, etc.

Le Kubelet démarre l'api-serveur, le planificateur et le gestionnaire de contrôleur en tant que pods statiques tout en démarrant le plan de contrôle. Le kubelet est essentiel pour gérer les conteneurs et s'assurer que le pod est dans l'état souhaité.

kube-proxy
Pour comprendre Kube-proxy, vous devez connaître les objets Kubernetes Service et Endpoint. Les objets Service exposent les pods au trafic, et les objets Endpoint contiennent les adresses IP et les ports des pods. Kube-proxy est un composant qui met en œuvre des services pour les pods.

Lorsque vous utilisez un service pour exposer les modules, Kube-proxy crée des règles de réseau pour envoyer le trafic aux modules regroupés sous l'objet Service. Kube-proxy utilise les protocoles UDP, TCP et SCTP, mais pas HTTP, et s'exécute sur chaque nœud en tant que daemonset.

Kube-proxy communique avec le serveur API pour obtenir des détails sur les services et leurs IP et ports de pods respectifs. Il surveille les changements de service et les points de terminaison, puis utilise différents modes pour créer ou mettre à jour les règles de routage du trafic vers les pods derrière un service.

Ces modes sont les suivants : IPTables, IPVS, Userspace et Kernelspace. Lorsqu'il utilise le mode IPTables, Kube-proxy gère le trafic avec des règles IPtable et sélectionne aléatoirement un pod backend pour l'équilibrage de la charge.

Container runtime
Tout comme le Java Runtime (JRE) est nécessaire pour exécuter les programmes Java, le conteneur runtime est essentiel pour exécuter les conteneurs. L'exécution des conteneurs est responsable de diverses tâches, telles que l'extraction d'images des registres de conteneurs, l'allocation et l'isolation des ressources pour les conteneurs et la gestion de l'ensemble du cycle de vie d'un conteneur sur un hôte.

Kubernetes interagit avec les runtimes de conteneurs par le biais de l'interface Container Runtime Interface (CRI), qui définit l'API pour la création, le démarrage, l'arrêt et la suppression des conteneurs et la gestion des images et des réseaux de conteneurs.

L'Open Container Initiative (OCI) est un ensemble de normes pour les formats de conteneurs et les moteurs d'exécution. Kubernetes prend en charge plusieurs moteurs d'exécution de conteneurs conformes à l'OCI, tels que CRI-O, Docker Engine et containerd.

L'agent kubelet interagit avec l'exécution du conteneur à l'aide des API CRI pour gérer le cycle de vie d'un conteneur et fournit toutes les informations relatives au conteneur au plan de contrôle.

Composants complémentaires du cluster Kubernetes
Pour garantir la fonctionnalité complète de votre cluster Kubernetes, il est essentiel d'intégrer des composants complémentaires aux composants principaux. Le choix des composants complémentaires dépend en grande partie des exigences et des cas d'utilisation de votre projet.

Parmi les composants complémentaires les plus courants dont vous pourriez avoir besoin dans un cluster, citons CNI Plugin pour la mise en réseau, CoreDNS pour le serveur DNS, Metrics Server pour les mesures de ressources et Web UI pour la gestion des objets via l'interface Web.

En activant ces add-ons, vous pouvez considérablement améliorer les performances et les fonctionnalités de votre cluster Kubernetes.

Plugin CNI
Container Networking Interface (CNI) est un moyen de créer des connexions réseau pour les conteneurs, et il fonctionne avec de nombreux outils d'orchestration différents, pas seulement Kubernetes. Les organisations ont des besoins variés en ce qui concerne la mise en réseau des conteneurs, comme la sécurité et l'isolation.

De nombreuses entreprises ont créé des solutions pour répondre à ces besoins en utilisant CNI. Ces solutions sont appelées plugins CNI, et vous pouvez en choisir un en fonction de vos besoins.

Voici comment les choses fonctionnent lors de l’utilisation de plugins CNI avec Kubernetes : chaque pod (un conteneur ou un groupe de conteneurs) reçoit une adresse IP unique. Ensuite, le plug-in CNI connecte les pods ensemble, quel que soit l’endroit où ils se trouvent. Cela signifie que les pods peuvent communiquer entre eux même s’ils se trouvent sur des nœuds différents.

Il existe de nombreux plugins CNI différents, y compris des plus populaires comme Calico, Flannel et Weave Net. Il est essentiel de choisir celui qui convient à vos besoins spécifiques. La mise en réseau de conteneurs est une énorme responsabilité, mais les plug-ins CNI facilitent sa gestion.

Quels sont les meilleurs outils Kubernetes pour optimiser l'orchestration de vos conteneurs ?

Les outils Kubernetes permettent d’automatiser le déploiement, la mise à l’échelle et les opérations des conteneurs. Ils surveillent également l’état de votre application pour éviter que toutes les instances ne soient détruites en même temps. Nous discuterons de ces outils selon la catégorisation ci-dessous,

Outils CLI Kubernetes

  1. kubectl : le principal outil CLI pour Kubernetes ; Il permet de gérer des applications et des clusters. Avec Kubectl, vous pouvez inspecter les ressources du cluster, créer, mettre à jour, supprimer des composants, et bien plus encore.
  2. Helm : un gestionnaire de packages Kubernetes qui rationalise l’installation et la gestion des applications Kubernetes. Il gère les applications Kubernetes à l’aide de diagrammes Helm, qui définissent, installent et mettent à niveau des applications Kubernetes complexes.
  3. Skaffold : un outil en ligne de commande qui facilite le développement continu des applications Kubernetes. Il automatise le flux de travail pour la création, la diffusion et le déploiement d’applications.
  4. Personnaliser : un outil de gestion de la configuration natif de Kubernetes permet des déploiements Kubernetes personnalisés sans avoir besoin de moteurs de modélisation. Il prend en charge plusieurs stratégies de build telles que les correctifs de fusion stratégique, les correctifs JSON 7001, etc.
  5. Kubeval : Un outil pour valider vos fichiers de configuration Kubernetes, en vous assurant qu’ils sont valides et au bon format. Il peut être exécuté localement et dans votre CI/CD, ce qui garantit que les configurations sont correctes avant le déploiement.

 

Outils de surveillance Kubernetes

  1. Sematext Monitoring : une solution de surveillance en temps réel pour les applications traditionnelles et basées sur des microservices déployées sur Kubernetes, avec des alertes personnalisables, des rapports d’analyse et des tableaux de bord. Il fournit également l’intégration de Kubernetes Audit et la cartographie de l’infrastructure.
  2. Tableau de bord Kubernetes : un addon d’interface utilisateur web simple pour les clusters Kubernetes qui fournit des métriques de base liées aux statistiques d’utilisation de la mémoire et du processeur sur les nœuds et la possibilité de surveiller l’état des charges de travail.
  3. Prometheus : outil open-source populaire utilisé pour surveiller Kubernetes, Prometheus utilise un puissant modèle de données multidimensionnel, un langage de requête flexible (PromQL) et un mécanisme d’alerte en temps réel intégré. Il suit un modèle d’extraction pour les métriques.
  4. Grafana : Il est couramment utilisé avec Prometheus pour surveiller et visualiser les métriques. Il offre de puissantes options de visualisation pour les données de votre cluster Kubernetes.
  5. Jaeger: Vous pouvez suivre et surveiller une architecture complexe orientée microservices. Il permet de dépanner et de trouver des goulots d’étranglement dans le système.

 

Outils de sécurité Kubernetes

  1. Open Policy Agent (OPA) : moteur de politiques à usage général utilisé pour appliquer des politiques de sécurité contextuelles, comblant ainsi le vide laissé par l’obsolescence de la politique de sécurité des pods de Kubernetes.
  2. KubeLinter : un outil d’analyse statique qui analyse les fichiers YAML Kubernetes et les graphiques Helm par rapport aux meilleures pratiques, en se concentrant sur la sécurité et la préparation à la production et en identifiant les erreurs de configuration potentielles.
  3. Kube-bench : un outil écrit en Go qui audite les paramètres Kubernetes par rapport aux contrôles de sécurité recommandés dans le CIS Benchmark pour Kubernetes, pratique pour les plans de contrôle autogérés.
  4. Kube-hunter : un outil de sécurité conçu pour identifier les faiblesses exploitables dans les clusters Kubernetes avec une fonctionnalité unique qui exploite les vulnérabilités pour rechercher d’autres exploits possibles.
  5. Terrascan : Un analyseur de code statique pour l’infrastructure en tant que code à l’aide d’OPA, fournissant plus de 500+ politiques pour les meilleures pratiques de sécurité et identifiant les vulnérabilités avant de provisionner l’infrastructure.

Outils de déploiement Kubernetes

  1. Jenkins : bien qu’il ne soit pas explicitement cité dans le résultat de la recherche, Jenkins est un outil d’automatisation open source qui fournit des plug-ins pour la création, le déploiement et l’automatisation de projets. Il permet la mise en œuvre d’un pipeline d’intégration continue ou de livraison continue (CI/CD) pour Kubernetes.
  2. Spinnaker : il s’agit d’une plateforme de livraison continue multicloud qui prend en charge le déploiement sur Kubernetes, Azure, AWS, GCP, etc. Il prend en charge des stratégies de déploiement avancées telles que les déploiements Canary et Blue/Green pour une disponibilité accrue.
  3. io : un outil de CD Kubernetes compétent qui automatise le déploiement de services sur Kubernetes. Il détecte les nouvelles images, observe les référentiels d’images, met à jour les configurations et s’assure que chaque mise à jour est correctement déployée sur votre cluster.

Bonnes pratiques en matière d'architecture Kubernetes

L’architecture Kubernetes comporte plusieurs composants, ce qui vous facilite la gestion des conteneurs. L’optimisation de ces composants et l’amélioration de l’efficacité de votre déploiement nécessitent l’application des meilleures pratiques d’architecture de Kunernetes, telles que l’adoption d’espaces de noms (namespaces), l’utilisation de politiques sécurisées et la surveillance des stratégies de cluster.

  • Adoptez l’espace de noms : Utilisez des espaces de noms pour répartir logiquement les ressources du cluster entre les utilisateurs ou les équipes. Cela améliore l’isolation des ressources et la sécurité du système.
  • Tirez parti des sondes de préparation et de vivacité : Ces sondes peuvent surveiller l’état du conteneur, vérifier l’état de préparation et redémarrer si nécessaire, améliorant ainsi la disponibilité.
  • Définir les demandes de ressources : Définissez les demandes de ressources et les limites pour les conteneurs afin de garantir la disponibilité de ressources suffisantes pour fonctionner de manière optimale.
  • Optez pour des objets de déploiement de haut niveau :Déployez des pods à l’aide d’applications telles que Deployments, DaemonSets, ReplicaSets ou StatefulSets. Ces abstractions aident à la mise à l’échelle, aux mises à jour continues et aux mécanismes d’auto-réparation.
  • Déployez sur plusieurs nœuds : Répartissez vos charges de travail sur plusieurs nœuds pour améliorer la disponibilité et l’évolutivité.
  • Mettre en œuvre le contrôle d’accès basé sur les rôles (RBAC) :Appliquez des politiques RBAC pour améliorer la sécurité en limitant l’accès aux ressources en fonction de rôles et d’autorisations d’utilisateur spécifiques.
  • Choisissez les services cloud pour l’hébergement externe : Faites appel à un fournisseur de cloud fiable pour héberger vos clusters Kubernetes afin d’améliorer l’évolutivité et les fonctionnalités de sécurité. Les offres managées telles qu’Azure Kubernetes Service (AKS) simplifient les opérations en déchargeant la gestion du plan de contrôle, la maintenance de l’infrastructure et les correctifs de sécurité sur le fournisseur de cloud.
  • Mettez régulièrement à jour vers la dernière version de Kubernetes : Gardez votre système à jour avec la dernière version de Kubernetes pour tirer parti des correctifs de sécurité, des corrections de bogues et des nouvelles fonctionnalités.
  • Surveillez les ressources du cluster et les journaux des stratégies d’audit : Mettez en place des outils de surveillance pour assurer le suivi des ressources du cluster à des fins de dépannage et d’optimisation. Activez également l’audit des journaux de stratégies pour garantir la conformité et renforcer la sécurité.
  • Utilisez le contrôle de version pour les fichiers de configuration : Utilisez des systèmes de contrôle de version pour gérer les fichiers de configuration Kubernetes. Cela permet un suivi facile des modifications, favorise la collaboration d’équipe et garantit le contrôle des versions.
  • Utiliser des libellés pour l’organisation des ressources : Attachez des étiquettes aux ressources Kubernetes pour une organisation efficace et un regroupement logique.
  • Spécifiez des versions d’API stables :Spécifiez toujours la dernière version stable de l’API lors de la définition des configurations pour garantir la compatibilité et la stabilité.

Points principaux à retenir: 

  • Kubernetes est une plate-forme d’orchestration qui automatise le déploiement, la mise à l’échelle et la gestion des conteneurs, simplifiant ainsi le déploiement d’applications complexes et permettant une mise à l’échelle transparente.
  • L’architecture Kubernetes se compose de nœuds de plan de contrôle (Control Plane) et de nœuds de travail (Worker node). Le plan de contrôle gère l’orchestration des conteneurs pendant que les conteneurs sont exécutés sur des nœuds de travail.
  • Composants critiques du plan de contrôle Kubernetes : kube-apiserver, etcd, kube-scheduler, kube-controller-manager et Cloud Controller Manager (CCM).
  • Composants du nœud Worker : kubelet, kube-proxy et environnement d’exécution de conteneur (par exemple, CRI-O, Docker Engine).
  • Les composants complémentaires de cluster Kubernetes améliorent les fonctionnalités du cluster, notamment le plug-in CNI pour la mise en réseau, CoreDNS pour le serveur DNS, Metrics Server pour les métriques de ressources et l’interface utilisateur Web pour la gestion des objets.
  • Les meilleurs outils Kubernetes : kubectl pour la gestion des applications et des clusters, Helm pour la gestion des applications Kubernetes via Helm Charts, Skaffold pour le développement continu,
  • Customize pour des déploiements personnalisés, et Kubeval pour la validation des fichiers de configuration.
  • Outils de surveillance Kubernetes : Sematext Monitoring, Kubernetes Dashboard, Prometheus, Grafana et Jaeger pour la surveillance, la visualisation et le traçage en temps réel.
  • Outils de sécurité Kubernetes : Open Policy Agent (OPA), KubeLinter, Kube-bench, Kube-hunter et Terrascan pour l’application des politiques de sécurité, l’audit des paramètres et l’identification des vulnérabilités.
  • Outils de déploiement Kubernetes : Jenkins, Spinnaker et Fluxcd.io pour l’automatisation et la livraison continue, prenant en charge des stratégies de déploiement avancées pour une plus grande disponibilité.

Conclusion

La mise en œuvre efficace de Kubernetes nécessite une architecture solide dont tous les composants fonctionnent de manière synchronisée. Ce qui rend l’architecture Kubernetes la plus importante, c’est son impact sur le déploiement des applications. Un bon déploiement peut non seulement contribuer à améliorer l’expérience utilisateur, mais aussi vous assurer d’avoir un avantage concurrentiel.

Je peux vous aider aider à obtenir l’architecture Kubernetes qui améliore les performances et la fiabilité. Contactez-moi pour plus d’informations sur des solutions de conteneurisation et d’orchestration.