Programování

4 důvody, proč byste měli použít Kubernetes

Sirish Raghuram je spoluzakladatel a generální ředitel společnosti Platform9 Systems.

Jak může potvrdit většina moderních vývojářů softwaru, kontejnery nám poskytly dramaticky větší flexibilitu pro spouštění nativních cloudových aplikací na fyzické a virtuální infrastruktuře. Kontejnery zabalí služby zahrnující aplikaci a zpřístupní je v různých výpočetních prostředích pro vývojové i testovací i produkční použití. U kontejnerů je snadné rychle zintenzivnit instance aplikace, aby odpovídaly špičkám v poptávce. A protože kontejnery čerpají ze zdrojů hostitelského OS, mají mnohem nižší váhu než virtuální stroje. To znamená, že kontejnery vysoce efektivně využívají základní infrastrukturu serveru.

Zatím je vše dobré. I když jsou rozhraní API modulu runtime kontejneru vhodná ke správě jednotlivých kontejnerů, jsou žalostně nedostatečná, pokud jde o správu aplikací, které mohou zahrnovat stovky kontejnerů rozložených na více hostitelů. Kontejnery je třeba spravovat a připojit k vnějšímu světu pro úkoly, jako je plánování, vyvažování zátěže a distribuce, a to je místo, kde nástroj pro orchestraci kontejnerů, jako je Kubernetes, přijde na své.

Systém s otevřeným zdrojovým kódem pro nasazení, škálování a správu kontejnerových aplikací, Kubernetes zpracovává práci plánování kontejnerů na výpočetním klastru a spravuje pracovní zátěže, aby zajistil jejich běh tak, jak to zamýšlel uživatel. Kubernetes místo toho, aby se přihlásil k operacím jako dodatečný nápad, spojuje vývoj softwaru a operace podle návrhu. Pomocí deklarativních, infrastrukturně-agnostických konstrukcí k popisu, jak se aplikace skládají, jak interagují a jak jsou spravovány, umožňuje Kubernetes řádově zvýšit operabilitu moderních softwarových systémů.

Kubernetes byl postaven společností Google na základě vlastních zkušeností s provozováním kontejnerů ve výrobě a za svůj úspěch určitě vděčí zapojení společnosti Google. Google má jedny z nejtalentovanějších vývojářů softwaru na planetě a provozuje jedny z největších softwarových služeb podle rozsahu. Tato kombinace zajistila, že se Kubernetes stane skálopevnou platformou, která dokáže uspokojit potřeby škálování prakticky jakékoli organizace. Tento článek vysvětluje, proč je Kubernetes důležitý a proč představuje významný krok vpřed pro týmy devops.

Související video: Co je Kubernetes?

V tomto 90sekundovém videu se dozvíte o Kubernetes, otevřeném systému pro automatizaci kontejnerových aplikací, od jednoho z vynálezců této technologie, Joe Beda, zakladatel a CTO ve společnosti Heptio.

Rámec infrastruktury pro dnešek

V dnešní době se vývojáři vyzývají k psaní aplikací, které běží napříč různými operačními prostředími, včetně dedikovaných serverů on-prem, virtualizovaných privátních cloudů a veřejných cloudů, jako jsou AWS a Azure. Aplikace a nástroje, které je podporují, byly tradičně úzce svázány se základní infrastrukturou, takže použití jejich dalších modelů nasazení bylo navzdory jejich potenciálním výhodám nákladné. To znamenalo, že aplikace se staly závislými na konkrétním prostředí v několika ohledech, včetně problémů s výkonem souvisejících s konkrétní síťovou architekturou; dodržování konstrukcí specifických pro poskytovatele cloudu, jako jsou například vlastní orchestrační techniky; a závislosti na konkrétním back-end úložném systému.

PaaS se snaží tyto problémy obejít, ale často za cenu zavedení přísných požadavků v oblastech, jako jsou programovací jazyky a aplikační rámce. PaaS je tedy pro mnoho vývojových týmů omezený.

Kubernetes eliminuje zablokování infrastruktury tím, že poskytuje základní funkce pro kontejnery bez zavedení omezení. Dosahuje toho kombinací funkcí v rámci platformy Kubernetes, včetně modulů Pods a Services.

Lepší správa díky modularitě

Kontejnery umožňují rozložení aplikací na menší části s jasným oddělením obav. Abstrakční vrstva poskytovaná pro jednotlivý obraz kontejneru nám umožňuje zásadně přehodnotit, jak jsou distribuované aplikace vytvářeny. Tento modulární přístup umožňuje rychlejší vývoj menších a více zaměřených týmů, které jsou každý odpovědné za konkrétní kontejnery. Umožňuje nám také izolovat závislosti a širší využívání dobře vyladěných menších komponent.

Toho však nelze dosáhnout samotnými kontejnery; vyžaduje systém pro integraci a orchestraci těchto modulárních částí. Kubernetes toho dosahuje částečně pomocí Pods - obvykle kolekce kontejnerů, které jsou řízeny jako jedna aplikace. Kontejnery sdílejí prostředky, jako jsou souborové systémy, jmenné prostory jádra a IP adresa. Tím, že umožníte, aby se kontejnery umístily tímto způsobem, odstraní Kubernetes pokušení nacpat příliš mnoho funkcí do jednoho image kontejneru.

Koncept služby v Kubernetes se používá ke seskupení kolekce Podů, které plní podobnou funkci. Služby lze snadno konfigurovat pro zjistitelnost, pozorovatelnost, horizontální škálování a vyrovnávání zatížení.

Nasazení a aktualizace softwaru ve velkém

Devops se ukázal jako metoda k urychlení procesu budování, testování a vydávání softwaru. Jejím důsledkem byl posun v důrazu od správy infrastruktury k řízení způsobu, jakým je software nasazen a aktualizován ve velkém. Většina infrastrukturních rámců tento model nepodporuje, ale Kubernetes ano, částečně prostřednictvím řadičů Kubernetes. Díky řadičům je snadné používat infrastrukturu pro správu životního cyklu aplikace.

Řadič implementace zjednodušuje řadu složitých úkolů správy. Například:

  • Škálovatelnost. Software lze nasadit poprvé škálovatelným způsobem v rámci Pods a nasazení lze kdykoli škálovat dovnitř nebo ven.
  • Viditelnost. Identifikujte dokončená, probíhající a selhávající nasazení pomocí funkcí dotazování na stav.
  • Úspora času. Nasazení můžete kdykoli pozastavit a obnovit později.
  • Řízení verzí. Aktualizujte nasazené moduly Pod pomocí novějších verzí obrazů aplikací a vraťte se zpět k dřívějšímu nasazení, pokud aktuální verze není stabilní.

Kubernetes mimo jiné zjednodušuje několik konkrétních operací nasazení, které jsou zvláště cenné pro vývojáře moderních aplikací. Patří mezi ně následující:

  • Horizontální automatické škálování. Automatické škálovače Kubernetes automaticky dimenzují počet nasazení podů na základě využití zadaných zdrojů (v rámci stanovených limitů).
  • Postupné aktualizace. Aktualizace nasazení Kubernetes jsou organizovány „průběžným způsobem“ napříč kapslemi nasazení. Tyto postupné aktualizace jsou organizovány při práci s volitelnými předdefinovanými limity počtu Podů, které mohou být nedostupné, a počtu náhradních Podů, které mohou dočasně existovat.
  • Kanárské nasazení. Užitečným vzorem při nasazování nové verze nasazení je nejprve otestovat nové nasazení ve výrobě, paralelně s předchozí verzí, a škálovat nové nasazení a současně zmenšit předchozí nasazení.

Na rozdíl od tradičních all-inclusive nabídek PaaS poskytuje Kubernetes širokou šířku pro podporované typy aplikací. Nediktuje aplikační rámce (například Wildfly), omezuje podporované jazykové moduly runtime (Java, Python, Ruby), obstarává pouze 12faktorové aplikace ani nerozlišuje „aplikace“ od „služeb“. Kubernetes podporuje širokou škálu úloh, včetně úloh bez státní příslušnosti, stavů a ​​zpracování dat. Pokud aplikace může běžet v kontejneru, měla by dobře fungovat na Kubernetes.

Položení základu pro nativní cloudové aplikace

Nepřekvapuje to vzhledem k zájmu o kontejnery, objevily se další nástroje pro správu a orchestraci. Mezi oblíbené alternativy patří Apache Mesos s Marathonem, Docker Swarm, AWS EC2 Container Service (ECS) a HashiCorp’s Nomad.

Každý má své přednosti. Docker Swarm je pevně svázán s runtime Docker, takže uživatelé mohou snadno přecházet z Docker do Swarm; Mesos s Marathonem se neomezuje pouze na kontejnery, ale může nasadit jakýkoli druh aplikace; AWS ECS je pro stávající uživatele AWS snadnější. Klastry Kubernetes však mohou běžet na EC2 a integrovat se službami, jako je Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups a tak dále.

Tyto rámce se začínají navzájem duplikovat ve funkcích a funkcích, ale Kubernetes zůstává nesmírně populární díky své architektuře, inovaci a velké komunitě otevřených zdrojů kolem něj.

Kubernetes představuje průlom pro devops, protože umožňuje týmům držet krok s požadavky moderního vývoje softwaru. Při absenci Kubernetes byly týmy často nuceny skriptovat vlastní nasazení softwaru, škálování a aktualizovat pracovní postupy. Některé organizace zaměstnávají velké týmy, aby tyto úkoly zvládly samy. Kubernetes nám umožňuje odvodit maximální užitečnost z kontejnerů a vytvářet cloudové nativní aplikace, které lze spustit kdekoli, nezávisle na konkrétních požadavcích na cloud. Toto je jednoznačně efektivní model pro vývoj a provoz aplikací, na který jsme čekali.

Nové technologické fórum poskytuje místo, kde můžete prozkoumat a diskutovat o nově vznikajících podnikových technologiích v nebývalé hloubce a šíři. Výběr je subjektivní, založený na našem výběru technologií, které považujeme za důležité a pro čtenáře nejzajímavější. nepřijímá marketingové materiály ke zveřejnění a vyhrazuje si právo upravovat veškerý přispěný obsah. Všechny dotazy zasílejte na [email protected]