Kontejnerizace a virtuální datové centrum

7. ledna 2022

Dnes si jen těžko umíme představit jinou možnost přepravy zboží z jednoho konce na druhý než v masivních kontejnerech na palubě zaoceánských lodí či vlakových souprav. Říkáme tomu kontejnerizace a i ve světě softwarových technologií je tento výraz užíván čím dál častěji.

Virtuální kontejnery totiž rychle nahrazují klasickou plnou virtualizaci. Vytvářejí se pomocí cgroups a namespaces a disponují tak vlastním id uživatelů, sítí, stromem procesů apod. Díky tomu jsou kontejnery izolované vůči ostatním procesům a nemusejí tak např. kvůli jedinému procesu provozovat celý operační systém. Své uplatnění najdou všude tam, kde je požadovaný přímý přístup k hardwaru. Skvěle se hodí k provozu malých aplikací, které nevyžadují vlastní dedikovaný server.

Historie

Původ virtuální kontejnerizace tak, jak ji známe dnes, sahá až do minulého století. Na konci sedmdesátých let se objevila sedmá verze operačního systému UNIX, která za pomoci chroot command dokázal jednoduše izolovat systém od souborů.

Tato technologie se využívala téměř beze změny po dalších dvacet let, než se v operačním systému FreeBSD modifikovala. Vzniknul jail command, který umožňoval rozdělovat jeden počítačový systém na několik menších, na sobě nezávislých systémů.

Na to konto začaly vznikat první Solaris kontejnery. Na nich mohly fungovat aplikace nezávisle na sobě a zároveň se neovlivňovat.

Po přelomu tisíciletí se vývojem kontejnerizačních technologií začaly zabývat i přední světové firmy. Google v roce 2006 představil technologii cgroup, která se začala využívat do jádra Linuxu, a tím dala vzniknout virtualizaci LXC. K tomu, aby LXC správně pracovalo, bylo zapotřebí náročné konfigurace vyžadující odborné znalosti. Technologie se tak tehdy ještě nedočkala masivnější adaptace veřejností.

To se podařilo až po nástupu Dockeru v roce 2013. Tato nová technologie, kterou dnes využívá třičtvrtě všech kontejnerů na světě, dokázala jejich správu znatelně zjednodušit. Navíc je doplnila o další funkcionality a přidala řadu zajímavých vlastností.

Technologie kontejnerizace

Kontejnerových technologií existuje v současném světě internetu velké množství. Technologie jako LXC, Open-VZ, CoreOS, nejsou moc rozšířené hlavně proto, že jejich správa vyžaduje odborné administrátorské znalosti.

Z toho důvodu je právě Docker jediným dominantních hráčem na trhu. Podle průzkumů jej využívá více než 80 % kontejnerů po celém světě a pyšní se tak oproti konkurenci fatální uživatelskou převahou.

Docker

Docker je virtualizační technologie zprovozňující kontejnerovou virtualizaci. Jedná se o software umožňující spouštění balíčků formou kontejnerů na bázi virtualizace skrze operační systém. Z něj využívá jen jádro a knihovny, které jsou nejvíce potřebné k jeho spuštění. Primárně je určen pro Linux, ale jeho provoz je možný i na Windows nebo Mac OS.

Aplikace jsou na Dockeru zprovozněny formou systémového procesu sdílejícího paměť a kernel systému. Aplikace využívají pouze funkce sdíleného kernelu, což může být v určitém ohledu nevýhoda. Ovšem většina běžně využívaných aplikací ani žádné nové speciální funkce nepotřebuje.

Vlastnosti kontejnerů

Efektivita – Tím, že jsou aplikace sestavované a balené do kontejnerů, lze snížit množství úsilí spojeného s jejich nasazováním a zjednodušit jejich vývoj a testování. To může vést ke zlepšení spolupráce mezi vývojovými a provozními týmy, které mezi sebou tak mohou rychleji dodávat aplikace, což povede ke zvýšení jejich efektivity.

Přenositelnost – Kontejnery disponují standardizovaným formátem pro balení a uchovávání součástí nutných ke spuštění aplikace. To umožňuje transformaci mezi platformami operačních systémů a cloudy a současně poskytuje kontejneru konzistentní prostředí pro spouštění.

Rychlost a odlehčenost – Kontejnery jsou z principu odlehčené. Je tedy možné je rychle spouštět a zastavovat
a díky tomu využívat vertikální navyšování a snižování kapacity ve scénářích.

Náklady – Náklady na zdroje jsou v případě kontejnerizace velmi nízké. Je to dáno tím, že je zapotřebí pouze jedna instance OS, která zvládá v jednotlivých kontejnerech spustit různé aplikace.

Použitelnost – Kontejnery se lépe migrují, mohou snáze přecházet z jednoho CSP k druhému. Tím pádem je možné i rychleji spouštět aplikace, jelikož kvůli nim není nutné provozovat samostatný OS.

Izolovanost – Aplikace na kontejneru běží na stejném jádře, ale díky tomu, že je kontejner izolovaný od okolního prostředí, je izolovaná i aplikace. Izolované procesy na kontejneru běží s omezeným přístupem ke zdrojům.

Nevýhody kontejnerů

Mezi nevýhody patří jistá svázanost s hostujícím operačním systémem. Navíc kontejnerizace oproti klasické plné virtualizaci nezajišťuje vysokou úroveň bezpečnosti. Kvůli jejich závislosti na jádře, knihovnách a dalších aplikacích, je riziko napadení vícera strojů současně poměrně vysoké. Jakmile malware napadne hostující operační systém, je riziko napadnutí ostatních kontejnerů daleko vyšší.

Orchestrační nástroje

Kontejnery mohou běžet třeba na stovkách serverů zároveň. Není proto v lidských silách je v takovém objemu spravovat individuálně. Pomáhají nám k tomu tzv. orchestrační nástroje neboli orchestratory.

Orchestrator zjednodušuje správu clusterů a hostitelů, umožňuje spravovat jejich image, kontejnery a hostitele. Využívají k tomu rozhraní příkazového řádku (CLI) nebo grafické uživatelské rozhraní. Lze pomocí nich spravovat jak sítě kontejnerů a konfigurace, tak i vyrovnávat zatížení, zajišťovat služby, dostupnost atd.

Stejně jako všeho ve světě softwarových technologií, i orchestračních nástrojů je celá řada. Každý z nich má svá specifika, výhody a nevýhody. Dlouhodobě nejvyužívanějším je kvůli svému širokému využití a možnostem přizpůsobení open-source systém Kubernetes.

Kubernetes

Protokol k8s (k-eights) známý spíše pod řeckým termínem trefně označujícím kormidelníka nebo pilota Kubernetes, je technologie usnadňující škálování kontejnerizovaných aplikací. Orchestruje cluster virtuálních počítačů, na kterých plánuje spouštění kontejnerů podle toho, na kolika výpočetních prostředcích jsou dostupné a jaké požadavky na prostředky mají.

Kubernetes seskupuje kontejnery do základních provozních jednotek, které následně stupňuje na určitý stav. Dále řídí zajišťování služeb, vyrovnává zatížení a sleduje přidělování prostředků.

Samotným kontejnerům nabízí různé podpůrné prostředky jako např. filesystem, configmapy ke konfiguraci, zajišťuje jejich síťové propojení atd.

Shrnutí

Virtuální datacentrum umožňuje spravovat požadovanou službu pomocí virtualizační platformy. Jde o oblíbenou variantu správy firemní infrastruktury. Jedním z dalších nástrojů virtualizace je kontejnerizace. Své využití nachází hlavně u mikroservisů a malých aplikací nebo kdekoli, kde je požadován přímý přístup k hardwaru.

Nástrojů kontejnerizace existuje celá řada, mezi nejpoužívanější ovšem patří open-sourcová technologie Docker. Pro spravování kontejnerů je třeba využívat orchestratory. Nejčastěji používaný nástroj orchestrace kontejnerů je Kubernetes.

Vojtěch Pospíšil

Prošel jsem formálním vzděláním zaměřeným na marketing a PR a nyní se věnuji internetovému marketingu a správě obsahu.

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *