Programavimas

Kas yra Kubernetes? Kita jūsų programos platforma

„Kubernetes“ yra populiari atvirojo kodo platforma konteinerių orkestravimas - tai yra valdyti programas, sukurtas iš daugelio savarankiškų vykdymo trukmių, vadinamų konteineriai. Konteineriai tapo vis populiaresni nuo 2013 m. Pradėto „Docker“ konteinerių projekto, tačiau dideles, paskirstytas konteineriais pritaikytas programas gali būti vis sunkiau koordinuoti. Sudaręs konteineriuose esančias programas, kurias lengviau valdyti masto, „Kubernetes“ tapo pagrindine konteinerių revoliucijos dalimi.

Kas yra konteinerių orkestravimas?

Konteineriai palaiko VM tipo rūpesčių atskyrimą, tačiau kur kas mažiau pridėtinių išlaidų ir žymiai didesnio lankstumo. Todėl konteineriai pakeitė žmonių mąstymą apie programinės įrangos kūrimą, diegimą ir priežiūrą. Konteinerių talpykloje skirtingos paslaugos, sudarančios programą, yra supakuotos į atskirus konteinerius ir išdėstytos fizinių ar virtualių mašinų grupėje. Bet tai sukelia poreikį konteinerių orkestravimas—Įrankis, kuris automatizuoja talpyklų programų diegimą, valdymą, mastelio keitimą, tinklų kūrimą ir prieinamumą.

Kas yra Kubernetes?

„Kubernetes“ yra atviro kodo projektas, kuris tapo vienu populiariausių konteinerių orkestravimo įrankių; tai leidžia masiškai diegti ir valdyti kelių konteinerių programas. Nors praktikoje „Kubernetes“ dažniausiai naudojama su populiariausia konteinerių platforma „Docker“, ji taip pat gali dirbti su bet kokia konteinerių sistema, atitinkančia „Open Container Initiative“ (OCI) standartus, taikomus konteinerių vaizdų formatams ir vykdymo laikams. Kadangi „Kubernetes“ yra atviro kodo programa, turinti palyginti nedaug apribojimų, kaip ją naudoti, ją gali laisvai naudoti visi, norintys paleisti konteinerius, labiausiai visur, kur nori juos paleisti - vietoje, viešajame debesyje ar abiejuose .

„Google“ ir „Kubernetes“

„Kubernetes“ pradėjo gyvenimą kaip „Google“ projektą. Tai „Google Borg“, ankstesnio konteinerių tvarkymo įrankio, kurį „Google“ naudojo viduje, teisių perėmėjas, nors ir nėra tiesioginis jo palikuonis. „Google“ 2014 m. Atidarė „Kubernetes“, iš dalies todėl, kad „Kubernetes“ palengvintos paskirstytų mikropaslaugų architektūros leidžia lengvai vykdyti programas debesyje. „Google“ mano, kad konteinerių, mikropaslaugų ir „Kubernetes“ priėmimas gali paskatinti klientus naudotis savo debesų paslaugomis (nors „Kubernetes“ tikrai taip pat veikia su „Azure“ ir AWS). Šiuo metu „Kubernetes“ prižiūri „Cloud Native Computing Foundation“, kuris pats yra po „Linux Foundation“ skėčiu.

Kubernetes prieš Docker ir Kubernetes prieš Docker Swarm

„Kubernetes“ nepakeičia „Docker“, bet jį padidina. Tačiau Kubernetes daro pakeisti kai kurias aukštesnio lygio technologijas, kurios atsirado aplink „Docker“.

Viena iš tokių technologijų yra „Docker Swarm“, orkestro vadovas, sujungtas su „Docker“. Vis dar galima naudoti „Docker Swarm“ vietoj „Kubernetes“, tačiau „Docker Inc.“ nusprendė ateityje „Kubernetes“ įtraukti į „Docker Community“ ir „Docker Enterprise“ leidimus.

Ne todėl, kad „Kubernetes“ yra „Docker Swarm“ pakaitalas. „Kubernetes“ yra žymiai sudėtingesnis nei „Swarm“, todėl norint jį įdiegti reikia daugiau darbo. Bet vėlgi, šiuo darbu siekiama užtikrinti didelę išmoką ilguoju laikotarpiu - lengviau valdomą, atsparesnę programų infrastruktūrą. Vystymo darbams ir mažesnėms konteinerių grupėms „Docker Swarm“ pateikia paprastesnį pasirinkimą.

Kubernetes prieš Mesos

Kitas projektas, apie kurį galbūt girdėjote kaip „Kubernetes“ konkurentas Mesos. „Mesos“ yra „Apache“ projektas, kurį iš pradžių sukūrė „Twitter“ kūrėjai; iš tikrųjų tai buvo vertinama kaip atsakymas į „Google Borg“ projektą.

„Mesos“ iš tikrųjų siūlo konteinerių orkestravimo paslaugas, tačiau jos užmojai gerokai viršija tai: ji siekia būti tam tikra debesų operacine sistema, galinti koordinuoti tiek konteineriuose, tiek ne konteineriuose esančius komponentus. Tuo tikslu „Mesos“ gali veikti daugybė skirtingų platformų, įskaitant pačią „Kubernetes“.

„Kubernetes“ architektūra: kaip veikia „Kubernetes“

Kuberneteso architektūroje naudojamos įvairios sąvokos ir abstrakcijos. Kai kurie iš jų yra esamų, pažįstamų sampratų variantai, tačiau kiti yra būdingi „Kubernetes“.

„Kubernetes“ sankaupos

Aukščiausio lygio „Kubernetes“ abstrakcija klasterisnurodo mašinų grupę, valdančią „Kubernetes“ (pati grupuotą programą), ir jos valdomus konteinerius. „Kubernetes“ klasteris turi turėti a meistras, sistema, kuri komanduoja ir valdo visas kitas klasterio „Kubernetes“ mašinas. Labai prieinamas „Kubernetes“ klasteris atkartoja kapitono galimybes keliose mašinose. Bet tik vienas meistras vienu metu valdo darbo planuoklį ir valdiklio valdytoją.

Kubernetes mazgai ir ankštys

Kiekviename klasteryje yra „Kubernetes“ mazgai. Mazgai gali būti fizinės mašinos arba VM. Vėlgi, idėja yra abstrakcija: kad ir kokia programa būtų vykdoma, „Kubernetes“ valdo diegimą tame substrate. „Kubernetes“ netgi leidžia užtikrinti, kad tam tikri konteineriai važinėtų tik su VM arba tik ant pliko metalo.

Mazgai veikia ankštys, patys pagrindiniai „Kubernetes“ objektai, kuriuos galima sukurti arba valdyti. Kiekvienas tinklelis reiškia vieną programos arba vykdomo proceso „Kubernetes“ egzempliorių ir susideda iš vieno ar daugiau talpyklų. „Kubernetes“ paleidžia, sustabdo ir visus grupėje esančius konteinerius atkartoja kaip grupę. Ankštys atkreipia vartotojo dėmesį į programą, o ne į pačius konteinerius. Išsaugoma išsami informacija apie tai, kaip reikia konfigūruoti „Kubernetes“, pradedant ankštimis Ir kt, paskirstytos raktų vertės saugykla.

Pods sukuriami ir sunaikinami mazguose, jei reikia, kad jie atitiktų norimą būseną, kurią vartotojas nurodė pod apibrėžime. „Kubernetes“ pateikia abstrakciją, vadinamą a valdiklis už logistiką, kaip ankštys susukamos, išvyniojamos ir išverstos žemyn. Valdikliai būna kelių skirtingų skonių, priklausomai nuo tvarkomos programos rūšies. Pavyzdžiui, neseniai pristatytas valdiklis „StatefulSet“ yra naudojamas tvarkyti programas, kurioms reikalinga nuolatinė būsena. Kita valdiklio rūšis dislokavimas, naudojamas programos masteliui aukštyn arba žemyn, atnaujinti programą į naują versiją arba sugrąžinti ją į gerai žinomą versiją, jei kyla problemų.

„Kubernetes“ paslaugos

Kadangi ankštys gyvena ir miršta pagal poreikį, mums reikia kitokios abstrakcijos, kad galėtume spręsti programos gyvavimo ciklą. Programa turėtų būti nuolatinis subjektas, net jei dėklai, kuriuose veikia konteineriai, kuriuose yra programa, patys nėra patvarūs. Tuo tikslu „Kubernetes“ pateikia abstrakciją, vadinamą a paslaugą.

Paslauga „Kubernetes“ aprašo, kaip tam tikrą tinklų grupę (ar kitus „Kubernetes“ objektus) galima pasiekti per tinklą. Kaip sakoma „Kubernetes“ dokumentuose, programos galinę dalį sudarančios dėklai gali keistis, tačiau tvarkyklė neturėtų apie tai žinoti ar sekti. Paslaugos tai leidžia.

Paveikslą suapvalina dar keletas Kubernetes vidinių dalių. planuoklis paskirsto mazgams darbo krūvius, kad jie būtų subalansuoti tarp išteklių ir kad diegimai atitiktų programos apibrėžimų reikalavimus. valdytojo vadybininkas užtikrina, kad sistemos būsena - programos, darbo krūviai ir kt. - atitiktų norimą būseną, apibrėžtą Etcd konfigūracijos nustatymuose.

Svarbu nepamiršti, kad nė vienas iš žemo lygio konteinerių naudojamų mechanizmų, pavyzdžiui, pats „Docker“, nėra pakeistas autorius Kubernetes. Atvirkščiai, „Kubernetes“ pateikia didesnį abstrakcijų rinkinį, skirtą naudoti šiuos mechanizmus, kad programos veiktų masto.

Kubernetes Ingress

Manoma, kad „Kubernetes“ paslaugos veikia per klasteris. Bet jūs norėsite turėti galimybę naudotis šiomis paslaugomis iš išorinio pasaulio. „Kubernetes“ turi keletą komponentų, kurie tai palengvina įvairiu paprastumu ir tvirtumu, įskaitant „NodePort“ ir „LoadBalancer“, tačiau komponentas, turintis daugiausia lankstumo, yra „Ingress“. „Ingress“ yra API, valdanti išorinę prieigą prie klasterio paslaugų, paprastai per HTTP.

Norint tinkamai nustatyti, „Ingress“ reikia šiek tiek konfigūracijos - Matthew Palmeris, parašęs knygą apie „Kubernetes“ plėtrą, peržiūri jus savo svetainėje.

„Kubernetes“ prietaisų skydelis

Vienas „Kubernetes“ komponentas, padedantis neatsilikti nuo visų šių kitų komponentų, yra „Dashboard“ - žiniatinklio vartotojo sąsaja, su kuria galite diegti ir šalinti programas bei valdyti sankaupos išteklius. Informacijos suvestinė nėra įdiegta pagal numatytuosius nustatymus, tačiau pridėjus tai nėra per daug problemų.

Susijęs vaizdo įrašas: kas yra „Kubernetes“?

Šiame 90 sekundžių trukmės vaizdo įraše sužinokite apie „Kubernetes“ - atvirojo kodo sistemą, skirtą automatizuoti konteinerių programas, iš vieno išradėjų - Joe Beda, „Heptio“ įkūrėjo ir CTO.

„Kubernetes“ pranašumai

Kadangi „Kubernetes“ pristato naujas abstrakcijas ir sąvokas, ir kadangi „Kubernetes“ mokymosi kreivė yra aukšta, yra tik normalu paklausti, kokie yra ilgalaikiai „Kubernetes“ naudos atlygiai. Štai keletas konkrečių būdų, kaip lengviau paleisti programas „Kubernetes“, aprašymas tampa lengvesnis.

„Kubernetes“ tvarko programos būseną, replikaciją, apkrovos balansavimą ir aparatūros išteklių paskirstymą

Viena iš pagrindinių pareigų, kurią „Kubernetes“ nusiima nuo jūsų, yra užimtas darbas palaikant programą, veikiant ir reaguojant į vartotojo poreikius. Programos, kurios tampa „nesveikos“ arba neatitinka jūsų apibūdinto sveikatos apibrėžimo, gali būti automatiškai išgydomos.

Kitas „Kubernetes“ teikiamas pranašumas yra maksimalus aparatūros išteklių, įskaitant atmintį, atminties įvesties / išvesties ir tinklo pralaidumą, naudojimo padidinimas. Programose gali būti nustatytos minkštos ir sudėtingos išteklių naudojimo ribos. Daugelis programų, naudojančių minimalius išteklius, gali būti supakuotos į tą pačią techninę įrangą; programas, kurias reikia išplėsti, galima įdėti į sistemas, kuriose yra kur augti. Ir vėl galima automatizuoti naujinimų diegimą grupėje arba sugrįžimą, jei naujinimai sugenda.

„Kubernetes“ palengvina iš anksto sukonfigūruotų programų diegimą naudojant „Helm“ diagramas

Paketų tvarkyklės, tokios kaip „Debian Linux“ APT ir „Python's Pip“, taupo vartotojus rankiniu būdu įdiegiant ir konfigūruojant programą. Tai ypač patogu, kai programa turi kelias išorines priklausomybes.

Helmas iš esmės yra „Kubernetes“ paketų tvarkytuvas. Daugelis populiarių programinės įrangos programų turi veikti „Kubernetes“ kaip tarpusavyje susijusių konteinerių grupė. Helmas pateikia apibrėžimo mechanizmą, „diagramą“, kuriame aprašoma, kaip programą ar paslaugą galima paleisti kaip konteinerių grupę „Kubernetes“ viduje.

Galite sukurti savo „Helm“ diagramas nuo nulio, ir jums gali prireikti, jei kuriate pasirinktinę programą, kuri bus įdiegta viduje. Bet jei naudojate populiarią programą, kuri turi bendrą diegimo modelį, yra didelė tikimybė, kad kažkas jau sukūrė jai „Helm“ diagramą ir paskelbė ją oficialioje „Helm“ diagramų saugykloje. Kita vieta, kur reikia ieškoti oficialių „Helm“ diagramų, yra katalogas „Kubeapps.com“.

„Kubernetes“ supaprastina saugyklos, paslapčių ir kitų su programa susijusių išteklių valdymą

Konteineriai skirti nekintamiems; tai, ką jūs į juos įdėsite, neturėtų keistis. Tačiau programoms reikia būsenos, ty joms reikia patikimo būdo tvarkyti išorinės atminties apimtis. Tai dar labiau apsunkina tai, kaip konteineriai gyvena, miršta ir atgimsta per visą programos gyvenimą.

„Kubernetes“ pateikia abstrakcijas, kad konteineriai ir programos galėtų tvarkyti saugyklą taip pat atsieti kaip ir kiti ištekliai. Daugelį įprastų saugojimo rūšių, pradedant „Amazon EBS“ tomais, iki paprastų senų NFS akcijų, galima pasiekti naudojant „Kubernetes“ saugyklos tvarkykles, vadinamus tomais. Paprastai tomai yra susieti su konkrečia anketa, tačiau tūrio potipis, vadinamas „Nuolatiniu tūriu“, gali būti naudojamas duomenims, kurie turi gyventi nepriklausomai nuo bet kokio tinklelio.

Konteineriuose dažnai reikia dirbti su „paslaptimis“ - kredencialais, tokiais kaip API raktai ar paslaugų slaptažodžiai, kurių nenorite perkoduoti į talpyklą arba atvirai talpinti disko tome. Nors tam yra galimi trečiųjų šalių sprendimai, tokie kaip „Docker“ paslaptys ir „HashiCorp Vault“, „Kubernetes“ turi savo mechanizmą natūraliai tvarkant paslaptis, nors jį reikia sukonfigūruoti atsargiai. Pavyzdžiui, Etcd turi būti sukonfigūruotas naudoti SSL / TLS siunčiant paslaptis tarp mazgų, o ne paprastu tekstu.

„Kubernetes“ programos gali veikti hibridinėse ir daugialypėse debesyse

Viena iš ilgų debesų kompiuterijos svajonių yra galimybė paleisti bet kurią programą bet kuriame debesyje arba bet kokiame debesų viešajame ar privačiame. Taip siekiama ne tik išvengti tiekėjo užrakinimo, bet ir pasinaudoti funkcijomis, būdingomis atskiriems debesims.

„Kubernetes“ pateikia primityvų rinkinį, bendrai vadinamą federacija, skirtą keliems klasteriams sinchronizuoti daugelyje regionų ir debesų. Pvz., Tam tikras programos diegimas gali būti nuoseklus tarp kelių grupių, o skirtingi klasteriai gali dalytis paslaugų atradimu, kad galinį išteklių būtų galima pasiekti iš bet kurio klasterio. Federacija taip pat gali būti naudojama kuriant labai prieinamas ar netoleruojančias gedimų „Kubernetes“ diegimo operacijas, neatsižvelgiant į tai, ar jūs naudojate kelias debesies aplinkas.

Federacija „Kubernetes“ dar gana nauja. Kol kas ne visi API ištekliai palaikomi federuotose egzemplioriuose, o naujovinant dar nėra automatinio testavimo infrastruktūros. Tačiau šiuos trūkumus ketinama pašalinti būsimose „Kubernetes“ versijose.

Kur gauti Kubernetes

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