POUŽITÍ CONTAINERŮV METACENTRUaneb Singularity
Miroslav RudaCESNET
Seminář MetaCentra, Praha11.5. 2018
Obsah
Virtualizace a containery obecněContainery pro HPC - SingularityPříkladyPoužití v MetaCentruDocker
M. Ruda, Containery, CESNET
Containery v HPC I
Motivace - ne vždy vyhovuje prostředí MetaCentrasoftware vyžadující specifický systém, knihovnypředpřipravené prostředí, vlastní nebo projektovédůraz na reprodukovatelnost
Dlouhodobě používaná je virtualizace celého počítačeVMWare, VirtualBox, Xen, KVMnyní používanější, proto se s ním na začátku trochusrovnámesrovnání je o efektivitě, ztrátě výkonu,bezpečnosti, izolovatelnosti, přenositelnosti
M. Ruda, Containery, CESNET
Containery v HPC II
Virtualizace hardware - iluze celého fyzického počítačena něm běží kompletní operační systémumožňuje jeden fyzický server rozdělit na několikvirtuálníchzákladní technologie pro cloudy, softwarovědefinovaná datacentra
Containery - zabalení/iluze vlastního systémovéhoprostředí potřebného pro konkrétní aplikaci
jeden společný operační systém, ten spravujecontainery, HW, přístup k datůmplus nástroje pro práci s containerycontainer jde sdílet - neobsahuje žádná data!
M. Ruda, Containery, CESNET
Containery v HPC III
Historická vsuvka - hardwarová virtualizace1960’s IBM S/360 Mainframes1999 VMWare “VMWare Workstation”aplikační vituální stroj - 1996 Sun Javaopensource - Xen 2003, KVM od 2007
Historická vsuvka - containery1979 UNIX chroot (added to BSD in 1982)2001 Linux VServer (VPS Solution)2005 OpenVZ2008 Control Groups (cgroups v jádře Linuxu)2008 LXC (LinuX Containers)2013 Docker
M. Ruda, Containery, CESNET
Containery
M. Ruda, Containery, CESNET
Containery v Linux
Linux kernel Cgroupsskupinu procesůjde přiřadit (omezené) zdroje - CPU, paměť, disk
Linux kernel Namespacesomezení viditelnosti systémuMounts, UTS, uname, IPC, PID, Networks, User
obraz disku containeruiluze disku s filesystémem, kde je instalovanýsystém, knihovny i aplikacečasto jen tar soubordovoluje hierarchie, vrstvy, nejvyšší jezapisovatelná
Docker, Singularity, ale i LXC, uDocker, gVisor . . .rozdíly - efektivita, výkon, bezpečnost
M. Ruda, Containery, CESNET
Docker
nejpoužívanější linuxové řešení containerůposkytuje nástroje pro vytvoření, správu adistribuci containerových obrazůprimárně určeno pro virtualizaci síťových služebje výhodný pro vývojáře, usnadňuje přenositelnost,reprodukovatelnost instalacenení až tak vhodný pro HPC výpočty, protože sesnaží nabízet až moc vlastností virtuálních strojů
přístup k rootovským oprávněním, proto vyžadujerootovské oprávnění v systémuproto isolace sítě pomocí virtualizace (výkon!)implementace dělá velké problémy paralelnímprostředím ala MPI, GPU kartaminesnadná spolupráce s autory na vylepšeních proHPC M. Ruda, Containery, CESNET
Singularity I
containery určené pro náročné výpočtypracuje s obrazem containeru v souboru
portabilita - ne přenositelnost zdrojového kódu,ale distribuování odladěného prostředí ve forměvirtuálního stroje/disku z počítače
určeno pro prostředí, kde uživatelé nemajírootovské oprávnění, proto ho ani neemuluje a tímsnižuje bezpečnostní problémyfunguje s MPI úlohamivelký důraz na reprodukovatelnostsnaha využití nástrojů pro Docker, minimálnízávislost na vlastnostech v linuxovém jádře
M. Ruda, Containery, CESNET
Singularity II
Využití - distribuce správně nainstalovaného softwareBioContainers (https://biocontainers.pro/)CMS, velká superpočítačová centra v USA
Bezpečnostdynamický a živelný vývoj, velmi časté chyby
EGI-SVG-2018-14213 (2018-03-29/2018-04-11)Local privilege escalation via overlayfsEGI-SVG-2018-14311 (2018-04-30)Local privilege escalation (without overlay support)nové verze v pátek odpoledne, z logů je zřejmýbezpečnostní problém
nové verze zároveň mění chování příkazů
M. Ruda, Containery, CESNET
Jak v MetaCentru?
Příprava obrazu vyžaduje rootovské oprávněníSingularity na vlastním stroji nebo v cloudukonverze z Docker obrazusandbox a docker://metacentrum/ubuntu-fakeroot
Připravený obraz uložený v /home nebo /projektinteraktivně nebo přes PBSProfunguje MPI, kerberos, /software
Očekávané využití uživateli MetaCentravlastní software se specifickým prostředímpřebírání předpřipravených obrazů containerůnástroj pro zlepšení reprodukovatelnosti
M. Ruda, Containery, CESNET
Prostor na dotazy, následují příklady
Singularity workflow
Příprava containeru s rootovským oprávněním"když je potřeba root v containeru, musím být rooti mimo container"vytvoření nového containerubootstrap/install containermodifikace containeru
Využití containeru uživatelemsingularity shellsingularity execsingularity run
M. Ruda, Containery, CESNET
Singularity příklady
$ singularity shell docker://ubuntu:latestDocker image path: index.docker.io/library/ubuntu:latest....Singularity ubuntu:latest:~> cat /etc/lsb-releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=18.04DISTRIB_CODENAME=bionicDISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"Singularity ubuntu:latest:~>
M. Ruda, Containery, CESNET
Singularity příklady
odin$ cat examples/debian/SingularityBootStrap: debootstrapOSVersion: stableMirrorURL: http://ftp.us.debian.org/debian/
%runscriptecho "This is what happens when you run the container..."
%postecho "Hello from inside the container"apt-get updateapt-get -y install vimapt-get clean
M. Ruda, Containery, CESNET
Singularity příklady
odin$ sudo singularity create debian.imgCreating empty 768MiB image file: debian.imgFormatting image with ext3 file systemImage is done: debian.imgodin$ sudo singularity bootstrap debian.img examples/debian/SingularityBuilding into existing container: debian.img...Singularity container built: debian.imgCleaning up...odin$ singularity shell debian.imgSingularity: Invoking an interactive shell within container...
Singularity debian.img:~/> lsdebian.img singularity-2.5.1 singularity-2.5.1.tar.gzSingularity debian.img:~/> exit
M. Ruda, Containery, CESNET
Singularity příklady
Využití namespaces
odin$ singularity exec -p debian.img ps axuUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDruda 1 0.0 0.0 28196 2556 pts/4 R+ 15:03 0:00 ps axuodin$ singularity exec debian.img ps axuUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 185308 5740 ? Ss Apr27 0:56 /usr/lib/systemd/systemd --switroot 2 0.0 0.0 0 0 ? S Apr27 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S Apr27 0:18 [ksoftirqd/0]root 5 0.0 0.0 0 0 ? S< Apr27 0:00 [kworker/0:0H]root 7 0.0 0.0 0 0 ? D Apr27 7:46 [rcu_sched]root 8 0.0 0.0 0 0 ? S Apr27 0:00 [rcu_bh]root 9 0.0 0.0 0 0 ? S Apr27 0:00 [migration/0]root 10 0.0 0.0 0 0 ? S Apr27 0:03 [watchdog/0]
M. Ruda, Containery, CESNET
Singularity příklady
Modifikace obrazuodin$ singularity exec debian.img python --version/.singularity.d/actions/exec: 9: exec: python: not foundodin$ sudo singularity exec --writable debian.img apt-get -y install pythonReading package lists... Done...Setting up python (2.7.13-2) ...odin$ singularity exec debian.img python --versionPython 2.7.13
M. Ruda, Containery, CESNET
Singularity příklady
odin$ cat hello.py#!/usr/bin/pythonimport sysprint("Hello World: The Python version is %s.%s.%s" % sys.version_info[:3])odin$ ./hello.pyHello World: The Python version is 3.4.6odin$ singularity exec debian.img ./hello.pyHello World: The Python version is 2.7.13odin$ cat hello.py |singularity exec debian.img pythonHello World: The Python version is 2.7.13odin$
M. Ruda, Containery, CESNET
Singularity v MetaCentru
odin$ module add intelcdk-17.1odin$ singularity shell -B /software debian.imgSingularity: Invoking an interactive shell within container...
Singularity debian.img:~> /software/intelcdk-17.1/bin/iccicc: command line error: no files specified; for help type "icc -help"Singularity debian.img:~>
M. Ruda, Containery, CESNET
Singularity v MetaCentru
$ qsub -l select=1 -l walltime=24:00:00 -- \\/usr/bin/singularity exec debian.img \\bash -c "/path/to/script.sh"
$ cat mpi_job.sh#!/bin/bash#PBS -l select=2:ncpus=2:mem=1gb:scratch_shared=4gb#PBS -l walltime=04:00:00#PBS -l place=scatter
module add openmpi-2.0.1-gcccat $PBS_NODEFILE |uniq >nodes.txtmpirun -n 2 --hostfile nodes.txt singularity exec \\
debian.img /path/to/programM. Ruda, Containery, CESNET
Děkuji za pozornost
http://www.metacentrum.czhttps://wiki.metacentrum.cz/wiki/Singularityhttp://singularity.lbl.gov/user-guide
Singularity v MetaCentru
odin$ singularity build --sandbox ubuntu \\docker://metacentrum/ubuntu-fakeroot
odin$ singularity shell -w ubuntuSingularity: Invoking an interactive shell within container...
Singularity ubuntu:~/soft-local/singularity> fakerootodin$ apt-get update -qqqodin$ apt-get install python...odin$ exitSingularity ubuntu:~/soft-local/singularity> exitodin$ singularity build ubuntu.simg ubuntuodin$ singularity exec ubuntu.simg python --versionPython 2.7.15rc1odin$ cat hello.py |singularity exec ubuntu.simg pythonHello World: The Python version is 2.7.15
M. Ruda, Containery, CESNET
Docker v MetaCentru
Docker v cloudovém prostředí (pro provoz služeb)klasický Ubuntu/Centos/Debian obrazdoinstalovat Docker/Singularityručně nebo automatizovaně pustit dockerexistují i minimalizované instalace, které Dockerrovnou pustí (boot2docker)OpenStack má i možnost, ze Docker se používájako virtualizační nástroj místo KVM
zatím s tím nemáme žádné velké plánycontainery by šlo spravovat nástroji OpenStacku
pro správu doporučujeme docker-host neboKubernetespro zájemce máme i příklady z EGI /EOSCprostředí, kde používají i orchestraci přes vícecloudových poskytovatelůhttps://github.com/phnmnl/KubeNow-plugin
M. Ruda, Containery, CESNET
Děkuji za pozornost
http://www.metacentrum.czhttps://wiki.metacentrum.cz/wiki/Singularityhttp://singularity.lbl.gov/user-guide
Top Related