Chapitre 2: La Conteneurisation: Enseignante
Chapitre 2: La Conteneurisation: Enseignante
La conteneurisation
2. La conteneurisation
5. Docker
6. Kubernetes
2
Motivations
3
Déploiement des applications sur une machine hôte
▪ Cohabitation des applications développés par des Application Application
A B
différents éditeurs est souvent problématique
Système d’exploitation
▪ Besoins des packages (bibliothèque, extension) et des
versions de systèmes d’exploitation différents Bins/Lib
Noyau
▪ Possibilité d’interactions et/ ou conflits entre les
différentes applications installées : Infrastructure
6
La conteneurisation
7
Présentation de la conteneurisation
▪ La conteneurisation est une forme de virtualisation du
système d'exploitation dans laquelle s’exécute des
applications dans des espaces utilisateurs isolés
appelés conteneurs
▪ Les conteneurs partagent le même système
d'exploitation avec le système d’exploitation hôte
▪ Un conteneur offre la virtualisation légère dans le sens
qu’il :
▪ Ne virtualise pas les ressources
▪ Crée une isolation des processus
▪ Partage les ressources avec le système hôte.
▪ Un conteneur est un processus ou un ensemble de
processus isolés du reste du système, tout en étant
légers.
8
Présentation de la conteneurisation
▪ Un conteneur d'applications est un environnement informatique entièrement regroupé en
package :
▪ Une application dispose de l’environnement requis pour s'exécuter, y compris ses binaires, ses
bibliothèques, ses dépendances et ses fichiers de configuration, le tout encapsulé et isolé dans un
conteneur.
▪ La conteneurisation d'une application permet d'isoler le conteneur du système d'exploitation
hôte, avec un accès limité aux ressources sous-jacentes
▪ Elle permet de réduire les charges au démarrage et de supprimer la nécessité de configurer
des systèmes d'exploitation invités distincts pour chaque application
▪ Les conteneurs partagent tous un seul noyau de système d'exploitation.
▪ En raison de cette efficacité élevée, les développeurs de logiciels utilisent couramment la
conteneurisation des applications pour regrouper plusieurs microservices individuels
constituant les applications modernes.
9
Avantages de la conteneursiation
▪ La conteneurisation est de plus en plus populaire car les conteneurs sont :
▪ Flexible: même les applications les plus complexes peuvent être conteneurisées.
▪ Portable: vous pouvez créer localement, déployer sur le cloud et exécuter n'importe où
votre application.
▪ Évolutif: vous pouvez augmenter et distribuer automatiquement les réplicas (les clones)
de conteneur.
Isolation au niveau
système
Isolation au niveau
matérielles
11
Différences entre conteneurisation et virtualisation
Virtualisation Conteneurisation
Logiciel de
hyperviseur Logiciel de conteneurisation
virtualisation
Environnement virtuel Machine virtuelle Conteneur
Réserve les ressources de la machine hôte Ne réserve que les ressources nécessaires
Temps de démarrage est assez lent Temps de démarrage est presque instantané.
12
Historique des conteneurs
▪ 1979 : Unix V7 chroot
▪ 2000 : FreeBSD Jails
▪ 2001 : LinuxVServer
▪ 2004 : Solaris Containers
▪ 2005 : OpenVZ
▪ 2006 : cgroups
▪ 2008 : namespaces
▪ 2008 : LXC
▪ 2011 : Warden (Cloudfoundry)
▪ 2013 : Lmctfy (google)
▪ 2013 : Docker
13
Fondations Linux et conteneurs
14
Rootfs
▪ "rootfs" est un raccourci pour "root file system" (système de fichiers racine)
▪ Il est généralement utilisé pour désigner le système de fichiers de base d'un
système d'exploitation Linux.
▪ Le "rootfs" est le point de départ du système de fichiers sur un système Linux,
et il contient les fichiers et les répertoires essentiels nécessaires au
fonctionnement du système.
15
Rootfs et conteneurs
▪ "rootfs" est souvent utilisé en référence aux
conteneurs Linux
▪ Il fait référence au système de fichiers racine (root
filesystem) utilisé à l'intérieur d'un conteneur.
▪ Il joue un rôle essentiel dans la création et l'exécution
de conteneurs
▪ C’est le point de départ du système de fichiers qui
isole l'environnement du conteneur de l'hôte
▪ Il contient tous les fichiers nécessaires à l'exécution
d'une application
▪ Cette abstraction du système de fichiers est essentielle
pour la portabilité, la gestion et l'isolation des
applications dans un environnement de
conteneurisation. 16
chroot
▪ chroot (change root, 1979 ) : Une commande Unix/Linux qui permet de
modifier le répertoire racine pour un processus donné
▪ Le processus considère le répertoire spécifié comme étant la racine de son
système de fichiers.
▪ L'utilisation de chroot peut isoler un processus de l'accès aux fichiers situés en
dehors du répertoire spécifié.
▪ Exemple :
chroot /nouveau_repertoire_racine /chemin/vers/programme
17
chroot et conteneurs
▪ L'une des principales utilisations de chroot est de créer un environnement
d'exécution isolé pour un processus
▪ En spécifiant un répertoire racine pour un processus, ce dernier ne peut accéder que aux
fichiers et aux répertoires situés sous ce répertoire et ne peut pas remonter dans la
hiérarchie du système de fichiers au-delà de ce point.
18
cgroups
▪ cgroups, ou "Control Groups" (groupes de contrôle, 2006) est une fonctionnalité du noyau
Linux qui permet de gérer et de limiter les ressources système (CPU, mémoire, I/O, réseau,
etc.) attribuées à des groupes de processus.
▪ cgroups sont utilisés pour contrôler et isoler les ressources entre différents processus ou
groupes de processus sur un système Linux
▪ Les ressources :
▪ CPU : Limite le temps CPU utilisé par les processus du groupe.
▪ Mémoire : Contrôle la quantité de mémoire utilisée par les processus.
▪ I/O : Régule les opérations d'entrée/sortie disque.
▪ Réseau : Limite la bande passante réseau.
19
cgroups et conteneurs
▪ les cgroups sont un élément clé de la gestion des ressources dans les
conteneurs Linux . Ils sont utilisés pour limiter et contrôler les ressources que
les conteneurs peuvent consommer
▪ Isolation des ressources : Les cgroups permettent d'isoler les ressources système (CPU,
mémoire, I/O, réseau, etc.) entre différents conteneurs sur un même système hôte.
▪ Allocation de ressources : Avec les cgroups, il est possible de définir des limites et des
quotas pour chaque ressource que le conteneur peut utiliser
▪ Équilibrage des ressources : Les cgroups permettent de répartir équitablement les
ressources entre les conteneurs. Si un conteneur ne consomme pas toute sa part de
ressources, les ressources inutilisées peuvent être partagées avec d'autres conteneurs
qui en ont besoin.
▪ Sécurité : Les cgroups contribuent à renforcer la sécurité des conteneurs en empêchant
un conteneur de dépasser les limites définies pour ses ressources.
20
Namespaces
▪ Namespaces (espaces de noms) sont une fonctionnalité du noyau Linux qui
permet d'isoler différents aspects d'un système d'exploitation (processus,
systèmes de fichiers, réseaux, PID, UID, etc.)
▪ Les namespaces donnent à chaque processus sa propre vue unique du
système, limitant ainsi leur accès aux ressources système sans que le processus
en cours ne soit au courant des limitations
▪ Par défaut, chaque système Linux possède un unique espace de nom
(Namespace)
▪ Tous les ressources système appartiennent à cet espace de nom.
▪ Il est possible de créer des espaces de nom additionnels pour organiser les ressources à
l’intérieur.
21
Namespaces et conteneurs
▪ Les namespaces sont utilisés dans la conteneurisation pour créer des
environnements d'exécution isolés, où les processus et les ressources ne sont visibles
que dans leur propre espace de noms.
▪ Ils sont utilisés pour séparer les ressources et les processus entre différents
conteneurs, garantissant une isolation efficace
▪ Namespace de processus (PID) : Chaque conteneur a son propre namespace PID. Les processus à
l'intérieur d'un conteneur ne voient que les autres processus de ce conteneur.
▪ Namespace de système de fichiers (mnt) : isolent la hiérarchie des fichiers pour chaque
conteneur.
▪ Namespace réseau (net) : isolent les interfaces réseau, les tables de routage, les règles de pare-
feu, etc.
▪ Namespace d'utilisateur (user) : Le namespace d'utilisateur permet d'isoler les ID d'utilisateur et
de groupe
▪ ...
22
Qu’est ce qu’un conteneur?
▪ Un conteneur linux est :
▪ Un RootFS
▪ Une configuration Cgroups
▪ Un ensemble de namespaces
23
Les outils de conteneurisation
24
Linux Container (LXC)
▪ Le projet Linux Containers (LXC) est une plateforme de
conteneurs Open Source
▪ LXC offre un environnement de virtualisation au niveau du
système d'exploitation qu'il est possible d'installer sur de
nombreux systèmes basés sur Linux.
▪ Il dispose d'une interface en ligne de commande simple
▪ Les conteneurs LXC sont des conteneurs Linux légers
▪ LXC utilise :
▪ Liblxc : bibliothèques pour interagir avec l'API LXC afin de
développer des outils personnalisés pour la gestion des conteneurs.
Ces bibliothèques sont utilisées par les outils LXC en ligne de
commande.
▪ cgroups pour isoler et contrôler les ressources des conteneurs
▪ namespaces pour isoler les environnements des conteneurs.
▪ Application Armor (AppArmor) et Security-Enhanced Linux
(SELinux) pour renforcer la sécurité des conteneurs
25
Docker
▪ Le projet Docker a été initialement développé par
la startup DotCloud en 2013
▪ Au début l'origine, la technologie Docker a été
créée sur la base de la technologie LXC
▪ Après, Docker a utilisé sa propre bibliothèque
libcontainer
▪ Libcontainer est une bibliothèque de Docker
▪ Permet d’interagir avec le noyau Linux et gérer la
création, le démarrage, l'arrêt et la supervision de
conteneurs
▪ fournit une couche d'abstraction pour simplifier la
gestion des conteneurs
▪ Permet à Docker d'être flexible, portable et de s'intégrer
à une variété de distributions Linux. 26
Docker vs. LXC
▪ Docker restreint l’utilisation du conteneur à une seul service (“one service per container”
philosophy)
▪ Il faut construire X conteneurs pour une application qui consiste de X services.
▪ Il est possible de lancer plusieurs services via un script dans un conteneur Docker mais il est généralement
recommandé d’utiliser un service par conteneur.
27
Docker vs. LXC
▪ Docker et LXC sont deux technologies de conteneurisation qui partagent certaines
similarités, mais qui ont des différences importantes en termes d'architecture et d'utilisation
Docker LXC
Niveau d’abstraction : Haut niveau Niveau d’abstraction : Bas niveau
Isolement :
Portabilité
Les conteneurs LXC partagent le même noyau du
Les conteneurs peuvent être exécutés sur différentes
système d’exploitation → Conteneurs ne sont pas aussi
distributions Linux
isolés que les conteneurs Docker mais plus légers.
29
Docker
▪ Docker est une technologie de conteneurisation qui permet la création et
30
Les composants Docker
▪ Docker Engine: c’est l’application à installer sur la machine hôte pour la création, l’exécution et la
gestion des conteneurs Docker. Trois versions différentes de Docker Engine :
▪ Docker Community Edition : version gratuite qui s’installe sur les systèmes d’exploitation à base Linux ;
▪ Docker Desktop : version gratuite qui s’installe sur les systèmes d’exploitation Mac ou Windows;
▪ Docker Enterprise : version soumise à une licence fournie par Docker Inc.
▪ Docker Daemon: C’est l’outil responsable du traitement des requêtes API pour gérer les différents
aspects de l’installation tels que les images, les conteneurs ou les volumes de stockage.
▪ Docker Client: C’est la principale interface qui communique avec le système Docker. Il est chargé
d’envoyer au Docker Daemon les commandes qu’il reçoit par le biais de l’interface de ligne de
commande.
31
Les composants Docker
▪ Dockerfile: C’est un fichier texte rédigé avec une syntaxe spécifique et qui inclut les instructions de
création d’une image Docker. Un conteneur Docker débute avec un ”Dockerfile“.
▪ Image Docker: c’est un modèle en lecture seule qui est utilisé pour la création des conteneurs
Docker.
33
Workflow Docker
Build Push
Run
34
Les commandes Docker
▪ Syntaxe :
$docker [options] [command] [arguments]
▪ Pour consulter toutes les sous-commandes possibles, tapez la commande : $sudo docker
▪ Pour consulter les options disponibles pour une commande spécifique, tapez : $sudo docker
docker-subcommand –help
▪ Pour plus d’informations sur Docker à l'échelle du système, utilisez : $sudo docker info
35
Gestion d’une image
▪ Le tableau suivant est un récapitulatif des principales commandes docker
permettant la gestion des images Docker
docker pull nom_image Récupérer la dernière image « nom image » disponible sur Docker Hub.
docker run Créer le conteneur en utilisant l’image qui est spécifié par son nom « nom_image »
nom_image/id_image ou son ID « id_image ».
36
Construction d’une image
▪ Construction d’une image à partir d’un conteneur
37
Construction d’une image :Dockerfile
▪ Une image est construite à partir d’un fichier de description appelé Dockerfile
▪ Le fichier Dockerfile contient un ensemble de commandes nécessaires telle que celles citées
dans le tableau suivant :
Instructions Fonctions
FROM permet de définir l'image source (l’image de base à partir de laquelle nous allions créer
l’image Docker personnalisée).
RUN Permet d’exécuter des commandes dans le conteneur. En fait, elle permet de lancer des
commandes Linux pendant la phase de construction de l’image.
ADD Permet d'ajouter des fichiers (qui se trouvent dans la machine locale) dans le conteneur.
WORKDIR Permet de définir le répertoire de travail.
EXPOSE Permet de définir les ports d'écoute par défaut.
ENV Permet de gérer des variables d'environnement.
CMD Permet de définir la commande par défaut lors de l’exécution des conteneurs Docker.
38
Construction d’une image :Dockerfile
Exemple de Dockerfile
39
Création d’un conteneur
▪ Pour créer un conteneur, il suffit de lancer la commande suivante :
▪ Exemples d’options :
▪ -v HostVolume : ContainerVolume — Crée un volume partagé entre l’hôte et le
conteneur
▪ - - network — Choisir le réseau du Docker
▪ p HostPort : DockerPort — mapping de port entre l’hôte et le conteneur
40
Gestion des conteneurs
docker ps (-a) Lister les conteneurs docker actifs sur votre environnement.
L’ajout de l’option -a permet de lister les conteneurs actifs et
inactifs sur votre environnement.
docker run nom_image/id_image Créer le conteneur en utilisant l’image qui est spécifié par son
nom « nom_image » ou son ID « id_image ».
docker start nom_conteneur/id_conteneur Démarrer un conteneur arrêté.
docker stop nom_conteneur/id_conteneur Arrêter un conteneur actif (en cours d’exécution).
docker rm nom_conteneur/id_conteneur Supprimer un conteneur.
41
Réseau Docker
▪ Docker prend en charge différents types de réseaux :
▪ Bridge : réseau interne attaché par défaut à un conteneur
▪ Les conteneurs qui utilisent ce type de réseau, ne peuvent communiquer qu'entre eux, cependant ils
ne sont pas accessibles depuis l'extérieur
▪ Host : réseau de la machine hôte
▪ Ce type de réseau permet aux conteneurs d'utiliser la même interface que l'hôte
▪ Absence d'isolation réseau entre les conteneurs
▪ Les conteneurs prennent la même IP que votre machine hôte
▪ None : conteneur isolé sans aucune interface réseau (sauf l'interface loopback)
▪ Ce type de réseau permet d’interdire toute communication interne et externe avec le conteneur
▪ Overlay : réseau distribué entre plusieurs hôtes possédant le moteur Docker
▪ Ce type de réseau permet de connecter des conteneurs répartis sur plusieurs hôtes
▪ Docker gère de manière transparente le routage de chaque paquet vers et depuis le bon hôte et le
bon conteneur 42
Réseau Docker
▪ Driver Bridge
44
Publication de Ports (Port Publishing)
▪ Par défaut et lors de son création, un conteneur n’expose aucun de ses ports avec
l’extérieur
▪ La publication de ports réseau est un moyen de permettre au conteneur de
communiquer avec d'autres conteneurs et le monde externe.
▪ Publication de ports lors du lancement du conteneur : (- - publish / -p)
▪ À l’exécution d’un conteneur avec Docker, il est possible de spécifier les ports en utilisant
l'option -p (ou --publish) ou l'option -P (ou --publish-all).
▪ Commandes :
▪ Publication d'un port unique : docker run -p <port_hote>:<port_conteneur> <nom_image>
▪ Publication de tous les ports exposés : docker run -P <nom_image>
▪ Vérification des ports publiés : docker port mon_conteneur
▪ Exemple :
▪ docker run -p 80:8080 mon_image → Pour publier le port 8080 du conteneur sur le port 80 de l'hôte
45
Publication de ports dans le fichier Dockerfile
▪ Il est également possible de définir la publication de ports dans un fichier
Dockerfile en utilisant l'instruction EXPOSE.
▪ L'instruction EXPOSE
▪ Définit quels ports du conteneur sont destinés à être exposés et écoutés
46
Gestion des données dans Docker
▪ Par défaut, tous les fichiers créés à l'intérieur d'un conteneur sont stockés dans
une couche de conteneur inscriptible.
▪ Cela signifie que : Les données ne persistent pas lorsque ce conteneur est supprimé
▪ Trois méthodes de stockages :
▪ tmpfs mount : (éphémère) permet de stocker les données dans la mémoire vive du système hôte en plus
de la couche inscriptible
▪ volume : configurer un volume Docker commun entre hôte et conteneur au moment du lancement
▪ bind mount : monter un répertoire du système de fichier hôte au conteneur lors de son lancement
47
Gestion des données dans Docker
▪ tmpfs mount :
▪ Permet de stocker les données dans la mémoire vive du système hôte
▪ Données éphémères et ne survivent pas au redémarrage du système
▪ Utile pour le stockage temporaire des données pour des opérations temporaires
▪ Utile pour améliorer les performances.
▪ Volume :
▪ Ce sont des systèmes de fichiers montés dans un conteneur depuis le système hôte
▪ Permet de stocker des données de manière persistante et indépendante du cycle de vie des conteneurs
▪ Utile pour stocker des données qui doivent survivre à la création et à la suppression de conteneurs
▪ Bind Mount :
▪ Les montages de fichiers lient un répertoire du système de fichiers hôte à un répertoire du conteneur lors
de son lancement. C
▪ Les données sont partagées entre le système hôte et le conteneur.
▪ Les modifications apportées aux fichiers du répertoire partagé sont reflétées des deux côtés.
▪ Utile lors du besoin de partager des fichiers ou des répertoires spécifiques entre le système hôte et un
conteneur. 48
Écosystème Docker
▪ L'écosystème Docker est un ensemble de technologies, d'outils et de pratiques qui gravitent
autour de la technologie de conteneurisation Docker.
▪ Cet écosystème est conçu pour étendre les fonctionnalités de Docker, simplifier la gestion
des conteneurs et faciliter leur intégration dans différents environnements de
développement et de production.
▪ Exemples de composants clés de l'écosystème Docker :
▪ Docker Engine : c’est l’application client-serveur open source dont les composants centraux sont : démon
et client Docker.
▪ Docker machine : outil de gestion et provisioning des machines virtuelles exécutant Docker. C’est un script
utilisé pour la création des machines virtuelles utilisant docker.
▪ Docker Swarm : Un swarm est un groupe de machines exécutant Docker et appartenant à un Cluster
▪ Docker Compose : outil permettant de définir le comportement de plusieurs conteneurs qui dépendent les
uns des autres et qui permet leur lancement
49
Kubernetes
50
Motivations
▪ Gestion des conteneurs en cluster
La gestion des conteneurs est le processus d’organisation, d’ajout, de suppression ou de
mise à jour d’un nombre significatif de conteneurs
52
Qu’est-ce que l’orchestration de conteneurs ?
▪ Un orchestrateur de conteneurs est un système qui déploie et gère
automatiquement des applications conteneurisées.
▪ Un orchestrateur peut répondre dynamiquement aux modifications apportées à
l’environnement pour augmenter ou diminuer les instances déployées de l’application
managée
▪ Il peut assurer que toutes les instances de conteneur déployées sont mises à jour si une
nouvelle version d’un service est publiée.
53
Introduction à Kubernetes
▪ Kubernetes (communément appelé « K8s »)
▪ Un système open-source
▪ Une plate-forme permettant d’automatiser le déploiement, la montée en
charge et la mise en œuvre de conteneurs d’application sur des clusters.
▪ Un orchestrateur de conteneurs
▪ Fonctionne avec toute une série de technologies de conteneurisation
▪ Conçu à l’origine par Google
▪ Puis offert à la Cloud Native Computing Foundation
▪ Disponible sur les plateformes Cloud : Google Container Engine, Azure, AWS
EKS, etc.
54
Introduction à Kubernetes
▪ Il offre une plateforme réservée à la planification et à l'exécution de conteneurs
sur des clusters de machines physiques ou virtuelles.
▪ Simplifie la mise en œuvre et l’utilisation d’une infrastructure de conteneurs
dans des environnements de production.
▪ Fonctionnalités de Kubernetes :
▪ Orchestration des conteneurs
▪ Mise à l'échelle Automatique
▪ Gestion de la Haute Disponibilité
▪ Répartition de charges
▪ Gestion des ressources
▪ Mise à Jour des Images de Conteneur
55
Terminologie Kubernetes
▪ Plan de contrôle : ensemble de processus qui contrôle les nœuds Kubernetes et assigne
toutes les tâches.
▪ Nœuds : machines qui exécutent les tâches qui leur sont assignées par le plan de contrôle.
▪ Pod : groupe d'un ou de plusieurs conteneurs déployés sur un seul nœud.
▪ Les conteneurs d'un pod partagent une même adresse IP, un même nom d'hôte et d'autres ressources.
▪ Les pods permettent de dissocier le réseau et le stockage du conteneur sous-jacent → Il est possible de
déplacer les conteneurs au sein du cluster très simplement.
▪ Contrôleur de réplication : composant qui vérifie le nombre de copies identiques d'un pod
qui doivent s'exécuter quelque part dans le cluster.
▪ Service : élément qui dissocie les définitions de tâche des pods. Les proxies de service
Kubernetes reçoivent automatiquement des demandes de service dans le bon pod, même
s'il a été déplacé dans le cluster ou s'il a été remplacé.
▪ Kubelet : service exécuté sur des nœuds qui lit les manifestes du conteneur pour s'assurer
que les conteneurs définis ont démarré et fonctionnent.
▪ kubectl : outil de configuration des lignes de commande pour Kubernetes
56
Architecture Kubernetes
▪ Cluster désigne un déploiement
fonctionnel de Kubernetes.
▪ Un cluster comprend :
▪ Le plan de contrôle :
▪ C’est le serveur implémentant des
composants Kubernetes qui contrôlent le
cluster, ainsi que des données sur l’état et
la configuration du cluster.
▪ Il maintient le cluster dans un état
souhaité
▪ Les machines de calcul ou nœuds
(machines physiques ou virtuelles)
▪ Chaque nœud exécute des pods,
constitués de conteneurs
▪ Les machines de calcul exécutent les
applications et les charges de travail.
57
Architecture Kubernetes
▪ L'architecture de Kubernetes est divisée en deux parties principales :
▪ Plan de contrôle (Control Plane)
▪ Nœuds de travail (Worker Nodes)
58
Plan de Contrôle (Control Plane)
▪ Le plan de contrôle est chargée de la gestion et de la coordination des
opérations dans le cluster. Il est composé de plusieurs composants :
▪ API Server
▪ Interface exposée par Kubernetes pour interagir avec le cluster
▪ Gère toutes les communications internes et externes entre les différents composants pour effectuer
des opérations sur le cluster.
▪ Etcd
▪ Une base de données distribuée qui stocke l'état du cluster, les configurations et les métadonnées.
▪ Toutes les informations du cluster, y compris les objets de configuration, sont stockées dans etcd.
▪ Scheduler :
▪ Gère la planification des pods sur les nœuds de travail en fonction de diverses politiques et
contraintes.
▪ Il décide où exécuter les pods en fonction de la capacité des nœuds et d'autres critères.
▪ Controller Manager :
▪ Surveille en permanence l'état du cluster et agit pour garantir que l'état souhaité est maintenu.
59
Nœuds de travail (Worker Nodes)
▪ Ce sont les machines physiques ou virtuelles où les conteneurs s'exécutent
▪ Chaque nœud de travail contient plusieurs composants :
▪ Kubelet
▪ Agent qui s'exécute sur chaque nœud de travail et communique avec le plan de contrôle via l’API Server
▪ Il assure que les pods sont exécutés conformément aux spécifications du plan de contrôle.
▪ Supervise le fonctionnement des conteneurs : si un noeud tombe en panne, il sera détecté par Kubelet et
l’information sera transférée au plan de controle
▪ Kube Proxy
▪ Responsable de la mise en réseau sur chaque nœud.
▪ Gère les règles de routage du trafic réseau vers les pods.
▪ Container Runtime
▪ Responsable de l'exécution des conteneurs à l’intérieur d’un nœud. Exemple : Docker
▪ POD
▪ Peut contenir un ou plusieurs conteneurs qui partagent le même espace réseau et de stockage.
▪ Les pods s'exécutent sur les nœuds de travail. 60
Interagir avec un cluster Kubernetes
▪ Kubectl est un outil en ligne de commande appelé pour la gestion des clusters.
▪ kubectl est utilisé pour envoyer des commandes au plan de contrôle du cluster
ou pour extraire des informations sur tous les objets Kubernetes via le serveur
d’API.
▪ kubectl utilise un fichier de configuration qui comprend :
▪ La configuration Cluster spécifie un nom de cluster, des informations de certificat et le
point de terminaison de l’API de service associé au cluster
▪ La configuration Utilisateur spécifie les utilisateurs et leurs niveaux d’autorisations lors
de l’accès aux clusters configurés.
▪ La configuration Contexte regroupe des clusters et des utilisateurs en utilisant un nom
convivial.
61
Pod
▪ Représente la plus petite unité orchestrable de k8s seule : unité de
base
▪ Destiné à exécuter une instance unique d’une application :
▪ lors de la mise en échelle (élévation du nombre des applications), on
multiplie les Pods (1 pour chaque instance)
▪ Peut regrouper plusieurs conteneurs qui sont orchestrés sur un
même hôte
▪ Les conteneurs à l’intérieur d’un Pod fonctionnent ensemble ( start
& stop)
▪ Le plus fréquent : un Pod englobe un seul conteneur
62
Fonctionnement Kubernetes : Déploiement des applications
▪ Pour exécuter une application sur Kubernetes, on doit :
a. Préparer les images nécessaires
b. Faire le Push des images à un dépôt images : Registry
c. Poster un descripteur de l’application à l’API Server via Kubect
▪ Descripteur application
▪ Contient des informations tels que : images, interactions entre les conteneurs,
conteneurs qui doivent s’exécuter sur le même noeud, nombre de copies à exécuter pour
chaque image, etc
▪ Fonctionnement : L’API server procède par le traitement du descripteur :
▪ Le Scheduler planifie et répartie les groupes de conteneurs spécifiés sur les Worker
Nodes disponibles en se basant sur les ressources de calcul nécessaires pour chaque
groupe et celles qui sont disponibles au niveau de chaque Worker Node
▪ Le Kubelet de chaque Worker Node informe le gestionnaire de conteneur (Container
Runtime, exemple Docker) pour faire le téléchargement des images nécessaires depuis le
dépôt et leur exécution sur des conteneurs
63
Fonctionnement Kubernetes : Déploiement des applications
Exemple :
▪ Un descripteur d’application liste
quatre conteneurs groupés en trois
PODs
▪ Les deux premiers PODs contiennent
chacun un seul conteneur
▪ Le troisième POD contient deux
conteneurs doivent être exécutés
sur le même nœud
▪ Le descripteur fournit de plus le
nombre de copies (duplication) de
chaque POD
64