Docker et Kubernetes
Massy Haddad
Posted on February 21, 2021
Devops with docker
...
Partie 1 (exercice 1.13)
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"]
Partie 2 (exercice 2.7)
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:
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):
- « orchestrer des conteneurs sur plusieurs hôtes
- optimiser l'utilisation de votre matériel afin de maximiser les ressources requises pour l'exécution de vos applications d'entreprise
- contrôler et automatiser les déploiements et mises à jour d'applications
- monter et ajouter des systèmes de stockage pour exécuter des applications avec état
- mettre à l'échelle des applications conteneurisées et leurs ressources à la volée
- 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
- 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
- Tutoriel interactif (officiel) de Kubernetes couvrant de la création d'un container à la mise à jour d'une application.
- Tutoriel sur le fonctionnement de Kubernetes
-
Tutoriel sur le déploiement d'un
container
dans lequel se trouve une pageindex.php
(classiqueHello world
)
Posted on February 21, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.