DEV Community

Cover image for Docker et Kubernetes
Massy Haddad
Massy Haddad

Posted on

Docker et Kubernetes

Devops with docker

...

Partie 1 (exercice 1.13)

Alt Text

Code :

FROM openjdk:8

RUN apt-get  update  &&  apt-get  install  -y  git
RUN git clone https://github.com/docker-hy/spring-example-project.git

WORKDIR /spring-example-project

RUN ./mvnw package

CMD ["java" ,"-jar", "./target/docker-example-1.1.3.jar"]
Enter fullscreen mode Exit fullscreen mode

Partie 2 (exercice 2.7)

Alt Text

Code :

version: '3'

services:
  ml-kurkkumopo-training:
    image: deeq/ml-kurkkumopo-training
    volumes: 
      - model:/src/model
      - imgs:/src/imgs

  ml-kurkkumopo-frontend:
    ports:
      - 3000:3000
    restart: unless-stopped
    image: deeq/ml-kurkkumopo-frontend
  ml-kurkkumopo-backend:
    ports: 
      - 5000:5000
    image: xbexbex/ml-kurkkumopo-backend
    volumes: 
      - model:/src/model
volumes: 
  model:
  imgs:
Enter fullscreen mode Exit fullscreen mode

Kubernetes

C'est quoi?

Tout d'abord, Kubernetes, ou encore k8s, est un plateforme libre de droits qui permet d'automatiser l'exploitation de container Linux.

Cet outil aide notamment à supprimer certains processus fait habituellement de façon manuelle, tel que la mise à l'échelle des applications dans des container ou encore la gestion de version (s'assurer que l'application est déployé de la même façon que durant nos test) et j'en passe.

Kubernetes offre des outils d'orchestration (services de mise en réseau, de stockage, de sécurité, de télémétrie) qui nous aiderons à déployer des applications qui s'étendent sur plusieurs container et à gérer la sécurité celles-ci plus efficacement. Ces applications conteneurisées pourront, grâce à Kubernetes, être déployée à grande échelle de façon automatisée.

Voici un bref résumé de ce que l'on peut faire avec k8s (source):

  1. « orchestrer des conteneurs sur plusieurs hôtes
  2. optimiser l'utilisation de votre matériel afin de maximiser les ressources requises pour l'exécution de vos applications d'entreprise
  3. contrôler et automatiser les déploiements et mises à jour d'applications
  4. monter et ajouter des systèmes de stockage pour exécuter des applications avec état
  5. mettre à l'échelle des applications conteneurisées et leurs ressources à la volée
  6. gérer des services de façon déclarative et garantir ainsi que les applications déployées s'exécutent toujours de la manière dont vous les avez déployées
  7. vérifier l'intégrité de vos applications et les réparer automatiquement grâce au placement, au démarrage, à la réplication et à la mise à l'échelle automatiques. »

Lexique

Master : c'est un server contrôlant les nœuds Kubernetes.

Nœuds : ce sont des machines qui exécutent des tâches qui leurs ont été attribuées (un nœud peut être une machine virtuelle ou une machine physique).

Cluster : c'est un ensemble de machines (nœuds) qui nous permettent d'exécuter des applications conteneurisée (il contient au minimum un nœud de calcul et un nœud de gestion).

Pod : c'est un ou plusieurs container qui sont déployés sur un seul nœud (machine) partageant ainsi la même adresse IP, le même IPC, le même nom d'hôte ainsi que d'autres ressources.
Il permet de déplacer les container facilement au sein d'un cluster.

vContrôleur de réplication : il s'occupe de vérifier le nombre de copies identiques d'un pod qui doivent s'exécuter dans le cluster.

Service : il sert à dissocier les définitions de tâche des pods, c'est-à-dire qu'il transfère automatiquement les requêtes de service vers le pod adéquat.

Kubelet : c'est un service qui s'exécute sur des nœuds et qui lit les manifest (genre de log) afin de s'assurer que les container ont démarrés et sont fonctionnels.

vkubectl : c'est un outil de configuration en ligne de commande de Kubernetes (kubectl).

Tutoriel

  1. Tutoriel interactif (officiel) de Kubernetes couvrant de la création d'un container à la mise à jour d'une application.
  2. Tutoriel sur le fonctionnement de Kubernetes
  3. Tutoriel sur le déploiement d'un container dans lequel se trouve une page index.php (classique Hello world)

Pour ma démo, j'ai choisi le troisième :
indexphp
Capture
Capture 2
expose service
pods and deploy
svc
deploy result

Top comments (0)