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

Týmům informačních technologií (IT) se při provozu kontejnerových aplikací nabízí mnoho možností, které se týkají všech úrovní technické odbornosti.

Může být obtížné vybrat jednu, vzhledem k tomu, že poté, co si vyberete, pravděpodobně nebudete v dohledné době migrovat na jinou možnost.

Tento příspěvek porovnává dvě závažné možnosti: Amazon Elastic Container Service (ECS) a Kubernetes.

Obě jsou schopné platformy v doménách orchestrace kontejnerů a správy mikroslužeb. A těsně před dalším přesunem neuškodí osvěžovač na nádobách. Kontejnery byly popularizovány pro usnadnění vývoje kódu, propagaci a nasazení v mnoha prostředích. Jsou to abstrakce v aplikačních vrstvách, obalující kód s nezbytnými závislostmi, knihovny a nastavení prostředí do spustitelného balíčku.

Zatímco hlavním cílem používání kontejnerů je zjednodušit proces nasazení kódu, správa tisíců z nich je stále náročnější. K implementaci vysoce spolehlivých nasazení, škálování aplikací podle zatížení, výměně nezdravých kontejnerů za nové, vyvažování zátěže a odhalování portů je zapotřebí jiný mechanismus.

Zde přichází na pomoc kontejnerová orchestrace. Kromě toho jsou potřeba prostředky pro provoz kontejnerů a správu jejich celkové infrastruktury. K řešení tohoto problému je k dispozici mnoho nástrojů, ale zúžíme zaměření na několik.

Tento článek porovnává ECS a Kubernetes, zdůrazňuje výhody každého z nich a uzavírá směr, jak vybrat ten správný na základě vašeho projektu.

Co je Amazon ECS?

Amazon ECS je služba pro orchestraci kontejnerů, která zjednodušuje nasazování, správu a škálování kontejnerizovaných aplikací. V zásadě definujete svou aplikaci a její požadované zdroje. Poté Amazon ECS spustí, monitoruje a škáluje vaši aplikaci napříč výpočetními možnostmi a zároveň umožňuje integraci dalších potřebných služeb AWS. Můžete například zkontrolovat stav a upravit své clustery programově.

ECS vám umožňuje nasazovat vaše aplikace prostřednictvím skupiny serverů, nazývaných 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 byla spuštěna v roce 2015 a využívá technologii Amazon EC2 pro snadné spouštění kontejnerů Dockers v cloudu. Tradiční ECS vám poskytuje základní kontrolu nad možnostmi EC2, což umožňuje flexibilitu. Znamená to, že si vyberete typy instancí, které chcete na svém kontejneru spouštět. Model vás dále spojí s dalšími službami AWS, které můžete použít ke sledování a protokolování aktivity na instancích EC2.
  • Fargate ECS – Vydáno v roce 2017 ke spouštění kontejnerů bez nutnosti správy základních výpočetních možností EC2. Fargate používá jiný přístup, když počítá požadované CPU a paměť. Pokud chcete rychle zprovoznit pracovní zátěž, může to být vaše nejlepší volba, protože se nebudete muset starat o základní výpočetní možnosti.
  • Zjednodušené aplikační architektury – ECS je dobrou volbou pro aplikace s malým počtem mikroslužeb (s několika externími závislostmi nebo s několika pohyblivými částmi), které pracují nezávisle.
  • Snadné monitorování a protokolování – ECS můžete snadno integrovat s nástroji pro protokolování a monitorování AWS, jako je CloudWatch. Nemusíte konfigurovat viditelnost pro úlohy kontejneru, což vám ušetří čas.
  • Snadná křivka učení – ECS se snadno učí. Hostovaný Kubernetes získává větší popularitu než tradiční modely, jako jsou příchutě KOPS a Kubeadm.
  • Bezserverová infrastruktura – ECS umožňuje provozovat kontejnery bez nutnosti správy virtuálních strojů; rozmístí kontejnery bez zásahu člověka.
  • Vestavěné zabezpečení – Ve výchozím nastavení je Amazon ECS zabezpečený a bezpečnostní opatření kaskáduje prostřednictvím izolovaného síťového mechanismu Virtual Private Cloud.
  •   Opravte chybový kód Blizzard Battle.NET 2

    Omezení ECS

  • Omezené úložiště – Externí úložiště je omezeno výhradně na Amazon, až po Amazon EBS.
  • Omezení ověřování – ECS je produkt založený na Amazonu, a proto není dostupný pro veřejné nasazení mimo Amazon.
  • Vendor lock-in – ECS je neobjektivní; může spravovat pouze své vytvořené kontejnery.
  • Nedostupnost kódu ECS – Velká část kódu ECS není veřejně dostupná. Nástroje jako AWS Blox (rámec pro vytváření vlastních plánovačů) mají velmi malou část své kódové základny open-source.
  • Co je Kubernetes?

    Kubernetes, běžně nazývaný K8s, je open-source software pro automatizaci nasazení, škálování a správy kontejnerizovaných aplikací.

    S využitím 15 let zkušeností s provozováním produkčních úloh Google (kombinací nejlepších nápadů a komunitních postupů) K8s seskupuje vaše aplikační kontejnery do logických jednotek, které můžete snadno objevovat a spravovat.

    Kromě toho primární funkce K8s, jako je vyrovnávání zátěže, trvalé úložiště, automatizovaná vrácení pro kontejnerové aplikace, tajemství, samoléčení pro clustery Kubernetes 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 (bez uzamčení dodavatele) – Kubernetes můžete používat on-premise nebo v cloudu, aniž byste museli měnit architekturu orchestrační strategie. Na rozdíl od tradičního softwaru, který vyžaduje určité licenční poplatky, je K8s bezplatný a open source. Jako by to nestačilo, clustery K8 běží napříč veřejnými a privátními cloudy a poskytují virtualizační zdroje na obou entitách.
  • Vysoká flexibilita – K8s je skvělé řešení, pokud vaše aplikace vyžadují vysokou dostupnost a zároveň podporují efektivitu a škálovatelnost. Tato vlastnost je takticky užitečná v aplikacích generujících vysoké příjmy. Jednoduše řečeno, je to podrobná kontrola nad vaší pracovní zátěží. V případech, kdy byste chtěli přepnout své aplikace na výkonnější platformy, K8 se neomezuje pouze na dodavatele, jako je ECS.
  • Vysoká dostupnost – Jak již bylo zmíněno výše, design K8 je zaměřen na zajištění dostupnosti aplikací a jejich potřebné infrastruktury, což z něj činí nezbytnou funkci pro kontejnery ve výrobě. Při vysoké dostupnosti existuje několik technik:
    • Kontrola stavu a samoléčení – Kubernetes chrání vaše aplikace před selháním prostřednictvím pravidelných kontrol uzlů. Pokud dojde k rozdrcení pouzdra nebo nádoby v důsledku chyby, K8s automaticky využije náhradu.
    • Vyrovnávání zátěže a směrování provozu – Pokud jde o směrování provozu, K8 budou odesílat požadavky pouze do příslušných kontejnerů. A s vyrovnáváním zátěže K8s rozděluje zátěže mezi moduly, čímž vyvažuje vaše zdroje pro několik případů, jako jsou výpadky, náhodný špičkový provoz nebo dávkové zpracování. Opět můžete také použít externí load balancery, pokud chcete.
  • Škálovatelnost pracovní zátěže – I když již bylo zmíněno výše, pojďme si ji dále rozebrat. K8s využívá své zdroje k poskytování efektivního škálování podle 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 ukazatelů CPU.
    • Ruční škálování – Pomocí této funkce můžete škálovat počet spuštěných kontejnerů pomocí příkazového řádku nebo rozhraní.
    • Řadič replikace – Tento nástroj vám umožňuje určit počet modulů, které odpovídají specifikaci vašeho clusteru; pokud je jich málo, začne znovu, a pokud je jich příliš mnoho, ukončí je.
      Pouzdro na 10 Raspberry Pi, které udrží váš mini-počítač bezpečný a zdravý
  • Navrženo pro nasazení – K8s je speciálně navržen pro urychlení procesu vytváření, testování a odesílání softwaru. Zde jsou některé z nabízených funkcí:
    • Automatizované vrácení a zavádění – Možná budete chtít zavést některé nové konfigurace nebo aktualizace aplikací během vývoje. K8s vám umožňuje uzákonit proces bez výpadku aplikace. V případě poruchy se K8 roboticky vrátí k předchozí verzi.
    • Nasazení Canary – Tuto funkci můžete využít testováním 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 nejnovější verzi.
    • Různá podpora programovacích jazyků a frameworků – Ať už pocházíte z programovacích jazyků Go, Java nebo .Net, Kubernetes podporuje mnoho vývojových jazyků a frameworků. Pokud může aplikace běžet na kontejneru, běží na K8.
  • Objevování služeb – Každý vývojář si přeje, aby všechny poskytované služby měly způsob vzájemné komunikace. Operační model K8 však zahrnuje nepřetržité vytváření a ničení kontejnerů, takže některé služby v konkrétních lokalitách neexistují. V tradičním vývoji by byl registr služeb upraven tak, aby sledoval umístění těchto služeb. K8s řeší tento problém prostřednictvím nativního konceptu služeb pro seskupování modulů a bezproblémové vyhledávání služeb. K8s tedy poskytuje IP adresy pro všechny moduly, přiděluje názvy DNS pro každou sadu modulů a poté vyrovnává zátěžový provoz na každé sadě modulů. Tato architektura vytváří prostředí, kde je zjišťování služeb abstrahováno z každého kontejneru.
  • Živá komunita – K8s je podporován živou komunitou s tisíci vývojářů, kteří využívají její služby. V době psaní tohoto článku používá K8 k objevování více než 100 milionů vývojářů, kteří přispívají 330 miliony projektů. Komunita nevykazuje žádné známky zpomalení 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í. Kromě toho dodání komplexního řešení vyžaduje zahrnutí různých technologií a služeb. A vzhledem k tomu, že se doplňkové technologie výrazně liší (některá řešení pocházejí z doby, kdy dominoval UNIX, zatímco jiná jsou nové technologie s nízkou mírou přijetí), může být zjišťování, které z nich zahrnout, hektické. Budete také muset zjistit, jak do sebe všechny komponenty zapadají, abyste poskytli komplexnější řešení konkrétních problémů. Dokumentace je k dispozici, ale budete muset 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ž můžete snadno získat rady ohledně řízení projektů, možná nebudete mít jasný rozdíl mezi funkcemi a komunitními projekty.
  • Znalosti nad rámec Kubernetes – Kubernetes je sofistikovaná platforma. Při vší této složitosti při poskytování řešení se pravděpodobně setkáte s určitým zmatkem, zvláště pokud jste v něm nováčkem. Organizace však stále chtějí poskytovat řešení (jako jsou úložiště dat jako služba), která umocňují křivku učení. Pokud takové služby používáte na svém produktu, musíte rozšířit své znalosti i mimo Kubernetes.
  • Správa Kubernetes je obtížná – dostat se do produkce s K8s je jedna věc. Budete muset poskytnout všechny požadované zdroje pro vaše aplikace, abyste je mohli spravovat. Budete také muset zvládnout veškeré zabezpečení a integrovat je s vaší infrastrukturou. K efektivnímu zpracování a provozu jeho nástrojů budete také potřebovat určité odborné znalosti na vysoké úrovni. Budete potřebovat hluboké znalosti pro správu clusterů Kubernetes, monitorování a odstraňování problémů s clustery a jejich podporu ve velkém.
  •   Pochopení rozdílu mezi URL, URI a URN

    Porovnání ECS a Kubernetes

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

    Pointa rozdíluKubernetesAmazon ECSApplication definitionAplikace se nasazují kombinací modulů, uzlů a služeb. Nasazování aplikací má podobu úkolů. Úkoly jsou instance kontejnerů – například kontejnery Docker běžící na instancích ECS.DeploymentComplex, protože clustery musíte nasazovat a konfigurovat ručně.Snadné nasazení prostřednictvím konzole AWS.Podpora uzlů (počet strojů)5000 uzlů na cluster.1000 uzlů na cluster .KontejneryAž 300 000 kontejnerů na cluster.Omezeno využitou kapacitou infrastruktury.Vyrovnávání zátěžePodsy jsou vystaveny prostřednictvím služeb používaných 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.PricingFree.ECS jsou zdarma, ale za zdroje EC2 musíte platit.OptimalizaceDobře optimalizována pro jeden velký cluster.Předkonfigurována s požadavky a požadavky na kontejner.AutoscalingParametry automatického škálování definujete při vytváření nasazení.Používáte 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.Dosahováno prostřednictvím monitorovacích služeb, jako je CloudWatch.Objevování službyProváděno prostřednictvím proměnných prostředí nebo DNS.Dosaženo prostřednictvím monitorovacích služeb – CloudWatch.Vendor-lock vNe.Ano.

    Případy použití ECS a Kubernetes

    Zde je návod, jak technologie kontejnerizace ECS a Kubernetes revolucionizuje průmysl:

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

    V doméně IoT máme zařízení pro chytrou domácnost. Pokud přesunete pozornost na automobilový průmysl, máme chytrá elektrická auta s lepším zážitkem z jízdy a vylepšenými bezpečnostními opatřeními, jako jsou asistované brzdové systémy.

    To je zatím špička ledovce; můžete se podívat na další aplikace ECS, které nejsou omezeny na bezdrátovou technologii, nositelná zařízení a případy průmyslového použití.

    Na druhé straně má Kubernetes svůj podíl na praktických aplikacích. Za prvé, cloud IBM nabízí privátní, veřejné a hybridní funkce v širokém rozsahu běhových prostředí.

    Spotify, gigant v oblasti streamování hudby, využívá technologii Kubernetes k usnadnění bezproblémových operací, až 10 milionů požadavků za sekundu. I když se jedná o případy použití v reálném světě, K8 nabízí více funkcí v architektuře mikroslužeb, cloudových nativních síťových funkcích, strojovém učení a otáčení životního cyklu vývoje softwaru.

    Závěrečná slova

    Po prostudování tohoto průvodce máte solidní přehled o výhodách a nevýhodách volby ECS nebo K8. Klíč k výběru správné možnosti je založen na několika argumentech. Budete muset zvážit náklady, omezení služeb a náklady na talenty.

    Pokud chcete využívat bezplatnou službu, K8s bude vaší volbou číslo jedna. Budete však potřebovat solidní talent nebo dovednosti, abyste zvládli složitost, která s tím přichází. I když K8 nemá omezení na dodavatele, bude vyžadovat důkladné pochopení toho, jak platforma funguje. Na druhou stranu ECS dostalo rychlé konfigurace.

    Dále se podívejte na podrobnou příručku o Kubernetes vs. Docker.