VT2020-Peloton-Demo

From air
Jump to navigation Jump to search

Créer et démarrer un minicluster en local

Un minicluster peut être lancé localement sur une machine. Il se compose de composants Peloton ainsi que de dépendances comme Zookeeper, Cassandra, Mesos master et agents. Un minicluster lance tous ces composants via un Docker Engine qui doit être installé au préalable.

Pour lancer un minicluster il suffit de suivre les étapes suivantes :

  • Installer docker engine (version 1.12.1 minimum)
  • Installer le package python docker-py :
$ pip install docker-py
  • Récupérer la dernière image Peloton de docker-hub :
$ docker pull uber/peloton 
  • Lancer le minicluster localement :
$ PELOTON=app make minicluster

Installer Peloton CLI

Le package Peloton CLI n'étant pas disponible, il faut build peloton localement. Pour savoir comment configurer l'environnement et construire le binaire Peloton CLI, suivre les instructions se trouvant dans Peloton Developer Guide.

$ make

Peloton CLI est disponible ici :

$ {$home}/bin/peloton

Example HelloWorld

Créer un pool de ressources

Il est nécessaire de disposer d'un pool de ressources avant de commencer à travailler dans un cluster Peloton. Chaque pool de ressources spécifie la réservation, la limite et les parts des ressources pour une organisation ou une équipe. Voici un exemple de spécification pour un pool de ressources qui réserve 12 cœurs de CPU, 4 Go de mémoire et 2 GPU :

name: HelloWorldPool
owningteam: MyTeam
ldapgroups:
- MyGroup
description: "My first resource pool on Peloton"
resources:
- kind: cpu
  reservation: 12
  limit: 24
- kind: memory
  reservation: 4096
  limit: 8192
  share: 1
- kind: gpu
  reservation: 2
  limit: 4
  share: 1

Pour créer un pool de ressources :

$ bin/peloton respool create /HelloWorldPool example/helloworld_pool.yaml
Resource Pool fa651fc9-086d-4e8f-a823-d6bf6f144481 created at /HelloWorldPool

Créer un job

Un job est un ensemble d'instances dans Peloton. Pour en créer un, il faut disposer d'un pool de ressources et d'une spécification. Le pool de ressources spécifie où les ressources sont comptabilisées pour le programme à exécuter. La spécification du programme décrit sa configuration détaillée, comme les limites des ressources, l'image du conteneur, etc.

Voici un exemple de spécification de programme avec 10 instances. On commence par spécifier le pool de ressources et la spec du programme :

$ bin/peloton job create /HelloWorldPool example/helloworld_job.yaml
Job 3a6d6cfe-4b25-4137-af65-61d3070d4ac3 created

Chaque instance affiche un message et se met ensuite en veille pendant 1 minute

name: HelloWorld
owningteam: MyTeam
ldapgroups:
- MyGroup
description: "A Hello World batch job on Peloton"
instancecount: 10
defaultconfig:
  resource:
    cpulimit: 1
    memlimitmb: 1024
    disklimitmb: 1024
    fdlimit: 10
  container:
    type: 1
    docker:
      image: "debian"
      parameters:
        - key: env
          value: MESSAGE=HelloWorld
        - key: env
          value: SLEEP_SECONDS=300
    volumes:
      - containerpath: /tmp
        hostpath: /tmp
        mode: 1
  command:
    shell: true
    value: 'echo $MESSAGE && sleep $SLEEP_SECONDS'

Vérifier l'état

Il suffit de lancer la commande suivante :

$ bin/peloton job status 3a6d6cfe-4b25-4137-af65-61d3070d4ac3

creationTime: 2019-02-09T02:32:17.3281139Z
desiredStateVersion: "1"
goalState: SUCCEEDED
startTime: 2019-02-09T02:32:24.448294878Z
state: RUNNING
stateVersion: "1"
taskStats:
  DELETED: 0
  FAILED: 0
  INITIALIZED: 0
  KILLED: 0
  KILLING: 0
  LAUNCHED: 0
  LAUNCHING: 0
  LOST: 0
  PENDING: 8
  PLACED: 0
  PLACING: 0
  PREEMPTING: 0
  READY: 0
  RUNNING: 2
  STARTING: 0
  SUCCEEDED: 0
  UNKNOWN: 0

Lister les instances

$ bin/peloton task list  3a6d6cfe-4b25-4137-af65-61d3070d4ac3
  Instance|  Name|    State|   Healthy|            Start Time|  Run Time|                  Host|                  Message|  Reason|
         0|      |  RUNNING|  DISABLED|  2019-02-09T02:32:27Z|  00:00:11|  peloton-mesos-agent2|                         |        |
         1|      |  RUNNING|  DISABLED|  2019-02-09T02:32:27Z|  00:00:11|  peloton-mesos-agent2|                         |        |
         2|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |
         3|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |
         4|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |
         5|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |
         6|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |
         7|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |
         8|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |
         9|      |  PENDING|  DISABLED|                      |          |                      |  Task sent for placement|        |

Consulter le cahier de bord

$ bin/peloton task logs 3a6d6cfe-4b25-4137-af65-61d3070d4ac3 0 --filename="stderr"
HelloWorld

Sources

Tutoriel : https://peloton.readthedocs.io/en/latest/tutorial/