POUıIT˝ CONTAINERŠ V METACENTRU · 2018. 5. 11. · 1999 VMWare VMWare Workstation aplika£ní...

Post on 12-Oct-2020

8 views 0 download

transcript

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