Formation > Blog > Kubernetes > Devenir incollable sur le Kubernetes Control plane

Control plane est un composant de Kubernetes

Créé par Google en 2015, Kubernetes est une solution open source permettant de gérer de manière simple un nombre important de conteneurs applicatifs. Sa popularité vient en partie de son workflow clair et instinctif dont le Kubernetes control plane est l’élément fondateur.

Aujourd’hui, nous vous proposons d’en savoir plus sur Kubernetes et son fonctionnement en nous attardant sur ce composant essentiel de l’outil.

Architecture de Kubernetes

Avant de nous pencher sur le control plane, faisons un rappel de l’architecture générale de Kubernetes.

Kubernetes est un système utilisant des composants très simples pour former une architecture très complexe. Cela permet à l’outil d’être très résiliant. C’est un système déclaratif (en opposition aux systèmes impératifs). Les administrateurs décrivent l’état souhaité et l’outil se charge d’agir pour que le cluster atteigne cet état.

Comment Kubernetes fonctionne ?

Kubernetes est divisé en 2 parties :

  • Les nœuds/workers
  • Le control plane

Les nœuds ou workers sont les machines de travail dans Kubernetes. Auparavant connus sous le nom de minion, ils peuvent être virtuels ou physiques selon le cluster. Chaque nœud contient les services nécessaires à l’exécution de pods et est sous le contrôle du master.

Un nœud contient 4 informations dans son statut :

  • Addresses
  • Condition
  • Capacity
  • Info

Le nœud interagi avec trois composants : le contrôleur de nœud, kubelet et kublect.

Le control plane est, lui, le véritable cerveau de l’outil et il communique avec les kubelet attachés aux nœuds.

Kubernetes Control plane

Le control plane contient tous les composants qui permettent de diriger et de paramétrer le cluster. C’est également ici que l’on va trouver toutes les métriques liées aux clusters. C’est le composant essentiel pour s’assurer que tous les conteneurs disposent de toutes les ressources nécessaires pour fonctionner.

Le control plane est en contact avec vos machines de calculs. Il s’assure que la configuration que vous avez déterminée pour votre cluster est tout le temps respectée. On peut le diviser en plusieurs composants.

ETCD

ETCD est une sorte de magasin distribué open source utilisé pour gérer et conserver les informations critiques liées au cluster. C’est là que se trouvent les données de configuration, les données d’état et les métadonnées de configuration.

Il permet à Kubernetes de réaliser la coordination entre les différentes machines et clusters en agissant comme une source unique et fiable de données. ETCD utilise l’algorithme RAFT pour l’aider dans cette tâche.

Le Kubernetes control plane contient l'ETCD qui est un magasin open-source

Serveur API

Le serveur API est l’interface de gestion centrale du control plane. C’est ici que les administrateurs écrivent leurs demandes d’information et de modification d’état du serveur. Il permet d’écrire directement dans l’ETCD en CRUD (Create, Read, Uptdate, Delete).

Tous les composants du control plane passent par le serveur API et il est l’unique composant en contact direct avec ECTD. Ainsi, il facilite donc grandement toutes les tâches liées à l’administration des clusters Kubernetes.

Il est également le canal de communication central lorsque l’on communique avec les clusters via Kublect. Lorsqu’un administrateur créé un pod via kublect, le serveur API notifie les clients qui surveillent les ressources Pod.

Le serveur API traite les requêtes en 3 étapes :

  • Authentification, il vérifie l’identité du client
  • Authorization, il vérifie si le client est autorisé à effectuer l’action
  • Admission control, il vérifie si la requête est bien aux normes et si elle est bien valide. Dans le cas contraire, le serveur API peut modifier la requête lui-même.

Scheduler

Le Scheduler a pour mission de planifier les pods sur les nœuds. Il fonctionne de manière très simple :

  • Vous créez un pod
  • Le scheduler constate qu’il n’a pas de nœud attribué
  • Il attribue un nœud au pod

Mais sa mission est en réalité un peu plus complexe. Il n’attribue pas les nœuds au hasard et il dispose d’une méthode pour déterminer le meilleur placement.

Il vérifie d’abord si le nœud dispose de suffisamment de ressources pour subvenir aux besoins du pod. Il les réunit alors tous dans une liste. Si aucun nœud ne passe pas cette première étape de selection, le pod passe alors en état pending.

Le scheduler attribue ensuite une note à chaque nœud ayant passé le filtrage avec son propre système de scoring. Il se base, par exemple, sur le nombre de ressources déjà consommées ou la présence d’images docker sur le nœud. Le nœud ayant le score le plus élevé est alors assigné au pod. Si plusieurs ont le même score, le scheduler choisit aléatoirement.

Le Scheduler du control plane kubernetes permet de planifier les pods sur les nœuds

Controller Manager

Le controller Manager contient tous les contrôleurs chargés de réconcilier l’état réel du cluster vers l’état souhaité. Chacun de ces contrôleurs est attribué à une ressource et ils effectuent des requêtes au serveur API si besoin.

Il existe un contrôleur différent pour chaque ressource de Kubernetes mais ils ne communiquent jamais entre eux.

Kubelet

Les Kubelet sont les seuls composants du control plane exécutés sur les nœuds. Chaque nœud possède son Kubelet compris le master node. Il fait le lien entre le serveur API et les conteneurs des différents pods qui composent l’écosystème. En surveillant le conteneur runtime, il peut notifier le serveur API en temps réel des status, des événements et des ressources consommées.

Cloud Controller manager

Le cloud controler manager est un composant facultatif dont la mission est de communiquer avec le fournisseur cloud. Il permet de relier votre cluster avec votre solution cloud et il sépare les composants qui interagissent avec le cloud de ceux qui n’interagissent qu’avec le cluster.

Cette séparation permet au cloud de déployer de nouvelles fonctionnalités à un rythme différent de celui du projet principal.

Le Cloud Controller Manager est structuré à l’aide d’un mécanisme de plugins qui permettent d’intégrer plusieurs solutions cloud dans un même environnement Kubernetes.

Tous ces outils participent à la flexibilité de Kubernetes. Bien qu’elle soit complexe d’utilisation sur certains aspects, C’est une solution puissante pour exécuter des applications conteneurisées et répondre à tous vos besoins. Si vous souhaitez vous former sur Kubernetes, nous vous proposons nos articles dédiés : « comment se former sur Kubernetes ? » et « comment se former gratuitement sur Kubernetes ?« .

UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?

Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.

ILS SE SONT FORMÉS CHEZ NOUS

partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp
partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp