GNU/Linux >> Znalost Linux >  >> Linux

Ansible vs Kubernetes:Pochopení rozdílů

Úvod

S tím, jak se webové aplikace stávají většími a složitějšími, roste potřeba automatizovaného vývoje softwaru, poskytování infrastruktury a údržby.

Od nástrojů, které pomáhají s opakujícími se úkoly (jako je nasazování a aktualizace aplikací na cloudových nativních serverech) až po plnohodnotná řešení pro orchestraci kontejnerů, automatizace ve vývoji softwaru je různorodá a rychle se vyvíjející oblast.

Tento článek představuje výhody a nevýhody dvou oblíbených automatizačních nástrojů – Ansible a Kubernetes. Kromě toho obsahuje případy použití pro každou platformu a navrhuje, jak je můžete používat společně.

Ansible vs Kubernetes:Definice

Ansible i Kubernetes jsou automatizační nástroje, ale v životním cyklu vývoje softwaru slouží různým účelům.

Ansible

Ansible je automatizační stroj, který automatizuje nasazování aplikací, zřizování cloudu a orchestraci v rámci služby. Navíc pomáhá se správou konfigurace. Jedná se o deklarativní systém, který používá Ansible Playbooks založené na YAML, které využívají přímočarý jazyk k popisu úloh automatizace.

Nástroje podobné Ansible jsou Jenkins, Puppet, Terraform Chef, Rudder atd.

Kubernetes

Kubernetes je platforma pro orchestraci pro automatizaci nasazení, správy a škálování kontejnerových aplikací. Jeho primární funkcí je správa clusteru. Řídí také plánování, provádění a správu obrazů Docker na serveru. Je kompatibilní s mnoha kontejnerovými nástroji a poskytuje jednotné rozhraní API schopné spravovat složité systémy rozmístěné na více serverech a platformách.

Chcete-li prozkoumat nástroje podobné Kubernetes, podívejte se na náš článek o nejlepších nástrojích pro organizaci kontejnerů.

Jak fungují

Ansible

Ansible funguje tak, že posílá moduly Ansible (samostatné skripty obsažené v příručkách Ansible) do uzlů. Moduly jsou navrženy tak, aby popisovaly požadovaný stav celého systému včetně základní infrastruktury. Jsou prováděny přes SSH a odstraněny, jakmile systém dosáhne požadovaného stavu.

Ansible nevyžaduje servery, databáze ani démony. Ke správě a monitorování vzdálených serverů používá jeden „řídící uzel“. Moduly mohou být umístěny na libovolném serveru v systému. K výpisu spravovaných počítačů ve skupinách se používá jednoduchý INI soubor. Níže je uveden příklad obsahu jednoho takového souboru:

[webservers]
www1.test.com
www2.test.com

[dbservers]
db0.test.com
db1.test.com
db2.test.com

S Ansible je možné přidávat a odebírat stroje z nástrojů pro vyrovnávání zatížení a monitorovacích oken, dynamicky vytvářet konfigurační soubory a centralizovat správu a nasazení konfigurace.

Kubernetes

Kubernetes funguje tak, že přijímá vstup od uživatele prostřednictvím souborů manifestu. Tyto soubory obsahují obecný popis požadovaného stavu clusteru. Uživatelé komunikují s Kubernetes prostřednictvím kubectl, výchozího rozhraní příkazového řádku. Kubectl zase předá pokyny serveru Kubernetes API.

Účelem serveru API je automaticky spravovat kontejnery podle deklarace poskytnuté v souboru manifestu. Zajišťuje, že aktuální stav clusteru a požadovaný stav jsou vždy stejné.

Clustery Kubernetes se skládají z následujících komponent:

  • Pods - Skupiny kontejnerů na stejném uzlu, které jsou nakonfigurovány pro spolupráci. Pody jsou nejmenší jednotkou nasazení v Kubernetes.
  • Štítky - Páry klíč/hodnota přiřazené objektům pro identifikaci.
  • Služby - Pod skupiny fungující pod stejným názvem a vykonávající stejnou funkci. Služby lze použít jako nástroje pro vyrovnávání zatížení, které řídí distribuci provozu.
  • Řadiče replikace – Rámce zajišťující, že je naplánován a spuštěn správný počet replik podů v daný čas.

Ansible:Klady a zápory

Výhody

  • Jednoduché - Ansible se snadno nastavuje a učí, protože obsahuje komplexní a dobře organizovanou dokumentaci. V Ansible je také snadné odstraňovat chyby, protože spouští úlohy sekvenčně a zastaví se, když dojde k chybě.
  • Bez agenta - Veškerá komunikace týkající se správy uzlů v Ansible probíhá přes SSH nebo modul Paramiko (implementace SSH2). V praxi to znamená, že Ansible nevyžaduje žádné vzdálené serverové agenty, což zlepšuje výkon a zabezpečení nástroje.
  • Na základě YAML – Ansible playbooky jsou v podstatě soubory YAML, které se snadno čtou a jsou vývojářům dobře známé.
  • Schopné a efektivní - Nástroj je schopen zvládnout složité pracovní postupy.
  • Flexibilní - Mnoho užitečných modulů umožňuje snadné přizpůsobení Ansible.
  • Navrženo v Pythonu - Knihovny Pythonu jsou součástí většiny distribucí Linuxu. Proto se vývojáři při práci s ním často cítí jako doma.
  • Zdarma - Ansible je open-source řešení nabízené zdarma.

Nevýhody

  • Nevyvinuté grafické uživatelské rozhraní - Ansible byl vytvořen jako nástroj příkazového řádku. Pozdější pokusy o implementaci GUI (jako AWX a později Ansible Tower) nedokázaly přenést všechny funkce CLI. GUI může také vypadnout synchronizaci s CLI, což má za následek nekonzistentní dotazy.
  • Bez státní příslušnosti - Na rozdíl od Terraform nebo Puppet je Ansible bezstavový systém a nesleduje závislosti. To může představovat problém ve scénářích, kde se mění prostředí.
  • Špatná podpora systému Windows - Ansible pro Windows je ve vývoji. V současné době můžete spustit Ansible na Windows, ale pro ovládání hostitelů Windows jsou stále nutné počítače se systémem Linux.
  • Nedostatek podpory komunity - Ansible je na trhu relativně nový a má menší komunitu uživatelů než jeho konkurenti.

Kubernetes:Klady a zápory

Výhody

  • Vysoce škálovatelné a efektivní - Schopnost přizpůsobit se okolnostem je to, co dělá Kubernetes nástrojem extrémně šetrným ke zdrojům. Umožňuje horizontální škálování přidáním nebo odebráním kontejnerů pro podporu zvýšené nebo snížené pracovní zátěže.
  • Povoluje kontejnerovou komunikaci - Platforma poskytuje rámec pro komunikaci kontejnerů a zajišťuje, že jsou vždy správně synchronizovány.
  • Odstraňuje uzamčení infrastruktury - S Kubernetes se organizace nemusí obávat důsledků používání více produkčních a vývojových prostředí. To je užitečné zejména v hybridních a multicloudových scénářích.
  • Deklarativní konfigurace - Umožňuje uživatelům deklarovat požadovaný stav systému a poté zajišťuje, že je tento stav zachován. Ve srovnání s imperativní konfigurací je tento přístup mnohem méně náchylný k chybám.
  • Neměnný – Díky možnosti vrátit změny je vytváření a nasazení nových bitových kopií kontejnerů snadné a bezpečné.
  • Sebeléčení - Kubernetes automatizuje proces monitorování replik a zavádí nové v případě selhání.
  • Zdarma - Je to projekt s otevřeným zdrojovým kódem, který je k dispozici zdarma.

Nevýhody

  • Strmá křivka učení - Kubernetes je komplexní systém, který využívá mnoho nových technologií.
  • Složitost - Zatímco aplikace s mnoha distribuovanými uživateli jistě těží z Kubernetes, použití nástroje pro jednodušší nasazení může snížit produktivitu.
  • Přechod na Kubernetes může být obtížný - Zavedení do vaší organizace vyžaduje vyškolený personál a přizpůsobení pracovního postupu.

Jak vybrat

Vzhledem k rozdílu v jejich funkcích si mezi těmito dvěma nástroji nemusíte vybírat. Spoléhat se na jeden automatizační nástroj může být v prostředí vývoje softwaru kontraproduktivní. Před zavedením automatizace do organizace musí být vytvořena širší strategie automatizace.

Kubernetes není navržen pro správu celého životního cyklu aplikace. Ansible je dobrá volba pro správu serverů a aplikací uvnitř Kubernetes, stejně jako externí integrace.

Při společném použití se Kubernetes a Ansible vzájemně doplňují v životním cyklu vývoje softwaru jako vysoce nákladově efektivní řešení. Zatímco Kubernetes se stará o stav a správu kontejnerů, Ansible nasazuje změny na hostitele, konfiguruje systémy, zajišťuje infrastrukturu a organizuje průběžné aktualizace a průběžné nasazení.

A konečně, Ansible je skvělé řešení pro automatizaci aktualizací a dalších postupů údržby samotného Kubernetes díky své snadno použitelné povaze a jednoduchému nastavení.


Linux
  1. Pochopení YAML pro Ansible

  2. PlayOnLinux vs Wine:Rozdíly

  3. Rozumíte výstupu „zásady apt-cache“?

  1. Rozumíte vykřičníku (!) v Bash?

  2. Fedora vs Ubuntu:Jaké jsou klíčové rozdíly?

  3. Jaký je účel koncového '-' v aplikaci Kubernetes -f -

  1. Cassandra vs MongoDB - Jaké jsou rozdíly?

  2. Terraform vs Kubernetes:Jaké jsou rozdíly

  3. Pochopení rc skriptů v Linuxu