Gestion de montée en charge | Kubernetes & Docker

Sommaire

  • Présentation
  • Qu’est ce que c’est ?
  • Comment ça fonctionne ?
  • Mon travail

Présentation

Ce projet avait pour but de reprendre à un incident survenu lors de la crise sanitaire du COVID19 du au fait que la majorité des entreprises ont opté pour le télétravail, ce qui par conséquent avait rendu la prise en charge des requêtes utilisateurs au niveau des serveurs très instable à cause du nombre de demande simultanée important qui donnait l’impression de subir des attaques DDOS et donc de rendre certains services indisponibles.
C’est pourquoi pour pallier à ce problème les entreprises en donc opter pour des solutions de gestion des montées en charges des traitements des requêtes des services, avec l’orchestration des applications conteneurisé grâce à Docker et Kubernetes.

Qu’est ce que c’est ?

La montée en charge, également connue sous le terme de scalabilité, fait référence à la capacité d’un serveur ou d’un système à gérer efficacement ou non une augmentation de la charge de travail, généralement due à une augmentation du nombre d’utilisateurs, de requêtes ou de transactions. C’est un aspect crucial pour assurer la disponibilité, les performances et la réactivité d’une application ou d’un service, notamment lorsqu’il est confronté à une croissance continue.

Docker est une plateforme open source populaire utilisée pour la création, le déploiement et l’exécution de conteneurs. Les conteneurs Docker permettent d’emballer une application et ses dépendances dans une unité standardisée, ce qui facilite le déploiement et la gestion d’applications dans différents environnements.
Kubernetes est un système open source de gestion d’orchestration de conteneurs, développé initialement par Google. il est conçu pour automatiser le déploiement, la mise à l’échelle et la gestion d’applications conteneurisées sur des clusters de serveurs. On peut donc grâce à Kubernetes déployer et gérer des conteneurs de manière efficace et fiable. Il fournit des fonctionnalités telles que la répartition de charge, l’auto réparation, la mise à l’échelle horizontale (HPA) et la gestion des ressources, ce qui facilite la gestion d’applications conteneurisées dans des environnements de production.

Comment ça fonctionne ?

Lorsqu’on parle de montée en charge d’un serveur, plusieurs éléments sont importants à considérer : Un serveur doit nécessairement être doté des performances adéquates au risque d’entraîner des goulots d’étranglement; une répartition de la charge de travail entre plusieurs serveurs virtuels ou physiques rentre souvent dans les différentes solutions qui sont proposées pour résoudre un problème de montée en charge notamment avec un cluster de basculement (pour maintenir la disponibilité des services après qu’un lien soit défectueux) ou encore dans mon cas l’utilisation de Docker et Kubernetes (pour créer des environnements clonés virtuels).
Docker et Kubernetes sont donc des technologies complémentaires qui jouent un rôle crucial dans la gestion efficace de la montée en charge  d’applications conteneurisées à grande échelle. L’une des fonctionnalités offertes par Docker et Kubernetes est la mise à l’échelle automatique. Kubernetes peut surveiller les métriques de performance de l’application et ajuster automatiquement le nombre d’instances de conteneurs en fonction de la charge (si la charge de l’application augmente, Kubernetes peut créer de nouveaux conteneurs pour répondre à la demande et les répartir de manière équilibrée sur les nœuds du cluster. De même quand la charge diminue, Kubernetes peut détruire le nombre d’instances de conteneurs en trop pour économiser de la ressource. Il est également possible de définir une politique de montée en charge plus avancée en se basant sur les seuils de CPU ou de mémoire. Ces politiques permettent de spécifier les conditions sur lesquelles Kubernetes doit ajuster automatiquement le nombre de conteneurs en fonction de la demande.

Mon travail :

Projet : Gestion de la montée en charge des requêtes sur le réseau

Ce projet porte sur une intervention sur incident pour résoudre et prévenir d’une éventuelle montée en charge des requêtes sur le réseau INTECH en mettant en place un système de gestion de ladite montée en charge en se basant sur l’utilisation des ressources de l’entité qui nous avait été mis à disposition.

Etape 1 : Répartition des tâches au sein de l’équipe

Selon les exigences et spécification du client, nous avons déterminé les axes de dépendances pour définir les problématiques rencontrés lors d’une montée en charge à des moments ou le pic de charge était le plus élevé. Ensuite nous avons relevé les incidents que cela causait et au final réparti les tâches d’intervention pour établir au mieux un plan de reprise de service immédiat.

Etape 2 : Installation des dépendances

Pour Docker les différentes dépendances que nous avons dû gérer étaient nécessairement la compatibilité du système d’exploitation avec virtualisation, l’élévation de privilèges, ensuite Kubernetes qui repose sur Docker pour l’exécution des conteneurs, kubectl qui est l’outil en ligne de commande utilisé pour interagir avec les clusters Kubernetes; Kubernetes utilise des réseaux virtuels pour communiquer entre les différents composants du cluster.

Etape 3 : Prise en main et configuration de Docker et Kubernetes

Lien pour docker : https://www.hostinger.fr/tutoriels/installer-docker-sur-ubuntu
lien pour Kubernetes : https://kubernetes.io/fr/docs/setup/

Etape 4 : Lancement des test avant déploiement

Le point le plus important, après avoir écrit et importé les fichiers de configurations en yaml, l’écriture du HPA (Horizontal Pod Autoscaler) qui permet à Kubernetes d’automatiser le redimensionnement horizontal des pods en fonction de la charge de travail. l’HPA nous a permis d’ajuster automatiquement le nombre de répliques de pods en fonction des métriques configurées sur la demande au niveau des serveurs. Pour utiliser l’HPA sur Kubernetes nous avons dû mettre en place un cluster Kubernetes fonctionnel et configurer correctement les métriques et les seuils dans l’objet HPA.

Etape 5 : Rapport de fin de projet académique

L’ensemble des rapports d’avancement ont été délivrés au client sous forme d’itération tous les uns mois pour faire le point sur l’état d’avancement, des contraintes et des réussites que nous avons rencontrés jusqu’à la livraison de la recette finale à travers laquelle nous avons fait une présentation du produit et une démonstration du système mis en place par mon équipe et moi.

Résumé :

Ce que j’ai appris – la conténeurisation des espaces de travail
– la gestion des réplicats
– l’analyse de la charge sur le réseau
– scripting en YAML
Résultat– Un seuil fonctionnel de gestion de charge sur le réseau
– création et suppression des pods
SynthèseCe projet m’as permis d’avoir un aperçu sur une gestion de crise en entreprise selon les points suivants :
– Détection du problème,
– analyse des risques
– quatification et définition des tâches
– résolution des erreurs
– sécurisation du système

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut