Update docker-orchestration
This commit is contained in:
parent
d2097908c5
commit
5812b987f9
3 changed files with 39 additions and 11 deletions
|
|
@ -1,3 +1,16 @@
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
Projet et rendu
|
||||||
|
===============
|
||||||
|
|
||||||
|
Projet
|
||||||
|
------
|
||||||
|
|
||||||
|
À partir du `docker-compose.yml` écrit dans la partie précédente, ajoutez des
|
||||||
|
contraintes de déploiement pour avoir 1 `telegraf` par nœud, rapportant à la
|
||||||
|
même base `influx`. N'oubliez pas de définir les `restart_policy`.
|
||||||
|
|
||||||
|
|
||||||
Modalités de rendu
|
Modalités de rendu
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|
@ -13,9 +26,6 @@ et exclusivement à celle-ci que vous devez envoyer vos rendus. Tout rendu
|
||||||
envoyé à une autre adresse et/ou non signé et/ou reçu après la correction ne
|
envoyé à une autre adresse et/ou non signé et/ou reçu après la correction ne
|
||||||
sera pas pris en compte.
|
sera pas pris en compte.
|
||||||
|
|
||||||
Par ailleurs, n'oubliez pas de répondre à
|
|
||||||
[l'évaluation du cours](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=33).
|
|
||||||
|
|
||||||
|
|
||||||
Tarball
|
Tarball
|
||||||
-------
|
-------
|
||||||
|
|
@ -28,7 +38,9 @@ cela dépendra de votre avancée dans le projet) :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
login_x-TP2/tp/docker-compose.yml
|
login_x-TP2/
|
||||||
login_x-TP2/tp/mymonitoring-stack.yml
|
login_x-TP2/mymonitoring-stack.yml
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Utilisez la même tarball pour le rendu que pour les parties précédentes.
|
||||||
|
|
|
||||||
|
|
@ -26,26 +26,32 @@ un serveur web, qui sera bien plus représentatif de ce que l'on pourra obtenir.
|
||||||
|
|
||||||
Précédemment, nous lancions notre serveur web favori avec :
|
Précédemment, nous lancions notre serveur web favori avec :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker container run --name mywebs -d nginx
|
docker container run --name mywebs -d nginx
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
La même commande, mais déployée à partir d'un nœud manager, vers un nœud
|
La même commande, mais déployée à partir d'un nœud manager, vers un nœud
|
||||||
*workers*, est :
|
*workers*, est :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker service create --name myWebS nginx
|
docker service create --name myWebS nginx
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
Allons-y, essayons !
|
Allons-y, essayons !
|
||||||
|
|
||||||
On peut consulter l'état du service avec, comme d'habitude `ls` :
|
On peut consulter l'état du service avec, comme d'habitude `ls` :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ docker service ls
|
42sh$ docker service ls
|
||||||
ID NAME MODE REPLICAS IMAGE PORTS
|
ID NAME MODE REPLICAS IMAGE PORTS
|
||||||
iyue3rgd0ohs myWebS replicated 1/1 nginx:latest
|
iyue3rgd0ohs myWebS replicated 1/1 nginx:latest
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
Vous pouvez constater que sur l'un des nœuds, sur lequel votre serveur aura été
|
Vous pouvez constater que sur l'un des nœuds, sur lequel votre serveur aura été
|
||||||
déployé, le tâche apparaît dans la liste des conteneurs !
|
déployé, le tâche apparaît dans la liste des conteneurs !
|
||||||
|
|
@ -55,9 +61,11 @@ Rien de très excitant pour le moment, car nous ne pouvons pas vraiment accéder
|
||||||
à notre serveur. Essayons de modifier sa configuration en direct, afin
|
à notre serveur. Essayons de modifier sa configuration en direct, afin
|
||||||
d'ajouter une redirection de port :
|
d'ajouter une redirection de port :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker service update --publish-add 80 myWebS
|
docker service update --publish-add 80 myWebS
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
À chaque modification de configuration, les conteneurs lancés au sein du
|
À chaque modification de configuration, les conteneurs lancés au sein du
|
||||||
service sont stoppés puis, le manager voyant que le service n'est pas dans
|
service sont stoppés puis, le manager voyant que le service n'est pas dans
|
||||||
|
|
@ -82,7 +90,7 @@ Lorsque plusieurs tâches s'exécutent pour ce service, le nœud d'entrée chois
|
||||||
selon un round-robin à quelle tâche il va diriger la requête. C'est grâce à ce
|
selon un round-robin à quelle tâche il va diriger la requête. C'est grâce à ce
|
||||||
mécanisme qu'il est possible faire une répartition de charge très simplement.
|
mécanisme qu'il est possible faire une répartition de charge très simplement.
|
||||||
|
|
||||||
\\
|
\vspace{1.5em}
|
||||||
|
|
||||||
Cette méthode n'est pas la seule permettant d'exposer des ports. Mais c'est
|
Cette méthode n'est pas la seule permettant d'exposer des ports. Mais c'est
|
||||||
sans doute la plus intuitive. Si vous souhaitez en apprendre plus, vous deviez
|
sans doute la plus intuitive. Si vous souhaitez en apprendre plus, vous deviez
|
||||||
|
|
@ -100,15 +108,19 @@ physique différentes.
|
||||||
Ce qui se fait souvent avec beaucoup de douleur hors de Docker, se résume ici à
|
Ce qui se fait souvent avec beaucoup de douleur hors de Docker, se résume ici à
|
||||||
:
|
:
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker service update --replicas 3 myWebS
|
docker service update --replicas 3 myWebS
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
Roulement de tambours .......
|
Roulement de tambours .......
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker service ps myWebS
|
docker service ps myWebS
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service !
|
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service !
|
||||||
|
|
||||||
|
|
@ -126,15 +138,18 @@ son ensemble : frontend, API, base de données, ...
|
||||||
Notre système de monitoring est une *stack* lui aussi, d'ailleurs, nous pouvons
|
Notre système de monitoring est une *stack* lui aussi, d'ailleurs, nous pouvons
|
||||||
la lancer grâce à notre `docker-compose.yml` :
|
la lancer grâce à notre `docker-compose.yml` :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker stack deploy --compose-file docker-compose.yml tic
|
docker stack deploy --compose-file docker-compose.yml tic
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
### Règle de déploiement
|
### Règle de déploiement
|
||||||
|
|
||||||
Par rapport à `docker-compose`, nous pouvons indiquer dans ce fichier des
|
Par rapport à `docker-compose`, nous pouvons indiquer dans ce fichier des
|
||||||
paramètres qui ne serviront qu'au déploiement de notre tâche.
|
paramètres qui ne serviront qu'au déploiement de notre tâche.
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
|
|
@ -154,6 +169,7 @@ paramètres qui ne serviront qu'au déploiement de notre tâche.
|
||||||
resources:
|
resources:
|
||||||
memory: 50M
|
memory: 50M
|
||||||
```
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
Certaines informations comme les ressources, permettent à l'orchestrateur de
|
Certaines informations comme les ressources, permettent à l'orchestrateur de
|
||||||
mieux choisir le *workers* de destination, en fonction de certaines de ses
|
mieux choisir le *workers* de destination, en fonction de certaines de ses
|
||||||
|
|
|
||||||
|
|
@ -35,18 +35,18 @@ répartir au mieux les conteneurs sur les différentes machines disponibles.
|
||||||
Ce sujet fait l'objet de très nombreuses thèse depuis plusieurs années (avant
|
Ce sujet fait l'objet de très nombreuses thèse depuis plusieurs années (avant
|
||||||
les conteneurs, c'était pour répartir les machines virtuelles entre différents
|
les conteneurs, c'était pour répartir les machines virtuelles entre différents
|
||||||
hôtes), et autant de projets disponibles. Citons par exemple
|
hôtes), et autant de projets disponibles. Citons par exemple
|
||||||
[Apache Mesos](https://mesos.apache.org/),
|
[Google Kubernetes](https://kubernetes.io),
|
||||||
[Hashicorp Nomad](https://www.nomadproject.io/) ou encore
|
[Hashicorp Nomad](https://www.nomadproject.io/) ou encore
|
||||||
[Google Kubernetes](https://kubernetes.io), ...
|
[Apache Mesos](https://mesos.apache.org/), ...
|
||||||
|
|
||||||
Le point commun entre la plupart des orchestrateurs, c'est généralement leur
|
Le point commun entre la plupart des orchestrateurs, c'est généralement leur
|
||||||
extrême complexité de mise en œuvre. Dans le cadre de notre TP, nous allons
|
extrême complexité de mise en œuvre. Dans le cadre de notre TP, nous allons
|
||||||
plutôt utiliser l'orchestrateur intégré à Docker, dont la caractéristique
|
plutôt utiliser l'orchestrateur intégré à Docker, dont la caractéristique
|
||||||
principale est sa simplicité[^dockerconEU2017].
|
principale est sa simplicité[^dockerconEU2017].
|
||||||
|
|
||||||
[^dockerconEU2017]: À noter qu'une annonce faite à la Docker Con EU 2017 (mardi
|
[^dockerconEU2017]: À noter qu'une annonce faite à la Docker Con EU
|
||||||
dernier) indique le début du support de Kubernetes au sein de Docker,
|
2017 indique le début du support de Kubernetes au sein de Docker
|
||||||
pouvant être utilisé en symbiose avec Swarm.
|
EE, pouvant être utilisé en symbiose avec Swarm.
|
||||||
|
|
||||||
|
|
||||||
### Concepts clefs
|
### Concepts clefs
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue