Jakou platformu orchestru zvolit

Nomad a Kubernetes se etablovaly jako dvě z nejvíce preferovaných platforem pro orchestraci, určených k efektivní správě dynamických úloh. Tyto platformy přinášejí automatizaci konfigurace, správy a koordinace různorodých aplikací.

Jak Nomad, tak Kubernetes zjednodušují proces nasazování a správy kontejnerizovaných aplikací. S vhodnou platformou pro orchestraci můžete efektivně řídit rozmanité mikroslužby a kontejnery, od vyhledávání služeb a jejich implementace až po koordinaci a škálování.

Než se rozhodnete pro konkrétní platformu, prozkoumejme blíže specifika Nomad a Kubernetes.

Co je to Nomad?

Nomad od společnosti HashiCorp je nástroj zaměřený na orchestraci pracovních úloh. Je flexibilní a umožňuje plánování, organizaci nasazení a správu kontejnerů. Je použitelný jak v cloudovém, tak i v lokálním prostředí, a navíc podporuje i nekontejnerizované úlohy.

Nomad se dodává jako jediný binární soubor, který je třeba spustit. Na rozdíl od jiných řešení je nenáročný na systémové zdroje a nevyužívá nadměrnou výpočetní kapacitu serverů. Kromě kontejnerů lze s ním spouštět různé druhy úloh, jako jsou aplikace pro Windows, Java, virtuální stroje a Docker.

S Nomad můžete nasazovat a spravovat podnikové kontejnery v produkčním prostředí. Umožňuje vám také spouštět nekontejnerizované aplikace v klastru bez nutnosti jejich kontejnerizace. Pomocí Nomad můžete snadno škálovat a umístit aplikace blíž k vašim zákazníkům. Podporuje i efektivní spouštění krátkodobých dávkových úloh.

Nomad je k dispozici ve dvou verzích: Community Edition a Enterprise Edition. Community Edition je zdarma a umožňuje samostatnou správu clusteru. Je možné jej zprovoznit do 15 minut, ať už lokálně, nebo v cloudu. Enterprise Edition poskytuje navíc podporu a pokročilé funkce pro spolupráci, provoz a správu.

Co je to Kubernetes?

Kubernetes je flexibilní, přenosná a vysoce efektivní platforma pro orchestraci. Původně vyvinut společností Google, známý také jako K8s, je nyní spravován organizací Cloud Native Computing Foundation (CNCF) a je nejvíce využívanou platformou pro orchestraci.

S Kubernetes máte možnost přesouvat pracovní zátěže dle potřeby, ať už se jedná o lokální prostředí, veřejný cloud nebo hybridní řešení. Jeho cílem je poskytnout komplexní sadu nástrojů potřebných pro správu infrastruktury a orchestraci.

Je považován za nejpopulárnější platformu pro orchestraci. Přední poskytovatelé cloudových služeb, jako Amazon Web Services a Google Cloud Platform, nabízejí spravované služby Kubernetes – Amazon Elastic Kubernetes Service (AWS EKS) a Google Kubernetes Engine (GKE).

Přečtěte si také: Začínáme s Kubernetes: Úvod pro začátečníky

Jakou platformu byste si měli vybrat? To zjistíme porovnáním obou systémů.

Nomad vs. Kubernetes

#1. Instalace

Vzhledem k tomu, že instalace je prvním krokem k použití jakéhokoli softwaru, je její jednoduchost zásadní. Při výběru mezi Nomad a Kubernetes je důležité zvážit, jak snadné je s nimi začít.

Nomad

Pro Nomad dostanete předkompilovaný binární soubor nebo balíček, který je třeba nainstalovat. Pro manuální instalaci do vašeho lokálního počítače si můžete stáhnout a nainstalovat oficiální binární soubor. V případě Linuxu je k dispozici oficiální balíček. Po instalaci stačí přidat pluginy CNI (Container Network Interface) pomocí příkazového řádku.

Pro systémy MacOS nebo Windows je instalace ještě jednodušší díky nástrojům pro správu balíčků, jako je Homebrew a Chocolatey. Instalace včetně CNI pluginů se provede jediným příkazem.

Kubernetes

U Kubernetes je k dispozici několik komponent a klientů, které si můžete nainstalovat dle vašich potřeb. Pro každý z nich obdržíte binární soubory. Existují různé obrazy kontejnerů pro různé runtime a systémové architektury.

V oficiálním úložišti najdete binární soubor odpovídající vaší platformě (Darwin, Linux nebo Windows) a architektuře systému. Po instalaci správného obrazu kontejneru budete potřebovat nástroj příkazového řádku `kubectl` pro interakci s kontejnery.

#2. Škálovatelnost

Pro kontejnerizované úlohy je škálovatelnost klíčovým faktorem, který určuje schopnost systému zvládat rostoucí pracovní zátěž. Zjednodušeně řečeno, pokud potřebujete větší výpočetní výkon, orchestrační framework by měl být schopen snadno přidávat nové zdroje.

Nomad

Nomad se osvědčil v provozu klastrů s více než 10 000 uzly v produkčním prostředí. V roce 2020 Nomad úspěšně provedl zátěžový test s 2 miliony Docker kontejnerů na 6 100 hostitelích v 10 různých zónách AWS během 22 minut, což překonalo předchozí úspěšný test s 1 milionem kontejnerů.

S Nomad Autoscaler je k dispozici i horizontální automatické škálování, které můžete spustit jako samostatný proces.

Kubernetes

Od verze 1.28 umožňuje Kubernetes škálovat cluster až na 5 000 uzlů s celkovým počtem 150 000 podů nebo 300 000 kontejnerů.

S rostoucí škálovatelností se údržba clusteru Kubernetes stává složitější ve srovnání se správou clusteru Nomad. Nomad má výhodu v celkovém počtu uzlů, které můžete spustit.

#3. Výkon

Při výběru orchestrační platformy je důležité hledat rovnováhu mezi funkcemi a výkonem. Výkon platformy ovlivňuje, jak efektivně jsou využívány systémové zdroje.

Nomad

Nomad má díky jednoduchému binárnímu přístupu nízkou spotřebu systémových zdrojů. Odpadá také nutnost instalovat samostatné služby pro zprovoznění orchestrační platformy. Díky tomu se snižuje zatížení CPU a paměti na uzlech, což vede k nižší režii a lepšímu výkonu.

Je vysoce adaptabilní a zvládne různé typy úloh, ať už lokálně nebo v cloudu. Jednoduchost, robustnost a efektivita Nomadu přináší výhodu při udržování výkonu s rostoucí velikostí clusteru.

Kubernetes

Kubernetes je optimalizován pro kontejnerizované úlohy. Pokud provozujete rozsáhlou flotilu kontejnerových mikroslužeb, Kubernetes se uplatní v jejich správě. Díky rozsáhlým síťovým možnostem a integracím můžete zrychlit a vyladit potřeby orchestrace.

Díky pokročilým funkcím a konfiguracím využívá Kubernetes více systémových zdrojů. S rostoucí velikostí clusteru se může objevit vyšší režie a složitost při jeho správě.

#4. Sítě

Sítě jsou klíčovým aspektem orchestrace kontejnerů a určují, jak se mohou uzly lokalizovat a komunikovat.

Nomad

Nomad se zaměřuje primárně na orchestraci úloh a minimálně zasahuje do síťování. Usiluje o co nejmenší modifikaci stávající konfigurace.

Namísto spoléhání na infrastrukturu pracuje Nomad s konfiguracemi. Potřebné informace získává přímo z konfigurace a nepotřebuje další komponenty jako DNS servery nebo nástroje pro vyrovnávání zátěže. Základní jednotka plánování v Nomad, nazývaná Alokace, může vyžadovat porty pomocí síťového bloku.

Kubernetes

V Kubernetes je síťování klíčovým prvkem. Umožňuje řídit komunikaci mezi kontejnery na localhostu, komunikaci mezi pody, komunikaci mezi pody a službami a externí komunikaci.

Na rozdíl od dynamických portů v Nomad používá Kubernetes jiný přístup. Poskytuje API služeb jako abstrakci pro zpřístupnění skupiny Podů v síti.

#5. Požadavky

Pro provoz orchestrační platformy ve velkém měřítku závisí systémové požadavky na velikosti clusteru a zátěži. Kromě CPU a paměti jsou důležité i síťové zdroje.

Nomad

Pro produkční servery se doporučuje použít velké instance počítačů s minimálně 4-8+ jádry CPU, 16-32 GB+ paměti a 40-80 GB+ rychlého disku. Je třeba zajistit dostatečnou šířku pásma sítě.

Pokud používáte firewall, je nutné povolit 3 porty Nomadu: HTTP API (výchozí 4646), RPC (výchozí 4647) pro interní komunikaci a Serf WAN (výchozí 4648) pro komunikaci mezi servery.

Kubernetes

Clustery Kubernetes mohou být velmi složité, zvláště v kontejnerizovaných produkčních prostředích. Doporučuje se ponechat na každém uzlu alespoň 2-4 jádra CPU a 8-16 GB RAM.

Pro velké clustery může být potřeba ještě více zdrojů na uzel a je také důležité zajistit dostatečnou šířku pásma sítě.

Zatímco Nomad i Kubernetes se mohou škálovat, Kubernetes má tendenci vyžadovat větší množství zdrojů.

#6. Kódování

Snadnost kódování ovlivňuje, jak efektivně můžete pracovat s vybraným frameworkem. Kromě definování platformy a úloh je třeba se naučit příkazy CLI pro interakci s nástrojem příkazového řádku.

Nomad

HCL (HashiCorp Configuration Language) je primární konfigurační jazyk v Nomad. HCL usiluje o rovnováhu mezi čitelností pro člověka a stroj. Umožňuje specifikovat úlohy, včetně omezení a závislostí pro aplikaci a služby.

Kromě HCL je nutné se naučit i příkazy CLI pro nástroj příkazového řádku Nomad pro interakci s clusterem a provádění konfigurací.

Kubernetes

Kubernetes je konfigurován pomocí souborů YAML nebo JSON. Tyto konfigurační soubory umožňují popisovat, jak by měla aplikace běžet, včetně specifikací modulů, služeb, nasazení a dalších zdrojů.

Pro spouštění složitých aplikací Kubernetes se používá Helm, správce balíčků pro Kubernetes, který umožňuje definovat, instalovat a upgradovat složité aplikace. Helm charty jsou psány v YAML a mohou obsahovat šablony a soubory hodnot pro přizpůsobení nasazení.

Pro interakci s clusterem Kubernetes se používá nástroj příkazového řádku kubectl, který umožňuje provádět různé příkazy pro vytváření, úpravu a správu zdrojů Kubernetes.

#7. Integrace

Orchestrační platformy nabízejí řadu integrací, které podporují. Navíc lze přidávat integrace třetích stran pro rozšíření funkcionality.

Nomad

Nomad se aktivně integruje s různými nástroji a technologiemi. Bezproblémově se propojuje s Dockerem a dalšími kontejnerovými runtime, což usnadňuje nasazování kontejnerizovaných aplikací. Pro zřizování infrastruktury lze použít integraci s Terraform.

Jako součást HashiCrop spolupracuje Nomad s HashiCorp Consul pro vyhledávání služeb a kontrolu stavu a s HashiCorp Vault pro bezpečnou správu tajemství. Monitorování je zajištěno integracemi, jako jsou Prometheus, Grafana a ELK Stack. Nomad navíc dobře zapadá do CI/CD kanálů a umožňuje automatizované nasazení aplikací.

Kubernetes

Kubernetes je dlouhodobě ověřené řešení a nabízí rozsáhlý seznam integrací. Pro nasazování kontejnerů se můžete připojit k Dockeru. Pro síťové potřeby lze využít řešení jako Calico nebo Cilium. Možnosti úložiště, jako Ceph, a cloudoví poskytovatelé služeb jako AWS EKS a Google GKE aktivně spravují trvalé úložiště. Cloudová nativní řešení poskytují i další služby.

Pokud hledáte podporu pro bezserverové úlohy, Kubernetes ji nabízí díky frameworkům jako Knative a KEDA (event-driven autoscaling based on Kubernetes).

#8. GUI

Občas se může hodit vizualizace platformy, na které pracujete. Grafické uživatelské rozhraní (GUI) vám to umožňuje.

Nomad

Nomad poskytuje vestavěné webové uživatelské rozhraní jako součást binárního kódu. Po instalaci Nomadu a spuštění serveru získáte GUI spolu s API a CLI. Pro použití uživatelského rozhraní a kontrolu clusteru není potřeba žádná další konfigurace.

Po spuštění serveru Nomad stačí zadat adresu serveru do webového prohlížeče. Poté budete přesměrováni do webového uživatelského rozhraní. K dispozici je i příkaz `ui`, takže můžete webovou stránku otevřít přímo z příkazového řádku.

Kubernetes

Kubernetes standardně GUI nemá, ale můžete si ho nainstalovat dle vašich potřeb. Kubernetes nabízí oficiální uživatelské rozhraní s názvem Dashboard, které lze spustit pomocí nástroje `kubectl`. Pomocí Dashboardu získáte přehled o clusteru.

Můžete nasazovat kontejnerizované aplikace, spravovat a řešit problémy. Cloudoví poskytovatelé jako AWS EKS a Google GKE nabízejí vlastní nástroje GUI. K dispozici jsou i nástroje třetích stran.

Nomad vs. Kubernetes: Shrnutí v tabulce

Funkce Nomad Kubernetes
Instalace Jednoduché předkompilované binární soubory Různé binární soubory pro komponenty a klienty
Škálovatelnost 10 000 uzlů a 2 miliony kontejnerů 5 000 uzlů a 300 000 kontejnerů
Výkon Jednoduché, efektivní s nízkou spotřebou zdrojů Rozsáhlá sada funkcí, ale vyšší spotřeba dynamických zdrojů
Sítě Spoléhá na konfiguraci, nepoužívá dynamické porty Rozsáhlé síťové funkce, používá abstrakci API služeb
Požadavky Nižší systémové požadavky pro větší cluster Větší cluster vyžaduje více systémových zdrojů
Kódování Používá HCL Používá YAML a JSON
Integrace Dobrá podpora oficiálních integrací a integrací třetích stran Rozsáhlá škála integrací a nástrojů
GUI Vestavěné webové rozhraní Je třeba instalovat samostatně

Výběr vhodné platformy pro potřeby orchestrace

Volba mezi Nomad a Kubernetes závisí na specifických požadavcích a prioritách. Obě platformy podporují různé scénáře použití, jako je plánování nasazení, automatizované zavedení a obnovy, vyhledávání a správa clusterů.

Pokud je prioritou jednoduchost a máte menší pracovní zátěž, Nomad může být vhodnější. S jediným binárním systémem a minimálními nároky na zdroje je snadné Nomad nastavit a provozovat. Navíc je možné škálovat cluster tak, aby podporoval velký počet uzlů.

Pokud ale vyžadujete rozsáhlé funkce, jemné ovládání a širokou škálu integrací, je Kubernetes správnou volbou. Poskytuje robustní řešení pro kontejnerizované úlohy a nabízí bezproblémovou integraci s různými nástroji a technologiemi. Vhodné je také využít spravovaná řešení od AWS a Google Cloud.

Zvažte i další faktory, jako je nutnost naučit se nový jazyk (HCL) v případě Nomad, zatímco Kubernetes používá YAML nebo JSON. Možná bude užitečné také webové uživatelské rozhraní pro snadné používání.

Zohledněte dostupné systémové zdroje a s tím spojené náklady. Výběr platformy by měl vycházet z vašich potřeb, znalostí a zdrojů.

Pro lepší orchestraci kontejnerů je dobré se seznámit s osvědčenými postupy Kubernetes.