Sveiki, mani sauc Dmitrijs Krasnovs. VairÄk nekÄ piecus gadus es administrÄju Kubernetes klasterus un veidoju sarežģītas mikropakalpojumu arhitektÅ«ras. Å Ä« gada sÄkumÄ mÄs uzsÄkÄm pakalpojumu Kubernetes klasteru pÄrvaldÄ«bai, pamatojoties uz Containerum. Izmantojot Å”o iespÄju, es jums pastÄstÄ«Å”u, kas ir Kubernetes un kÄ integrÄcija ar pÄrdevÄju atŔķiras no atvÄrtÄ pirmkoda.
Lai sÄktu, kas ir
PÄrvaldiet lielu skaitu konteineru
Tagad izdomÄsim, kÄdi konteineri tie ir. Å Ä« ir lietojumprogramma ar visu vidi - galvenokÄrt bibliotÄkÄm, no kurÄm ir atkarÄ«ga programma. Tas viss tiek iepakots arhÄ«vos un parÄdÄ«ts attÄla veidÄ, kuru var palaist neatkarÄ«gi no operÄtÄjsistÄmas, pÄrbaudÄ«t un daudz ko citu. Bet ir problÄma - pÄrvaldÄ«t konteinerus daudzos saimniekdatoros ir ļoti grÅ«ti. TÄpÄc tika izveidota Kubernetes.
Konteinera attÄls attÄlo lietojumprogrammu un tÄs atkarÄ«bas. Lietojumprogramma, tÄs atkarÄ«bas un OS failu sistÄmas attÄls atrodas dažÄdÄs attÄla daļÄs, tÄ sauktajos slÄÅos. SlÄÅus var atkÄrtoti izmantot dažÄdiem konteineriem. PiemÄram, visas uzÅÄmuma lietojumprogrammas var izmantot Ubuntu bÄzes slÄni. Palaižot konteinerus, resursdatorÄ nav jÄuzglabÄ vairÄkas viena pamata slÄÅa kopijas. Tas ļauj optimizÄt attÄlu uzglabÄÅ”anu un piegÄdi.
Kad mÄs vÄlamies palaist lietojumprogrammu no konteinera, nepiecieÅ”amie slÄÅi tiek uzlikti viens otram un tiek izveidota pÄrklÄjuma failu sistÄma. Uz augÅ”u ir uzlikts ierakstÄ«Å”anas slÄnis, kas tiek noÅemts, kad tvertne apstÄjas. Tas nodroÅ”ina, ka, palaižot konteineru, lietojumprogrammai vienmÄr bÅ«s tÄ pati vide, kuru nevar mainÄ«t. Tas garantÄ vides reproducÄjamÄ«bu dažÄdÄs resursdatora operÄtÄjsistÄmÄs. NeatkarÄ«gi no tÄ, vai tas ir Ubuntu vai CentOS, vide vienmÄr bÅ«s tÄda pati. TurklÄt konteiners ir izolÄts no resursdatora, izmantojot Linux kodolÄ iebÅ«vÄtus mehÄnismus. Lietojumprogrammas konteinerÄ neredz failus, resursdatora procesus un blakus esoÅ”os konteinerus. Å Ä« lietojumprogrammu izolÄcija no resursdatora OS nodroÅ”ina papildu droŔības lÄ«meni.
Ir pieejami daudzi rÄ«ki, lai pÄrvaldÄ«tu konteinerus resursdatorÄ. PopulÄrÄkais no tiem ir Docker. Tas ļauj nodroÅ”inÄt pilnu konteineru dzÄ«ves ciklu. TomÄr tas darbojas tikai vienÄ resursdatorÄ. Ja jums ir jÄpÄrvalda konteineri vairÄkos saimniekdatoros, Docker var padarÄ«t inženieru dzÄ«vi par elli. TÄpÄc tika izveidota Kubernetes.
PieprasÄ«jums pÄc Kubernetes ir tieÅ”i saistÄ«ts ar spÄju pÄrvaldÄ«t konteineru grupas vairÄkos saimniekdatoros kÄ atseviŔķu vienÄ«bu. SistÄmas popularitÄte sniedz iespÄju izveidot DevOps vai attÄ«stÄ«bas operÄcijas, kurÄs Kubernetes tiek izmantots, lai palaistu tieÅ”i Ŕī DevOps procesus.
1. attÄls. Kubernetes darbÄ«bas shematisks attÄlojums
PilnÄ«ga automatizÄcija
DevOps bÅ«tÄ«bÄ ir izstrÄdes procesa automatizÄcija. Aptuveni runÄjot, izstrÄdÄtÄji raksta kodu, kas tiek augÅ”upielÄdÄts repozitorijÄ. PÄc tam Å”o kodu var automÄtiski uzreiz savÄkt konteinerÄ ar visÄm bibliotÄkÄm, pÄrbaudÄ«t un āizrullÄtā uz nÄkamo posmu - Staging un pÄc tam uzreiz uz RažoÅ”anu.
KopÄ ar Kubernetes DevOps ļauj automatizÄt Å”o procesu tÄ, lai tas notiktu praktiski bez paÅ”u izstrÄdÄtÄju lÄ«dzdalÄ«bas. SakarÄ ar to bÅ«vniecÄ«ba ir ievÄrojami ÄtrÄka, jo izstrÄdÄtÄjam tas nav jÄdara savÄ datorÄ - viÅÅ” vienkÄrÅ”i ieraksta koda daļu, nospiež kodu uz repozitoriju, pÄc kura tiek palaists konveijers, kas var ietvert procesu. veidoÅ”anu, testÄÅ”anu un izvÄrÅ”anu. Un tas notiek ar katru apÅemÅ”anos, tÄpÄc testÄÅ”ana notiek nepÄrtraukti.
TajÄ paÅ”Ä laikÄ konteinera izmantoÅ”ana ļauj bÅ«t pÄrliecinÄtam, ka visa Ŕīs programmas vide tiks izlaista ražoÅ”anÄ tieÅ”i tÄdÄ formÄ, kÄdÄ tÄ tika pÄrbaudÄ«ta. Tas nozÄ«mÄ, ka nebÅ«s tÄdu problÄmu kÄ "pÄrbaudÄ bija dažas versijas, citas - ražoÅ”anÄ, bet, kad mÄs tÄs instalÄjÄm, viss nokrita." Un tÄ kÄ Å”odien mums ir tendence uz mikropakalpojumu arhitektÅ«ru, kad vienas milzÄ«gas aplikÄcijas vietÄ ir simtiem mazu, lai tos manuÄli administrÄtu, bÅ«s nepiecieÅ”ams milzÄ«gs darbinieku kolektÄ«vs. TÄpÄc mÄs izmantojam Kubernetes.
Plusi, plusi, plusi
Ja runÄjam par Kubernetes kÄ platformas priekÅ”rocÄ«bÄm, tad tai ir bÅ«tiskas priekÅ”rocÄ«bas no mikropakalpojumu arhitektÅ«ras pÄrvaldÄ«bas viedokļa.
- VairÄku kopiju pÄrvaldÄ«ba. VissvarÄ«gÄkais ir pÄrvaldÄ«t konteinerus vairÄkos saimniekdatoros. VÄl svarÄ«gÄk ir pÄrvaldÄ«t vairÄkas lietojumprogrammu kopijas konteineros kÄ vienu vienÄ«bu. Pateicoties tam, inženieriem nav jÄuztraucas par katru atseviŔķu konteineru. Ja kÄds no konteineriem avarÄ, Kubernetes to redzÄs un restartÄs vÄlreiz.
- Klasteru tÄ«kls. Kubernetes ir arÄ« tÄ sauktais klasteru tÄ«kls ar savu adreÅ”u telpu. Pateicoties tam, katram podam ir sava adrese. ApakÅ”pods tiek saprasts kÄ klastera minimÄlÄ struktÅ«rvienÄ«ba, kurÄ konteineri tiek tieÅ”i palaisti. TurklÄt Kubernetes ir funkcionalitÄte, kas apvieno slodzes balansÄtÄju un pakalpojumu atklÄÅ”anu. Tas ļauj atbrÄ«voties no manuÄlas IP adreÅ”u pÄrvaldÄ«bas un deleÄ£Ät Å”o uzdevumu Kubernetes. AutomÄtiskÄs veselÄ«bas pÄrbaudes palÄ«dzÄs atklÄt problÄmas un novirzÄ«t trafiku uz strÄdÄjoÅ”iem podiem.
- KonfigurÄcijas pÄrvaldÄ«ba. PÄrvaldot lielu skaitu lietojumprogrammu, kļūst grÅ«ti pÄrvaldÄ«t lietojumprogrammu konfigurÄciju. Å im nolÅ«kam Kubernetes ir Ä«paÅ”i ConfigMap resursi. Tie ļauj centralizÄti glabÄt konfigurÄcijas un, palaižot lietojumprogrammas, pakļaut tÄs podiem. Å is mehÄnisms ļauj garantÄt konfigurÄcijas konsekvenci vismaz desmit vai simts lietojumprogrammu replikÄs.
- PastÄvÄ«gi sÄjumi. Konteineri pÄc bÅ«tÄ«bas ir nemainÄ«gi, un, kad konteiners tiek apturÄts, visi failu sistÄmÄ ierakstÄ«tie dati tiks iznÄ«cinÄti. Bet dažas lietojumprogrammas datus glabÄ tieÅ”i diskÄ. Lai atrisinÄtu Å”o problÄmu, Kubernetes ir diska krÄtuves pÄrvaldÄ«bas funkcionalitÄte - Persistent Volumes. Å is mehÄnisms izmanto ÄrÄjo datu krÄtuvi un var pÄrsÅ«tÄ«t pastÄvÄ«go krÄtuvi, bloku vai failu, konteineros. Å is risinÄjums ļauj glabÄt datus atseviŔķi no darbiniekiem, kas tos saglabÄ, ja Å”ie paÅ”i darbinieki sabojÄjas.
- Slodzes balansÄtÄjs. Lai gan pakalpojumÄ Kubernetes mÄs pÄrvaldÄm tÄdas abstraktas entÄ«tijas kÄ izvietoÅ”ana, StatefulSet utt., galu galÄ konteineri darbojas parastÄs virtuÄlajÄs maŔīnÄs vai aparatÅ«ras serveros. Tie nav ideÄli un var nokrist jebkurÄ laikÄ. Kubernetes to redzÄs un novirzÄ«s iekÅ”Äjo trafiku uz citÄm replikÄm. Bet ko darÄ«t ar satiksmi, kas nÄk no Ärpuses? Ja jÅ«s vienkÄrÅ”i novirzÄ«sit trafiku kÄdam no darbiniekiem, ja tas avarÄ, pakalpojums kļūs nepieejams. Lai atrisinÄtu Å”o problÄmu, Kubernetes piedÄvÄ tÄdus pakalpojumus kÄ Load Balancer. Tie ir paredzÄti, lai automÄtiski konfigurÄtu ÄrÄjo mÄkoÅu balansÄtÄju visiem klastera darbiniekiem. Å is ÄrÄjais balansÄtÄjs novirza ÄrÄjo trafiku uz darbiniekiem un pats uzrauga viÅu statusu. Ja viens vai vairÄki darbinieki kļūst nepieejami, satiksme tiek novirzÄ«ta uz citiem. Tas ļauj izveidot ļoti pieejamus pakalpojumus, izmantojot Kubernetes.
Kubernetes vislabÄk darbojas, palaižot mikropakalpojumu arhitektÅ«ras. SistÄmu ir iespÄjams ieviest klasiskajÄ arhitektÅ«rÄ, taÄu tas ir bezjÄdzÄ«gi. Ja lietojumprogramma nevar darboties vairÄkÄs replikÄs, kÄda ir atŔķirÄ«ba - Kubernetes vai nÄ?
AtvÄrtÄ koda Kubernetes
AtvÄrtÄ koda Kubernetes ir lieliska lieta: es to instalÄju, un tas darbojas. Varat to izvietot savos aparatÅ«ras serveros, savÄ infrastruktÅ«rÄ, instalÄt galvenos un darbiniekus, kuros darbosies visas lietojumprogrammas. Un pats galvenais, tas viss ir bez maksas. TomÄr ir nianses.
- Pirmais ir pieprasÄ«jums pÄc zinÄÅ”anÄm un pieredzes administratoriem un inženieriem, kuri to visu izvietos un atbalstÄ«s. TÄ kÄ klients klasterÄ« saÅem pilnÄ«gu rÄ«cÄ«bas brÄ«vÄ«bu, viÅÅ” pats ir atbildÄ«gs par klastera darbÄ«bu. Un Å”eit ir ļoti viegli visu salauzt.
- Otrais ir integrÄcijas trÅ«kums. Ja izmantojat Kubernetes bez populÄras virtualizÄcijas platformas, jÅ«s nesaÅemsit visas programmas priekÅ”rocÄ«bas. PiemÄram, izmantojot pastÄvÄ«gos apjomus un slodzes lÄ«dzsvara pakalpojumus.
2. attÄls. k8s arhitektÅ«ra
Kubernetes no pÄrdevÄja
IntegrÄcija ar mÄkoÅa pakalpojumu sniedzÄju nodroÅ”ina divas iespÄjas:
- PirmkÄrt, persona var vienkÄrÅ”i noklikŔķinÄt uz pogas āIzveidot kopuā un iegÅ«t klasteru, kas jau ir konfigurÄts un gatavs lietoÅ”anai.
- OtrkÄrt, pÄrdevÄjs pats instalÄ klasteru un iestata integrÄciju ar mÄkoni.
KÄ tas Å”eit notiek. Inženieris, kurÅ” uzsÄk klasteru, norÄda, cik strÄdnieku viÅam vajag un ar kÄdiem parametriem (piemÄram, 5 darbinieki, katrs ar 10 CPU, 16 GB RAM un, teiksim, 100 GB diska). PÄc tam tas iegÅ«st piekļuvi jau izveidotajam klasterim. Å ajÄ gadÄ«jumÄ darbinieki, uz kuriem tiek palaista krava, tiek pilnÄ«bÄ nodoti klientam, bet visa pÄrvaldÄ«bas plakne paliek pÄrdevÄja pÄrziÅÄ (ja pakalpojums tiek sniegts saskaÅÄ ar pÄrvaldÄ«tÄ pakalpojuma modeli).
TomÄr Å”ai shÄmai ir savi trÅ«kumi. SakarÄ ar to, ka pÄrvaldÄ«bas plÄns paliek pÄrdevÄjam, pÄrdevÄjs nesniedz klientam pilnÄ«gu piekļuvi, un tas samazina elastÄ«bu darbÄ ar Kubernetes. DažkÄrt gadÄs, ka klients vÄlas Kubernetes pievienot kÄdu specifisku funkcionalitÄti, piemÄram, autentifikÄciju caur LDAP, taÄu pÄrvaldÄ«bas plaknes konfigurÄcija to neļauj.
3. attÄls. Kubernetes klastera piemÄrs no mÄkoÅa nodroÅ”inÄtÄja
Ko izvÄlÄties: atvÄrtÄ koda vai pÄrdevÄja
TÄtad, vai Kubernetes ir atvÄrts avots vai piegÄdÄtÄjs? Ja Åemam atvÄrtÄ koda Kubernetes, tad lietotÄjs ar to dara, ko grib. Bet ir liela iespÄja ieÅ”aut sev kÄjÄ. Ar pÄrdevÄju tas ir grÅ«tÄk, jo viss ir pÄrdomÄts un konfigurÄts uzÅÄmuma vajadzÄ«bÄm. AtvÄrtÄ koda Kubernetes lielÄkais trÅ«kums ir prasÄ«ba pÄc speciÄlistiem. Izmantojot pÄrdevÄja iespÄju, uzÅÄmums ir atbrÄ«vots no Ŕīm galvassÄpÄm, taÄu tam bÅ«s jÄizlemj, vai maksÄt saviem speciÄlistiem vai pÄrdevÄjam.
Nu plusi ir acÄ«mredzami, arÄ« mÄ«nusi ir zinÄmi. Viena lieta ir nemainÄ«ga: Kubernetes atrisina daudzas problÄmas, automatizÄjot daudzu konteineru pÄrvaldÄ«bu. Un kuru izvÄlÄties, atvÄrtÄ koda vai pÄrdevÄju ā katrs pieÅem lÄmumu.
Rakstu sagatavoja Dmitrijs Krasnovs, #CloudMTS nodroÅ”inÄtÄja Containerum servisa vadoÅ”ais arhitekts
Avots: www.habr.com