Na lepšiu verziu ITShare.sk sa môžete tešiť už čoskoro. Pracujeme na nej.Tím Veracomp Slovakia

Ako kontajnery a Kubernetes urýchľujú mikroslužby

| ,

Kontajnery a Kubernetes sú dva síce súvisiace, ale odlišné stavebné bloky, ktoré pomáhajú znovu zadefinovať spôsob, akým staviame a prevádzkujeme aplikácie, zvyšujúc pritom efektívnosť podnikových IT systémov.

Dobré veci prichádzajú v malých baleniach

Kto by nerád otváral narodeninové darčeky? Tento pekne zabalený balíček môže obsahovať presne to, čo ste čakali. Podobne sú na tom aj softvérové ​​aplikácie, aj tie sú dodávané v balíkoch – či už ide o hru ako Roblox, aplikáciu online bankovníctva alebo systém ľudských zdrojov.

Softvérové ​​balíčky tradične obsahujú všetok kód potrebný na spustenie aplikácie v konkrétnom operačnom systéme, ako je Windows alebo Linux. Avšak na spustenie aplikácie potrebujete viac ako kód aplikácie. Potrebujete aj ďalšie aplikácie. Napríklad aplikácia na zisťovanie cien akcií môže pomocou knižnice konvertovať názvy spoločností na burzové symboly (ticker symboly) a naopak. Táto funkcionalita je všeobecná a sama nemá pridanú hodnotu, naďalej je však dôležité umožniť používateľovi napísať „Apple“, aby získal burzový symbol „AAPL“. Knižnica je príkladom závislostí. Bez toho, aby o tom IT vedelo, každá aplikácia môže zahŕňať stovky týchto typov závislostí.

Jedným z hlavných dôvodov, prečo sa kontajnery stali tak populárnymi, je fakt, že poskytli mechanizmus a formát na zabalenie kódu aplikácie – s jeho závislosťami – spôsobom, ktorý uľahčil spustenie aplikácie v rôznych prostrediach. To by mohlo znieť dosť nezaujímavo vzhľadom na všetok ten rozruch okolo kontajnerov, ale vyriešilo to veľký problém pre vývojárov, ktorí neustále bojovali s problémami kompatibility prostredia medzi svojimi vývojovými laptopmi, testovacími prostrediami a produkciou. Práve vďaka použitiu kontajnerov na zabalenie svojich aplikácií mohli „kódovať raz a spustiť to kdekoľvek“, čo dramaticky urýchlilo doručovanie aplikácií.

Zložitosť správy viacerých kontajnerov

Nakoľko moderné aplikácie pozostávajú z viacerých mikroslužieb, často sa tiež skladajú z viacerých kontajnerov. Vďaka tomu je ľahké spustiť celé aplikácie vo viacerých prostrediach, ale tiež tu vzniká otázka: „Ako môžem sledovať a spravovať všetky tieto kontajnery?“

Takmer okamžite, ako sa Docker stal populárnym, sa softvéroví inžinieri a spoločnosti, pre ktoré pracovali, snažili prísť na to, ako „speňažiť“ kontajnery. Koniec koncov, vývojári zvyčajne nemajú veľké rozpočty, s ktorými by mohli pracovať. Správa – alebo orchestrácia – všetkých týchto kontajnerov sa však na začiatku považovala za nevyhnutné a lukratívne rozšírenie kontajnerovej revolúcie. V júni 2014 spoločnosť Google vydala Kubernetes ako projekt s otvoreným zdrojovým kódom a ten sa radil k jedným z prvých, ktorý dokázal prijať výzvy v oblasti správy kontajnerov.

Napríklad na spustenie vysoko dostupnej aplikácie v kontajneri musíte maťv každom danom čase vždy spustený určitý počet kontajnerov, najmä ak zlyhajú servery. Z dôvodu veľkého počtu súčasne prevádzkovaných kontajnerov je potrebné ich plne automatizovať bez nutnosti zásahu človeka. DevOps inžinier by mal byť schopný deklarovať požadovaný stav svojej aplikácie (napr. koľko CPU alebo RAM a koľko replík), a ak sa skutočný stav aplikácie líši od požadovaného stavu, program Kubernetes ho opraví. Táto oprava môže zahŕňať reštartovanie zastavených kontajnerov alebo ich odstránenie z jedného hostiteľa a ich spustenie na inom, ktorý má viac dostupných zdrojov. Tento deklaratívny prístup k operáciám s aplikáciami je ľahko pochopiteľný, (relatívne) ľahko implementovateľný a masívne škálovateľný. Vo výsledku nie je prekvapujúce, že adopcia Kubernetes je tak vysoko v kurze.

Anatómia Kubernetes aplikácií

Rovnako ako mikroslužby, ktoré ich obsahujú, sa aj Kubernetes aplikácie skladajú z niekoľkých komponentov. Tu sú niektoré z najdôležitejších komponentov:

  • Obraz kontajnera: Toto je kód aplikácie a závislosti potrebný na spustenie kontajnera zabaleného v štandardnom formáte (Docker alebo OCI). Obraz kontajnera je nemenný, čo znamená, že je vždy rovnaký bez ohľadu na to, v akom prostredí beží. Zmeny stavu, napríklad zápis do databázy, sa neukladajú v kontajneri, ale skôr v dátovom zväzku pripojenom ku​ kontajneru (viac o dátových zväzkoch nižšie).
  • Pod: Pod je jeden alebo viac kontajnerov, ktoré zdieľajú úložisko a sieťové zdroje a ktoré by mali vždy bežať spoločne na rovnakom hostiteľovi. Pod je základnou stavebnou jednotkou Kubernetes aplikácie. Zatiaľ čo väčšina podov má iba jeden kontajner, niektoré aplikácie vyžadujú aj pre základnú funkčnosť viac ako jeden kontajner – napríklad „jeden kontajner, ktorý verejnosti poskytuje dáta uložené v zdieľanom zväzku, zatiaľ čo iný samostatný kontajner  tieto súbory obnovuje alebo aktualizuje.“
  • Služba: Služba je logické zoskupenie podov, ktoré sú exponované ako sieťová služba. Aplikácia je koniec koncov na nič, pokiaľ k nej nemá nikto prístup.
  • Konfigurácia: Ako „ťažný kôň“ Kubernetes-u, konfigurácia (niekedy označovaná ako metadáta) má za úlohu definovať veci ako šablóny nasadenia a premenné prostredia potrebné na spustenie konkrétnej aplikácie zloženej z nemenných kontajnerov na rôznych miestach. Ľahko môžem, napríklad, spustiť kontajnerovanú aplikáciu v mojom dátovom centre alebo AWS, avšak iba ak môžem vystaviť webové rozhranie cez konkrétnu IP adresu, ktorá sa bude v jednotlivých prostrediach líšiť. Namiesto toho, aby ste túto premennú v aplikácii pevne kódovali a narušili tak nemennú povahu kontajnerov, môžete ju zahrnúť ako konfiguráciu. Tajomstvá, ako sú heslá a API kľúče, sú ďalším bežným príkladom konfigurácie.
  • Dátové zväzky: Dobrý kontajner sa nikdy nemení, ale dobrá aplikácia sa mení vždy! Prijíma e-commerce objednávky alebo zobrazuje najnovšiu hru alebo film. Aplikácie, ktoré zhromažďujú a zobrazujú údaje, sa nazývajú stavové aplikácie. Aby však zostala konzistentná s nemennosťou kontajnerov, dáta aplikácie sa neukladajú do samotného kontajnera, ale skôr na zväzok (alebo do systému na ukladanie objektov ako S3 alebo Pure Storage® FlashBlade®). Keď ľudia hovorovo odkazujú na stavové kontajnery, majú vlastne na mysli kombináciu kontajnera a dátového zväzku.
ZDROJ: Pure Storage

Zisk prinášajú aplikácie, nie infraštruktúra

Virtualizačná revolúcia bola o zefektívnení infraštruktúry. Bolo zbytočné spúšťať iba jednu aplikáciu na server (fyzický server). A tak prišiel na scénu VMware a umožnil spustenie viacerých aplikácií na serveri, čo viedlo ku konsolidácii dátového centra a úspore nákladov. Cloud to posunul ďalej a umožnil podnikom prenajať si kapacitu infraštruktúry namiesto toho, aby si ich museli kupovať. Kontajnery túto účinnosť ďalej rozširujú, ale to nie je hodnota. Kontajnery a Kubernetes sú v skutočnosti o znovu-zadefinovaní spôsobu, akým zostavujeme a spúšťame aplikácie.

Bez ohľadu na to, aká efektívna je vaša infraštruktúra, nachádzate sa stále len v polovici maratónu. Uviesť aplikácie do chodu znamená generovanie príjmov a získanie náskoku pred konkurenciou. Tímy zamerané na prevádzku infraštruktúry si kladú otázku: „Aký je najlepší spôsob riadenia tohto stroja?“ Na druhej strane sa tímy so zameraním na aplikácie pýtajú: „Aký je najlepší spôsob riadenia tejto aktivity generujúcej hodnotu?“ Takáto správa je čoraz viac poháňaná samoobslužnou skúsenosťou, ktorá sa výrazne líši od tradičnej infraštruktúry spravovanej prostredníctvom dotazov na servisné centrum.