Programovanie

Čo je Kubernetes? Vaša ďalšia aplikačná platforma

Kubernetes je populárna otvorená zdrojová platforma pre orchestrácia kontajnera - to znamená pre správu aplikácií vytvorených z viacerých tzv nádob. Kontajnery sú čoraz populárnejšie od spustenia kontajnerového projektu Docker v roku 2013, ale koordinácia veľkých a distribuovaných kontajnerových aplikácií môže byť čoraz zložitejšia. Vďaka dramatickému uľahčeniu správy kontajnerových aplikácií vo veľkom sa spoločnosť Kubernetes stala kľúčovou súčasťou revolúcie v kontajneroch.

Čo je orchestrácia kontajnera?

Kontajnery podporujú oddelenie záujmov podobné VM, ale s oveľa menšou réžiou a oveľa väčšou flexibilitou. Výsledkom bolo, že kontajnery pretvorili spôsob, akým ľudia premýšľajú o vývoji, nasadení a údržbe softvéru. V kontajnerovanej architektúre sú rôzne služby, ktoré tvoria aplikáciu, zabalené do samostatných kontajnerov a nasadené v klastri fyzických alebo virtuálnych strojov. Z toho však vyplýva potreba orchestrácia kontajnera—Nástroj, ktorý automatizuje nasadenie, správu, zmenu mierky, vytváranie sietí a dostupnosť aplikácií založených na kontajneroch.

Čo je Kubernetes?

Kubernetes je projekt otvoreného zdroja, ktorý sa stal jedným z najpopulárnejších nástrojov na orchestráciu kontajnerov v okolí; umožňuje vám nasadiť a spravovať aplikácie s viacerými kontajnermi vo veľkom rozsahu. Zatiaľ čo sa Kubernetes v praxi najčastejšie používa s Dockerom, najpopulárnejšou platformou pre kontajnerizáciu, môže pracovať aj s akýmkoľvek kontajnerovým systémom, ktorý vyhovuje štandardom Open Container Initiative (OCI) pre formáty a doby chodu kontajnera. A pretože Kubernetes je otvorený zdroj, s relatívne malými obmedzeniami v tom, ako sa dá použiť, môže ho voľne používať ktokoľvek, kto chce prevádzkovať kontajnery, najviac kdekoľvek, kde ich chce prevádzkovať - ​​lokálne, vo verejnom cloude alebo v oboch. .

Google a Kubernetes

Kubernetes začal život ako projekt v rámci spoločnosti Google. Je nástupcom - hoci nie priamym potomkom - Google Borg, predchádzajúceho nástroja na správu kontajnerov, ktorý Google používal interne. Google otvoril zdroj Kubernetes v roku 2014, čiastočne preto, že architektúry distribuovaných mikroslužieb, ktoré Kubernetes uľahčuje, uľahčujú spustenie aplikácií v cloude. Google považuje prijatie kontajnerov, mikroslužieb a Kubernetes za potenciálne privádzanie zákazníkov k svojim cloudovým službám (hoci Kubernetes určite pracuje aj s Azure a AWS). Kubernetes v súčasnosti spravuje nadácia Cloud Native Computing Foundation, ktorá je sama zastrešená nadáciou Linux Foundation.

Kubernetes vs. Docker a Kubernetes vs. Docker Swarm

Kubernetes nenahrádza Dockera, ale rozširuje ho. Avšak Kubernetes robí nahradiť niektoré z technológií na vyššej úrovni, ktoré sa objavili v okolí Dockeru.

Jednou z takýchto technológií je Docker Swarm, orchestrátor dodávaný s produktom Docker. Namiesto Kubernetes je stále možné použiť Docker Swarm, ale spoločnosť Docker Inc. sa rozhodla urobiť z Kubernetes súčasť vydaní Docker Community a Docker Enterprise.

Nie že by Kubernetes bol náhradou za Docker Swarm. Kubernetes je podstatne zložitejší ako Swarm a jeho nasadenie si vyžaduje viac práce. Cieľom práce je však opäť poskytnúť z dlhodobého hľadiska veľkú odmenu - zvládnuteľnejšiu a odolnejšiu aplikačnú infraštruktúru. Pre vývojové práce a menšie zhluky kontajnerov predstavuje Docker Swarm jednoduchšiu voľbu.

Kubernetes vs. Mesos

Ďalším projektom, o ktorom ste možno počuli ako o konkurentovi spoločnosti Kubernetes, je Mesos. Mesos je projekt Apache, ktorý pôvodne vznikol od vývojárov na Twitteri; v skutočnosti sa to považovalo za odpoveď na projekt Google Borg.

Mesos v skutočnosti ponúka služby orchestrácie kontajnerov, ale jeho ambície siahajú oveľa ďalej: jeho cieľom je byť akýmsi cloudovým operačným systémom, ktorý dokáže koordinovať kontajnerové aj nekontaminované komponenty. Za týmto účelom môže v rámci Mesosu bežať množstvo rôznych platforiem - vrátane samotného Kubernetes.

Architektúra Kubernetes: Ako funguje Kubernetes

Kubernetesova architektúra využíva rôzne koncepty a abstrakcie. Niektoré z nich sú variáciami existujúcich, známych pojmov, iné sú však špecifické pre Kubernetes.

Klastre Kubernetes

Najvyššia abstrakcia Kubernetes, zhluk, označuje skupinu počítačov, na ktorých je spustený Kubernetes (sama klastrovaná aplikácia), a ním spravované kontajnery. Klaster Kubernetes musí mať a pán, systém, ktorý riadi a riadi všetky ostatné stroje Kubernetes v klastri. Vysoko dostupný klaster Kubernetes replikuje vybavenie pána na viacerých strojoch. Plánovač úloh a radič-manažér však súčasne prevádzkuje iba jeden hlavný server.

Uzly a pody Kubernetes

Každý klaster obsahuje Kubernetes uzly. Uzlami môžu byť fyzické stroje alebo virtuálne počítače. Ide opäť o abstrakciu: Nech už je aplikácia spustená kdekoľvek, Kubernetes sa stará o nasadenie na danom podklade. Kubernetes dokonca umožňuje zaistiť, aby určité kontajnery fungovali iba na virtuálnych počítačoch alebo iba na holom kove.

Uzly bežia struky, najzákladnejšie objekty Kubernetes, ktoré je možné vytvoriť alebo spravovať. Každý pod predstavuje jednu inštanciu aplikácie alebo bežiaceho procesu v Kubernetes a pozostáva z jedného alebo viacerých kontajnerov. Kubernetes spúšťa, zastavuje a replikuje všetky kontajnery v podu ako skupina. Pods držia pozornosť používateľa skôr na aplikáciu ako na samotné kontajnery. Podrobnosti o tom, ako je potrebné nakonfigurovať Kubernetes, od stavu podov vyššie, sú uchované v Atď, distribuovaný obchod s kľúčom a hodnotou.

Lusky sa vytvárajú a ničia na uzloch podľa potreby, aby sa dosiahol požadovaný stav zadaný používateľom v definícii lusku. Kubernetes poskytuje abstrakciu nazvanú a kontrolór za riešenie logistiky spôsobu roztáčania, vyvaľovania a otáčania toboliek. Ovládače majú niekoľko rôznych príchutí v závislosti od druhu spravovanej aplikácie. Napríklad nedávno predstavený radič „StatefulSet“ sa používa na prácu s aplikáciami, ktoré potrebujú trvalý stav. Ďalším druhom radiča je nasadenie, sa používa na zväčšenie alebo zmenšenie aplikácie, aktualizáciu aplikácie na novú verziu alebo vrátenie aplikácie do známej dobrej verzie, ak sa vyskytne problém.

Služby spoločnosti Kubernetes

Pretože pody žijú a zomierajú podľa potreby, potrebujeme inú abstrakciu pre prácu s životným cyklom aplikácie. Aplikácia má byť perzistentnou entitou, aj keď pody, ktoré prevádzkujú kontajnery, ktoré tvoria aplikáciu, samy o sebe nie sú perzistentné. Za týmto účelom poskytuje Kubernetes abstrakciu nazvanú a služby.

Služba v Kubernetes popisuje, ako je možné cez sieť získať prístup k danej skupine podov (alebo k iným objektom Kubernetes). Ako uvádza dokumentácia Kubernetes, moduly, ktoré tvoria back-end aplikácie, sa môžu meniť, ale front-end by o tom nemusel vedieť alebo ich sledovať. Služby to umožňujú.

Obrázok završuje niekoľko ďalších vnútorných častí Kubernetes. The plánovač rozdelí pracovné zaťaženie na uzly, aby boli vyvážené medzi zdrojmi a aby nasadenia zodpovedali požiadavkám definícií aplikácií. The správca kontrolóra zaisťuje, aby sa stav systému - aplikácie, pracovné zaťaženie atď. - zhodoval s požadovaným stavom definovaným v konfiguračných nastaveniach spoločnosti Etcd.

Je dôležité mať na pamäti, že žiadny z nízkoúrovňových mechanizmov používaných kontajnermi, ako je napríklad samotný Docker, nie je vymenený od Kubernetes. Namiesto toho poskytuje Kubernetes väčšiu sadu abstrakcií na používanie týchto mechanizmov z dôvodu udržiavania bežiacej prevádzky aplikácií.

Kubernetes Ingress

Služby Kubernetes sa považujú za spustené v rámci zhluk. Budete však chcieť mať k týmto službám prístup z vonkajšieho sveta. Kubernetes má niekoľko komponentov, ktoré to uľahčujú s rôznym stupňom jednoduchosti a robustnosti, vrátane NodePort a LoadBalancer, ale komponentom s najväčšou flexibilitou je Ingress. Ingress je API, ktoré spravuje externý prístup k službám klastra, zvyčajne pomocou protokolu HTTP.

Ingress vyžaduje trochu konfigurácie, aby ste ho mohli správne nastaviť - procesom na vašom webe vás prevedie Matthew Palmer, ktorý napísal knihu o vývoji Kubernetes.

Dashboard Kubernetes

Jedným z komponentov Kubernetes, ktorý vám pomôže udržať si prehľad o všetkých týchto ďalších súčastiach, je Dashboard, webové používateľské rozhranie, pomocou ktorého môžete nasadiť a riešiť problémy s aplikáciami a spravovať prostriedky klastra. Informačný panel nie je predvolene nainštalovaný, ale jeho pridanie nie je príliš veľké problémy.

Súvisiace video: Čo je to Kubernetes?

V tomto 90-sekundovom videu sa dozviete o Kubernetes, systéme open-source na automatizáciu kontajnerových aplikácií, od jedného z vynálezcov tejto technológie, Joe Beda, zakladateľ a CTO spoločnosti Heptio.

Výhody Kubernetes

Pretože Kubernetes predstavuje nové abstrakcie a koncepty a pretože krivka učenia sa pre Kubernetes je vysoká, je len normálne pýtať sa, aké sú dlhodobé výplaty za používanie Kubernetes. Tu je prehľad niektorých konkrétnych spôsobov, ako je spúšťanie aplikácií vo vnútri Kubernetes jednoduchšie.

Kubernetes za vás spravuje zdravie, replikáciu, vyvažovanie záťaže a alokáciu hardvérových prostriedkov

Jednou z najzákladnejších povinností, ktoré vám Kubernetes vezme z rúk, je zaneprázdnená práca s udržiavaním aplikácie, jej prevádzkou a schopnosťou reagovať na požiadavky používateľov. Aplikácie, ktoré sa stanú „nezdravými“ alebo nezodpovedajú definícii zdravia, ktorú pre nich popisujete, je možné liečiť automaticky.

Ďalšou výhodou, ktorú Kubernetes poskytuje, je maximalizácia využitia hardvérových zdrojov vrátane pamäte, I / O úložiska a šírky pásma siete. Aplikácie môžu mať nastavené mäkké a tvrdé limity na využitie zdrojov. Mnoho aplikácií, ktoré využívajú minimálne zdroje, je možné zbaliť na jeden hardvér. aplikácie, ktoré je potrebné pretiahnuť, je možné umiestniť do systémov, kde majú priestor na rast. Zavádzanie aktualizácií naprieč klastrom alebo vrátenie späť, ak sa aktualizácie zlomia, možno znova automatizovať.

Kubernetes uľahčuje nasadenie predkonfigurovaných aplikácií pomocou Helmových grafov

Správcovia balíkov, ako sú APT systému Debian Linux a Python’s Pip, šetria používateľom problémy s manuálnou inštaláciou a konfiguráciou aplikácie. Toto je obzvlášť užitočné, keď má aplikácia viac externých závislostí.

Helm je v podstate správcom balíkov pre Kubernetes. Mnoho populárnych softvérových aplikácií musí bežať v Kubernetes ako skupina vzájomne závislých kontajnerov. Helm poskytuje definičný mechanizmus, „graf“, ktorý popisuje, ako je možné spustiť aplikáciu alebo službu ako skupinu kontajnerov vo vnútri Kubernetes.

Svoje vlastné Helmove grafy si môžete vytvoriť úplne od začiatku. Možno budete musieť vytvoriť novú aplikáciu, ktorá bude interne nasadená. Ale ak používate populárnu aplikáciu, ktorá má spoločný vzor nasadenia, je veľká šanca, že už niekto pre ňu vytvoril Helmov graf a zverejnil ho v oficiálnom úložisku Helmových diagramov. Ďalším miestom, kde hľadať oficiálne mapy Helm, je adresár Kubeapps.com.

Kubernetes zjednodušuje správu úložiska, tajných kódov a ďalších zdrojov súvisiacich s aplikáciou

Kontajnery sú myslené ako nemenné; čokoľvek do nich vložíte, sa nemení. Aplikácie však potrebujú stav, čo znamená, že potrebujú spoľahlivý spôsob riešenia externých úložných priestorov. To je ešte komplikovanejšie tým, ako kontajnery žijú, zomierajú a znovu sa rodia počas celej životnosti aplikácie.

Kubernetes poskytuje abstrakcie, ktoré umožňujú kontajnerom a aplikáciám narábať s úložiskom rovnako oddelene ako iné zdroje. K mnohým bežným typom úložných priestorov, od zväzkov Amazon EBS až po obyčajné staré zdieľané priečinky NFS, je možné získať prístup prostredníctvom ovládačov úložiska Kubernetes, nazývaných zväzky. Zväzky sú zvyčajne viazané na konkrétny pod, ale podtyp zväzku nazývaný „Trvalý zväzok“ je možné použiť pre údaje, z ktorých je potrebné žiť nezávisle na ktoromkoľvek pod.

Kontajnery často musia pracovať so „tajomstvami“ - prihlasovacími údajmi, ako sú kľúče API alebo servisné heslá, ktoré nechcete napevno zakódovať do kontajnera alebo otvorene uložiť na zväzok disku. Aj keď sú na to k dispozícii riešenia tretích strán, napríklad Docker secrets a HashiCorp Vault, Kubernetes má vlastný mechanizmus na natívne narábanie s tajomstvami, aj keď je potrebné ho nakonfigurovať opatrne. Napríklad Etcd musí byť nakonfigurovaný na používanie SSL / TLS pri odosielaní tajných údajov medzi uzlami, a nie v obyčajnom texte.

Aplikácie Kubernetes môžu bežať v hybridných a multi-cloudových prostrediach

Jedným z dlhoročných snov cloud computingu je byť schopný spustiť ľubovoľnú aplikáciu v akomkoľvek cloude alebo v akejkoľvek zmesi mrakov verejnom alebo súkromnom. Nejde len o to, aby ste sa vyhli blokovaniu dodávateľov, ale tiež aby ste využili výhody funkcií špecifických pre jednotlivé cloudy.

Kubernetes poskytuje množinu primitívov, súhrnne označovaných ako federácia, na udržiavanie vzájomnej synchronizácie viacerých klastrov vo viacerých regiónoch a oblakoch. Napríklad nasadenie danej aplikácie sa dá udržiavať konzistentné medzi viacerými klastrami a rôzne klastre môžu zdieľať objavovanie služieb tak, aby k zdroju typu back-end bolo možné pristupovať z ľubovoľného klastra. Federáciu je možné použiť aj na vytvorenie vysoko dostupných alebo na chyby odolných nasadení Kubernetes, či už sa nachádzate vo viacerých cloudových prostrediach alebo nie.

Federácia je pre Kubernetes stále relatívne nová. Nie všetky zdroje API sú zatiaľ podporované vo federovaných inštanciách a upgrady ešte nemajú automatickú testovaciu infraštruktúru. Tieto nedostatky sa však majú vyriešiť v budúcich verziách Kubernetes.

Kde získať Kubernetes

$config[zx-auto] not found$config[zx-overlay] not found