2023-06-20 09:54 Doba čtení: 18 min

Který kontejnerový orchestr je pro vás nejlepší?

Pro týmy pracující v informačních technologiích (IT) se otevírá široká škála možností při provozování kontejnerových aplikací, a to na všech úrovních odbornosti.

Výběr správného řešení může být složitý, zvláště když uvážíme, že po rozhodnutí se pravděpodobně nebudete chtít v brzké době přesouvat k jiné variantě.

Tento článek porovnává dvě klíčové platformy: Amazon Elastic Container Service (ECS) a Kubernetes.

Obě tyto platformy vynikají v orchestraci kontejnerů a správě mikroslužeb. A než se ponoříme hlouběji, neuškodí si připomenout, jaký význam kontejnery mají. Získaly popularitu díky tomu, že zjednodušují vývoj, propagaci a nasazování kódu v různých prostředích. Jsou to vlastně abstrakce na aplikační vrstvě, které balí kód spolu s potřebnými závislostmi, knihovnami a nastavením prostředí do spustitelného balíčku.

Ačkoli hlavním cílem kontejnerů je zjednodušit proces nasazování kódu, správa velkého množství z nich, řekněme třeba tisíců, může být náročná. Pro spolehlivé nasazení, škálování aplikací podle aktuálního zatížení, nahrazování nefunkčních kontejnerů novými, vyrovnávání zátěže a zpřístupňování portů je potřeba sofistikovanější mechanismus.

A právě zde přichází na řadu orchestrace kontejnerů. Kromě samotných kontejnerů je také potřeba zajistit prostředky pro jejich provoz a správu celkové infrastruktury. Existuje mnoho nástrojů, které tento problém řeší, ale my se zaměříme na dva z nich.

V tomto článku se tedy podíváme na srovnání ECS a Kubernetes, zdůrazníme výhody každého z nich a nastíníme, jak si vybrat ten správný nástroj pro váš projekt.

Co je Amazon ECS?

Amazon ECS je služba pro orchestraci kontejnerů, která usnadňuje nasazování, správu a škálování kontejnerizovaných aplikací. V podstatě definujete svoji aplikaci a její požadované zdroje. Amazon ECS pak zajistí její spuštění, monitorování a škálování v rámci výpočetních zdrojů, které máte k dispozici, a zároveň umožňuje integraci s dalšími službami AWS. Stav svých clusterů můžete například kontrolovat a upravovat programově.

ECS umožňuje nasazovat aplikace do skupin serverů, které se nazývají clustery, pomocí definic úloh a volání aplikačních programových rozhraní (API).

Přečtěte si také: Jaké instance AWS EC2 byste měli použít?

Výhody Amazon ECS

  • Tradiční ECS – tato verze, která byla spuštěna v roce 2015, využívá technologii Amazon EC2 pro snadné spouštění Docker kontejnerů v cloudu. Poskytuje vám základní kontrolu nad EC2, což zajišťuje flexibilitu. Můžete si vybrat, na jakých typech instancí chcete kontejnery spouštět. Navíc se tímto modelem můžete propojit s dalšími službami AWS pro sledování a protokolování aktivit na EC2 instancích.
  • Fargate ECS – uvedeno na trh v roce 2017, umožňuje spouštění kontejnerů bez nutnosti správy základních výpočetních zdrojů EC2. Fargate používá jiný přístup, kdy počítá požadované CPU a paměť. Pokud potřebujete rychle spustit pracovní zátěž, může to být ideální volba, protože se nemusíte starat o základní výpočetní zdroje.
  • Zjednodušené aplikační architektury – ECS je vhodný pro aplikace s menším počtem mikroslužeb (s několika externími závislostmi nebo s několika samostatnými komponentami), které fungují nezávisle na sobě.
  • Snadné monitorování a protokolování – ECS se snadno integruje s nástroji AWS pro protokolování a monitorování, jako je CloudWatch. Nemusíte nastavovat viditelnost úloh kontejneru, což vám ušetří čas.
  • Snadná křivka učení – ECS je snadné se naučit. Hostovaný Kubernetes získává na popularitě, ale tradiční modely, jako KOPS a Kubeadm, jsou stále relevantní.
  • Bezserverová infrastruktura – ECS umožňuje spouštět kontejnery bez nutnosti správy virtuálních strojů. Samotné kontejnery se rozmísťují bez lidského zásahu.
  • Vestavěné zabezpečení – Amazon ECS je ve výchozím nastavení bezpečný a bezpečnostní opatření se šíří prostřednictvím izolovaného síťového mechanismu Virtual Private Cloud.

Omezení ECS

  • Omezené úložiště – externí úložiště je omezeno pouze na produkty Amazonu, konkrétně Amazon EBS.
  • Omezení ověřování – ECS je produkt Amazonu, takže není dostupný pro veřejné nasazení mimo platformu Amazon.
  • Vendor lock-in – ECS je vázán na svého dodavatele a může spravovat pouze kontejnery, které byly vytvořeny v rámci jeho ekosystému.
  • Nedostupnost zdrojového kódu – značná část zdrojového kódu ECS není veřejně dostupná. Nástroje jako AWS Blox (rámec pro vytváření vlastních plánovačů) mají open-source pouze malou část své kódové báze.

Co je Kubernetes?

Kubernetes, běžně označovaný jako K8s, je open-source software pro automatizaci nasazování, škálování a správy kontejnerizovaných aplikací.

Využívá 15 let zkušeností s provozováním produkčních úloh v Google (kombinací nejlepších myšlenek a komunitních postupů). K8s seskupuje vaše aplikační kontejnery do logických celků, které lze snadno objevovat a spravovat.

Mezi primární funkce K8s patří vyrovnávání zátěže, perzistentní úložiště, automatizovaný rollback pro kontejnerové aplikace, správa tajemství, samoléčení pro Kubernetes clustery a správa konfigurace.

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

Výhody Kubernetes

  • Open source (žádná závislost na dodavateli) – Kubernetes můžete používat lokálně (on-premise) nebo v cloudu, aniž byste museli měnit architekturu vaší orchestrace. Na rozdíl od tradičního softwaru, který vyžaduje licenční poplatky, je K8s zdarma a open source. A aby toho nebylo málo, clustery K8s běží ve veřejných i soukromých cloudech, čímž poskytují virtualizační zdroje na obou místech.
  • Vysoká flexibilita – K8s je skvělé řešení pro aplikace, které vyžadují vysokou dostupnost a zároveň efektivitu a škálovatelnost. Tato vlastnost je velmi užitečná pro aplikace, které generují vysoké příjmy. Zjednodušeně řečeno, máte detailní kontrolu nad vaší pracovní zátěží. Pokud byste chtěli přesunout své aplikace na výkonnější platformu, K8s se neomezuje pouze na jednoho dodavatele, jako je ECS.
  • Vysoká dostupnost – jak již bylo zmíněno, návrh K8s je zaměřen na zajištění dostupnosti aplikací a jejich infrastruktury, což je klíčové pro kontejnery v produkčním prostředí. Vysoká dostupnost se zajišťuje několika technikami:
    • Kontrola stavu a samoléčení – Kubernetes chrání aplikace před selháním pomocí pravidelných kontrol uzlů. Pokud dojde k selhání podu nebo kontejneru v důsledku chyby, K8s automaticky zajistí jeho náhradu.
    • Vyrovnávání zátěže a směrování provozu – K8s posílá požadavky jen do příslušných kontejnerů. S vyrovnáváním zátěže K8s rozděluje zatížení mezi jednotlivé pody, čímž vyrovnává zdroje v případě výpadků, náhlých nárůstů provozu nebo dávkového zpracování. Můžete také použít externí load balancery.
  • Škálovatelnost pracovní zátěže – i když už jsme to zmínili, pojďme se na to podívat podrobněji. K8s využívá zdroje k poskytnutí efektivního škálování na základě následujících kritérií:
    • Automatické škálování – tato funkce umožňuje automaticky upravit počet spuštěných kontejnerů podle využití CPU a dalších metrik.
    • Ruční škálování – pomocí této funkce můžete škálovat počet spuštěných kontejnerů prostřednictvím příkazové řádky nebo rozhraní.
    • Řadič replikace – tento nástroj vám umožňuje určit počet podů, které odpovídají specifikaci vašeho clusteru. Pokud je jich málo, spustí se nové, a pokud je jich příliš mnoho, ukončí se přebytečné.
  • Navrženo pro nasazení – K8s je speciálně navržen tak, aby urychlil proces vytváření, testování a odesílání softwaru. Zde jsou některé z nabízených funkcí:
    • Automatizovaný rollback a zavádění – při vývoji možná budete chtít zavést nové konfigurace nebo aktualizace aplikací. K8s vám umožňuje provést tento proces bez výpadku aplikace. V případě poruchy se K8s automaticky vrátí k předchozí verzi.
    • Canary nasazení – tuto funkci můžete využít k testování nových nasazení v produkci paralelně s předchozí verzí. K8s vám umožňuje zmenšit poslední verzi aplikace a současně zvětšit tu nejnovější.
    • Podpora různých programovacích jazyků a frameworků – ať už používáte Go, Java nebo .NET, Kubernetes podporuje mnoho vývojových jazyků a frameworků. Pokud aplikace může běžet v kontejneru, může běžet i na K8s.
  • Objevování služeb – každý vývojář chce mít jistotu, že všechny služby spolu mohou komunikovat. Nicméně provozní model K8s zahrnuje nepřetržité vytváření a rušení kontejnerů, což znamená, že některé služby nemusí být na konkrétních místech dostupné. V tradičním vývoji by se registr služeb upravoval tak, aby sledoval umístění těchto služeb. K8s řeší tento problém prostřednictvím konceptu služeb, které seskupují pody a umožňují bezproblémové vyhledávání služeb. K8s tedy poskytuje IP adresy pro všechny pody, přiděluje DNS názvy pro každou skupinu podů a pak vyrovnává zátěžový provoz mezi těmito pody. Tato architektura vytváří prostředí, kde je objevování služeb abstrahováno od každého kontejneru.
  • Živá komunita – K8s podporuje živá komunita s tisíci vývojářů, kteří ho používají. V době psaní tohoto článku používá K8s více než 100 milionů vývojářů, kteří přispívají ke 330 milionům projektů. Komunita se stále rozrůstá a podporuje spolupráci mezi vývojáři.

Omezení Kubernetes

  • Strmá křivka učení – abyste mohli začít s Kubernetes, musíte porozumět jeho prostředí. Navíc k dodání komplexního řešení je potřeba zahrnout různé technologie a služby. A protože se tyto doplňkové technologie výrazně liší (některá řešení pocházejí z doby UNIXu, zatímco jiná jsou moderní s nízkou mírou adopce), může být složité se v nich orientovat. Musíte také pochopit, jak všechny komponenty do sebe zapadají, abyste vytvořili komplexnější řešení pro dané problémy. Dokumentace je sice k dispozici, ale musíte pochopit, jak tyto služby poskytovat a spravovat.
  • Rozlišení funkcí a projektů – pochopení rozdílů mezi projekty a funkcemi může být náročné. I když snadno najdete rady ohledně řízení projektů, nemusí být hned jasné, jaký je rozdíl mezi funkcemi a komunitními projekty.
  • Znalosti nad rámec Kubernetes – Kubernetes je sofistikovaná platforma. S veškerou touto složitostí se pravděpodobně setkáte s určitým zmatkem, zvláště pokud s ní začínáte. Organizace však stále chtějí poskytovat řešení (například úložiště dat jako službu), což ještě zvyšuje strmost křivky učení. Pokud takové služby používáte, musíte rozšířit své znalosti i mimo samotný Kubernetes.
  • Správa Kubernetes je obtížná – dostat se do produkce s K8s je jedna věc. Budete však muset zajistit všechny potřebné zdroje pro vaše aplikace, abyste je mohli spravovat. Budete také muset zvládnout veškeré zabezpečení a integrovat ho s vaší infrastrukturou. K efektivnímu provozu jeho nástrojů budete také potřebovat odborné znalosti na vysoké úrovni. Budete potřebovat hluboké znalosti pro správu Kubernetes clusterů, monitorování, řešení problémů a jejich podporu v rozsáhlém měřítku.

Porovnání ECS a Kubernetes

Zde je srovnání, které ukazuje hlavní rozdíly:

Klíčové rozdíly Kubernetes Amazon ECS
Definice aplikace Aplikace se nasazují kombinací podů, uzlů a služeb. Aplikace se nasazují jako úlohy, které jsou instance kontejnerů – například Docker kontejnery běžící na instancích ECS.
Nasazení Komplexní, protože clustery se musí nasazovat a konfigurovat ručně. Snadné nasazení pomocí konzole AWS.
Podpora uzlů (počet strojů) 5000 uzlů na cluster. 1000 uzlů na cluster.
Kontejnery Až 300 000 kontejnerů na cluster. Omezeno využitou kapacitou infrastruktury.
Vyrovnávání zátěže Pody jsou zpřístupněny pomocí služeb, které se používají jako vyrovnávače zátěže za řídicími jednotkami vstupu. K dispozici jsou dva vyrovnávače zátěže: ELB-Application nebo Network.
Cena Zdarma. ECS je zdarma, ale platíte za zdroje EC2.
Optimalizace Dobře optimalizováno pro jeden velký cluster. Předkonfigurováno s požadavky na zdroje pro kontejnery.
Automatické škálování Parametry automatického škálování se definují při vytváření nasazení. Používají se monitorovací služby, jako CloudWatch, k automatickému škálování na základě CPU, paměti a vlastních parametrů.
Kontrola stavu K dispozici jsou dvě kontroly stavu: připravenost a živost. Provádí se pomocí monitorovacích služeb, jako je CloudWatch.
Objevování služeb Provádí se pomocí proměnných prostředí nebo DNS. Provádí se pomocí monitorovacích služeb – CloudWatch.
Závislost na dodavateli Ne. Ano.

Případy použití ECS a Kubernetes

Zde je několik příkladů, jak technologie kontejnerizace ECS a Kubernetes transformují různá odvětví:

ECS INC International zdůrazňuje četné případy použití technologie ECS. V moderních lékařských zařízeních nacházíme revoluční metody léčby a podávání léků. Existuje mnoho nástrojů, jako jsou elektronické inhalátory, lékařské autoinjektory a infuzní pumpy.

V oblasti IoT máme zařízení pro chytrou domácnost. V automobilovém průmyslu pak máme chytrá elektrická auta s lepším zážitkem z jízdy a vylepšenými bezpečnostními systémy, jako jsou asistované brzdové systémy.

A to je jen špička ledovce. Můžeme se podívat na další aplikace ECS, které nejsou omezeny pouze na bezdrátové technologie, nositelná zařízení a průmyslové aplikace.

Kubernetes má také své významné aplikace. Například IBM cloud nabízí soukromé, veřejné i hybridní funkce v širokém spektru běhových prostředí.

Spotify, hudební streamovací gigant, využívá technologii Kubernetes pro zajištění bezproblémových operací, a to až 10 milionů požadavků za sekundu. K8s nabízí více možností v architektuře mikroslužeb, nativních cloudových síťových funkcích, strojovém učení a v životním cyklu vývoje softwaru.

Závěrečná slova

Po přečtení tohoto průvodce byste měli mít solidní přehled o výhodách a nevýhodách výběru ECS nebo K8s. Klíč k správné volbě se odvíjí od několika faktorů. Budete muset zvážit náklady, omezení služeb a nároky na kvalifikaci pracovníků.

Pokud hledáte bezplatnou službu, K8s je jasná volba. Budete však potřebovat zkušené odborníky, kteří zvládnou složitost s tím spojenou. I když K8s není vázán na žádného dodavatele, budete muset důkladně pochopit, jak platforma funguje. Na druhou stranu ECS nabízí rychlejší konfiguraci.

Podívejte se také na podrobnější porovnání Kubernetes vs. Docker.

Tomáš Dvořák
Autor
Czechia

Píše o bezpečnosti, webu a chytrých službách s důrazem na srozumitelnost.

Předchozí článek
Inteligentní automatizace procesů (IPA): Proč je důležitá?
Další článek
11 nejlepších routerů VPN, které se rozloučí👋 s online omezeními