Kubernetes je open source systém pro orchestraci kontejnerů. Je výkonný, pracuje s kontejnery Docker a zajišťuje jejich nepřetržitý běh. V případě havárie kontejneru či hostitele také zajišťuje příslušný restart, podobně jako to činí VMware HA, ale jiným způsobem.
Kubernetes v současnosti podporuje široká řada různých cloudových poskytovatelů a také tzv. bare-metal implementace se základní vrstvou Linuxu a nadstavbou v podobě kontejnerů.
Kubernetes nabízí správu kontejnerů i ve velkém rozsahu – je tak příslovečným kormidelníkem lodi. Základním účelem je zajistit možnost správy všech vašich kontejnerů v potřebném rozsahu.
Kontejnery výrazně usnadňují proces balení a nasazování aplikací, ale správa těchto kontejnerů ve velmi velkém měřítku vyžaduje značné úsilí. Právě Kubernetes pomáhá zajistit správu clusteru kontejnerů, jako by šlo o jeden systém – díky tomu se nasazení i administrace kontejnerů výrazně usnadní.
Tento přístup pomáhá vývojovým oddělením zakódovat aplikaci do kontejneru a předat ji provoznímu týmu, který pak může tyto kontejnery jednoduše provozovat.
Základní komponenty
Kontejner je uzavřený aplikační software zabalený do standardních jednotek pro vývoj, distribuci a nasazení. Bitová kopie kontejneru obsahuje kód, knihovny run-time, závislosti a konfigurace – vše, co je potřebné k jeho spuštění v podobě odlehčeného balíčku.
Vývojáři mohou zabalit svůj kód a jeho závislosti do objektu kontejneru, který lze poté spustit kdekoli, v jakémkoli prostředí. A protože jsou to obvykle malé objekty, může být v jednom počítači umístěno mnoho kontejnerů.
Docker patří mezi nejpopulárnější kontejnery současnosti, první zástupci této technologie se ale objevily už na počátku éry Unixu.
Pody (pods) jsou malá skupina kontejnerů pracujících společně. Pod je nejmenší nasaditelná jednotka, kterou lze vytvořit, naplánovat a spravovat pomocí produktu Kubernetes.
Chcete-li spustit více kontejnerů, řekněme například čtyři kopie konkrétního webového serveru a databáze, Kubernetes k tomu nabízí technologii s názvem řadič replikace (replication controller), která zajišťuje, aby konkrétní provozovanou službu zajišťoval přesný počet podů.
Jedním ze základních předpokladů stojících za produktem Kubernetes je možnost vynutit tzv. správu požadovaného stavu (desired state management). Podstatou je možnost vložit do clusterových služeb konkrétní konfiguraci a nechat už na clusterových službách, aby tuto konfiguraci spustily uvnitř infrastruktury.
Pokud nakonfigurujete Kubernetes tak, aby v něm běžely čtyři pody na fyzickém hostiteli a z nějakého důvodu jeden z podů havaruje, Kubernetes zajistí automatické spuštění nového podu v libovolném z dostupných uzlů clusteru, aby se zajistil požadovaný stav čtyř dostupných kopií.
Rozhraní API je jednou z hlavních komponent pro vynucení správy požadovaného stavu a nachází se před clusterovými službami. Je to jeden z klíčových stavebních bloků systému. Druhý klíčový stavební blok systému se nazývá worker. Ve skutečnosti je to jen hostitel kontejneru. Workery pracují také jako Kubelety, které komunikují s clusterovými službami Kubernetes.
Služby (services) jsou souborem podů, které pracují dohromady. Je to logický konstrukt, který obsahuje pody s kontejnery. Služby propojují pody navzájem (příkladem může být farma webových serverů) – několik podů (webový server, resp. repozitář obsahu) tvoří službu.
Jako příklad služeb lze uvést back-endové vyvažovače zátěže. Obvykle zjistíte, že samostatné nezávislé služby vyžadují více než jeden kontejner – obyčejně vyžadují skupinu společně umístěných kontejnerů: jeden pro základní funkčnost a další pro podporu činností, jako jsou analýza, monitorování, databázové služby, protokolování atd.
Štítky (Labels) se používají k logickému vytvoření a organizaci skupiny objektů. Štítky se užívají k vyhledávání objektů v různých logických a fyzických oblastech.
Základní konstrukty v kontejnerovém prostředí:
- Kontejnery: běží v clusterech
- Pody: kontejnery pracující společně
- Služby: pody pracující společně
- Štítky: používají se k organizaci služeb
Produkt Kubernetes přináší základní komponenty nativního cloudu pro místní použití a poskytuje možnosti škálování aplikací na podnikové úrovni. Se širokou podporou kontejnerů poskytuje Kubernetes větší flexibilitu při výběru kontejnerů na základě toho, co vaše aplikace vyžaduje.
Se širokým spektrem podpory programovacích jazyků a frameworků Java, Go, .Net atd. získává Kubernetes rozsáhlou podporu vývojářské komunity. Kubernetes má vestavěnou podporu pro různé databáze, systémy ETL a analýzy big dat.
Clustery lze v podstatě instalovat a provozovat kdekoliv. Kubernetes je naprosto nezávislý na dodavatelích a podporuje ho několik dodavatelů cloudových řešení, jako jsou Google Compute Engine, Vagrant, RackSpace, CoreOS, Fedore, Azure, AWS a vSphere. Navíc je to jeden z nejaktivnějších projektů na GitHubu.
Kubernetes je navíc přenositelný mezi různými cloudy a nabízí schopnost rychle a efektivně reagovat na zvýšení poptávky zákazníků.
Aplikace lze škálovat na vyžádání, nasazení aplikací může být rychlejší a předvídatelnější a vývojáři mohou díky flexibilitě přidávat další vylepšení a nové funkce, aniž dochází k využívání velkého množství zdrojů v prostředí veřejného nebo privátního cloudu.
Komerční řešení pro správu kontejnerů
Pravděpodobně nejznámějším a nejpoužívanějším systémem pro správu kontejnerů je Kubernetes, což je čisté open source řešení. Jak je to ale v případě komerčních alternativ?
Zřejmě nejpopulárnějším komerčním řešením pro správu kontejnerů je Docker Enterprise Edition. Poskytuje integrovanou, testovanou a certifikovanou platformu pro aplikace běžící na platformách podnikového Linuxu, operačních systémů Windows a poskytovatelů cloudu.
Existuje však mnoho dalších a několik pozoruhodných má vrstvu proprietárního softwaru založenou na jádru Kubernetes. Mezi příklady tohoto typu softwaru pro správu patří:
* CoreOS Tectonic – tvoří balíček všech open source komponent potřebných k vybudování infrastruktury ve stylu Google a přidává další komerční funkce, jako jsou například konzole pro správu, korporátní integrace SSO a Quay, což je podnikový registr kontejnerů.
* Red Hat Open Shift Container Platform je produkt privátní PaaS pro vlastní infrastrukturu, vytvořený kolem jádra z aplikačních kontejnerů založených na Dockeru, s orchestrací a správou zajišťovanou produktem Kubernetes – řešení je založeno na systému Red Hat Enterprise Linux.
* Rancher od společnosti Rancher Labs usnadňuje nasazení a správu kontejnerů provozovaných na libovolné infrastruktuře.
Tento příspěvek vyšel v Computerworldu 11/2017. Časopis (starší čísla i předplatné těch nadcházejících) si můžete objednat na adrese našeho vydavatelství.