- A l'arrêt, un conteneur est un fichier (ou un ensemble de fichiers) qui est enregistré sur un disque.
- Au démarage du conteneur, le moteur décompresse les fichiers et les méta-données nécessaires, puis les transmet au noyau Linux, comme un processus normal.
- Au démarage du conteneur un appel API au noyau déclenche une isolation supplémentaire (si nécessaire) et monte une copie des fichiers de l'image du conteneur.
- Au démarrage du conteneur, le moteur décompresse les fichiers et les méta-données nécessaires, puis les transmet au noyau Linux, comme un processus normal.
- Au démarrage du conteneur un appel API au noyau déclenche une isolation supplémentaire (si nécessaire) et monte une copie des fichiers de l'image du conteneur.
- Une fois lancés, les conteneurs ne sont un processus Linux comme un autre.
- Un conteneur est immuable (modifier un conteneur = créer un nouveau)
---
# Open Container initiative (OCI)
...
...
@@ -154,9 +155,9 @@
- Temps d'instanciation modéré (plus rapide que VMs)
- Performances dégradées, dépendantes hardware
- Performances lièes aux formats d'images
- Performances liées aux formats d'images
- Format en couches optimisés pour téléchargement
- Format fchier optimisé pour le stockage
- Format fichier optimisé pour le stockage
.footnote[Source : Three Easy Ways to Improve a Container’s Performance by Marialena Perpiraki]
---
...
...
@@ -174,7 +175,7 @@
Profile: default # default seccomp profile applied by default
...
```
- En désactivant completement seccomp, tous les syscalls sont autorisés :
- En désactivant complètement seccomp, tous les syscalls sont autorisés :
```bash
# Lancer un conteneur sans seccomp
...
...
@@ -207,12 +208,12 @@
- Docker : daemon root, possibilité d'être root dans un conteneur
- Possibilité d'utiliser AppArmor ou seccomp coté admin pour "verrouiller" l'infra
- Conteneurs user mode :
- Conteneurs dans le namespace "user" :
- même utilisateur hors du conteneur et dans le conteneur
- les problématiques d'élévation de priviléges sont reportées sur le noyau linux
- Attention au SUID...
- Isolation plus ou moins forte (de userNS a VM)
- Vecteur de failles de sécurité logicelle important (cf Alpine Linux)
- Vecteur de failles de sécurité logicielle important (cf Alpine Linux)
- Vecteur d'attaque pour rootkit (très facile de cacher du code malicieux dans un conteneur)
.footnote[*Plus d'infos dans la documentation [officielle](https://sylabs.io/guides/3.7/admin-guide/user_namespace.html#userns-limitations)]
---
background-image: url(images/singu.png)
# Avantages de Singularity pour le HPC
- Facile à installer et à déployer sur un cluster de calcul
- Compatibilité avec Docker
- Utilisation de registres Public/Privé dédiés (http://www.singularity-hub.org/)
- Facile à installer, configurer et à déployer sur un cluster de calcul
- Compatibilité avec le catalogue d'image Docker
- Utilisation de registres Public/Privé dédiés (http://www.singularity-hub.org/), compatibilité gitlab
- Un conteneur est facile à transporter pour l'utilisateur (un fichier SIF à copier)
- Singularity apps
- Compatible tous scheduler
- Singularity apps pour la gestion des chaines de calcul complexes
- Compatible tous job scheduler
- Intégration de tests et d'aide intégrée dans le conteneur
- Accès direct aux GPU de la machine
- Intégration dans Kubernetes
- Conteneurs chiffrés et signés
- Conteneurs en lecture seule
- Sécurité a la carte
---
name: inverse
...
...
@@ -487,68 +526,65 @@
*Un Orchestrateur est un système permettant d'automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées*
- Approche microservice : les conteneurs qui composent une application sont regroupés dans des unités logiques (pods) pour en faciliter la gestion et la découverte
- Deux acteurs : [Kubernetes](https://kubernetes.io/) (The Linux Foundation) et [Nomad](https://www.nomadproject.io/) (Hashicorp)
- Deux acteurs principaux : [Kubernetes](https://kubernetes.io/) (The Linux Foundation) et [Nomad](https://www.nomadproject.io/) (Hashicorp)
* Pas de support natif d'accélérateurs (framework device plugins)
* Basé sur Docker, ouvert aux runtime CRI (containerd, CRI-O, Singularity)
* Gestion d'accélérateurs avec framework device plugins
* Basé sur Docker, ouvert aux runtime OCI (containerd, CRI-O, Singularity)
* Pas de gestion de batch dans Kubernetes, ce qui s'en rapproche le plus est la notion de Job
* Un job crée un ou plusieurs pods et s'assure qu'ils se terminent bien. Lorsqu'un pod se termine avec succès le Job l'enregistre. Quand tous les pods sont terminés, le Job est complet. Supprimer un job supprime le Pod qu'il a crée.
* Un ensemble de pods qui exécutent une tâche et s'arrêtent.
* Le job lance un nouveau pod si un pod échoue ou est supprimé.
* Possibilité de lancer plusieurs pods en parallèle (mais pas avec MPI).
* Singularity-CRI est fourni avec le support natif des GPU NVIDIA en [device plugin](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)
* Singularity-CRI permet le support des GPU NVIDIA en [device plugin](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)
* Déployer facilement des applications conteneurisées ou pas
* Infrastructure as cloud déclaratif
* Binaire multi plateforme
* Version 0.10, déja en production
* Compatible GPU, FPGA, TPUs...
* Uniquement de la gestion de cluster et scheduling
* Supporte Spark
* Version 1.0.2
* Kubernetes vise à fournir toutes les fonctionnalités nécessaires à l'exécution d'applications basées sur Docker, notamment la gestion des clusters, le scheduling, la découverte de services, la surveillance, la gestion des secrets, etc...
* Nomad ne fait que de la gestion de cluster et du scheduling
* Kubernetes fournit tous les services necessaires pour faire tourner des conteneurs Docker or Rkt-based (cluster management, scheduling, service discovery, monitoring, secrets management, ...).
* Nomad est développé par une seule entité, HashiCorp et n'a pas de support communautaire.
* Définition des ressources manuelle
* Auto scaling pas encore disponible
* Développement très rapide, avec une certaine tendance à la dépréciation sauvage et sans préavis