KUBERNETES

C’est l’orchestrateur populaire pour la gestion des conteneurs, crée par Google qui l’ont ensuite donnée à la Cloud Native Computing Foundation, actuellement c’est un outil Open Source.

Comme un conteneur est fortement relie au noyau, le conteneur n’a pas conscience de ce qui se passe en dehors de ce noyau donc de la machine hote, d’ou l’interet d’utiliser Kubernetes.

En effet, un tel systeme va apporter l’orchestration et la gestion des conteneurs sur des clusters de serveurs autrement dit, il permet de prendre en charge plusieurs noyaux et donc de pouvoir gerer les conteneurs sur ces differents serveurs hotes linux qu’ils soient physiques ou virtuels, cette orchestration nous permet de :

  • Creer des services applicatifs sur plusieurs conteneurs que ce soit front-end ou back-end.
  • Planifier l’execution de ces conteneurs dans un cluster.
  • Garantir leur integrite au fil du temps.
  • Assurer leur monitoring.

Avec Kubernetes, le developper n’a plus a s’occuper de la gestion des VM,

Il a a disposition directement son environnement d’execution qui est le conteneur pour pouvoir y deployer son code. Kubernetes va s’occuper des couches infrastructures sous-jacente. Ainsi le developpeur n’a plus besoin de savoir l’emplacement des applications [Figure 3].

Composants Majeurs de l’architecture Kubernetes :

Kubernetes Master : qui est le serveur controlant les nodes, ces derniers sont des noeuds esclaves qui sont des machines hebergeant les hotes docker qui executent les taches qui leur sont assignes.

Au sein des Nodes 9(Noeuds), on trouve les Pods, qui sont n’est rien d’autre qu’un environnement d’execution d’un ou plusieurs contenus docker.

C’est le master qui va dire quelle noeud va faire tourner un pod non ordonnance en se basant sur la disponibilite des ressources, il gere aussi l’utilisation des ressources sur chaque noeud afin de s’assurer que la charge de travail n’est pas en exces par rapport aux ressources disponible, pour cela kubernetes doit connaitre les ressources disponibles et celles actuellement assignees sur les serveurs.

Ces informations sont apportees par les Kubelet, c’est un composant execute sur les noeuds et qui s’assure que les conteneurs definie ont demarre et fonctionnent comme prevus.

Si un noeud est HS , c’est ce composant qui va le signaler au master et c’est justement le master qui verifie les nombres de copies identiques demandees d’un pod qui doivent s’executer dans le cluster,

Contenu d’un POD :

C’est un environnement d’execution qui peut contenir un ou plusieurs contenus Docker on va deployer deux conteneurs sur un meme pod s’il est necessaire de partager les ressources locales.

En effet, tous les conteneurs d’un pod partage une meme addresse IP, les memes PATH reseaux et d’autres ressources du pod. Une autre notion tres importante est celle du Volume.

C’est un espace de stockage accessible a tous les conteneurs dur un pod et il repond a deux besoins.

  • Preserver au dela du cyvle de vie d’un conteneur, les donnees et fichier dans un conteneur sont ephemere donc si les donnees utilisees par les conteneurs doivent etre conservees audela du cycle de vie d’un conteneur, ces donnees seront stockees dans le volume.
  • Il est utile pour le partage des donnees entre deux conteneurs. Quand plusieurs conteneurs s’executent dans un meme pod, il est souvent necesssaire de partager les fichiers et les donnees entre eux et ca s’est realise via le volume.

Services dans Kubernetes :

C’est un point d’entrer permettant un acces load balance a un groupe de conteneur identique, autrment dit c’est une VIP [Virtual IP]. Kubernetes va fournir un service de routage en assignant une addresse IP et un nom de domaine a un service et va equilibrer la charge du trafic vers differents pods.

Les requetes de services sont alors transfere par kubernetes vers des pods du service ces derniers corresondent a des tiers applicatifs c’est a dire front-end comme mentionne dans la figure 4 avec le serveur web ou back-end avec la BDD.

Concept de Fonctionnement de Kubernetes :

Il s’execute au dessus du SE et interagit avec les pods des conteneurs qui s’executent sur les noeuds, le master kubernetes recoit les commandes de la part d’un administrateur ou d’une equipe devOps et va relayer ces instructions aux nodes.

Ce systeme de transfert fonctionne avec des services et le noeud le plus adapte pour cette tache va etre choisie automatiquement il va ensuite allouer les ressources aux pods designees dans ce noeud pour qu’ils effectuent la tache requise. Lorsque le master planifie un pod dans un noeud, le Kubelet de ce noeud ordonne a Docker de lancer les conteneurs specifies et c’est Docker qui va demarrer ou arreter les conteneurs. Kubelet collecte ensuite en continu le statut de ces conteneurs via Docker et rassemble ces informations sur le serveru master.

Avec Kubernetes les ordres proviennent d’un systeme automatise et non plus d’un admin qui va assigne manuellement des taches a tous les noeuds pour chaque conteneur. 

Ils exploitent Kubernetes :

  • AWS : a integre Kubernetes comme un service dans son catalogue qui se nomme Elastic Kubernetes Service [EKS].
  • Docker : qui a son propre orchestrateur qui s’appelle SWARM concurrent de Kubernetes et pourtant Docker laisse la possibilite de choisir entre Kubernetes ou Docker SWARM.
  • RedHat : l’a integre dans son offre de PaaS Openshift qui allie donc Kubernetes et Docker.

References :
https://kubernetes.io/fr/
https://www.youtube.com/watch?v=uyiDNcSmwFw