Docker Swarm, Kubernetes un Mesos ir vispopulÄrÄkÄs konteineru orÄ·estrÄÅ”anas sistÄmas. SavÄ runÄ Aruns Gupta salÄ«dzina Å”Ädus Docker, Swarm un Kubernetes aspektus:
- VietÄjÄ attÄ«stÄ«ba.
- IzvietoŔanas funkcijas.
- VairÄku konteineru lietojumprogrammas.
- Pakalpojuma atklÄÅ”ana.
- Pakalpojuma mÄrogoÅ”ana.
- Vienreiz izpildÄmi uzdevumi.
- IntegrÄcija ar Maven.
- "RitoÅ”ais" atjauninÄjums.
- Couchbase datu bÄzes klastera izveide.
RezultÄtÄ jÅ«s iegÅ«sit skaidru izpratni par katra orÄ·estrÄÅ”anas rÄ«ka piedÄvÄjumu un uzzinÄsit, kÄ Å”Ä«s platformas efektÄ«vi izmantot.
Aruns Gupta ir Amazon Web Services galvenais atvÄrtÄ pirmkoda produktu tehnologs, kurÅ” vairÄk nekÄ 10 gadus ir izstrÄdÄjis Sun, Oracle, Red Hat un Couchbase izstrÄdÄtÄju kopienas. Ir liela pieredze, strÄdÄjot vadoÅ”Äs starpfunkcionÄlÄs komandÄs, izstrÄdÄjot un ievieÅ”ot mÄrketinga kampaÅu un programmu stratÄÄ£iju. ViÅÅ” vadÄ«ja Sun inženieru komandas, ir viens no Java EE komandas dibinÄtÄjiem un Devoxx4Kids ASV filiÄles izveidotÄjs. Aruns Gupta ir vairÄk nekÄ 2 tÅ«kstoÅ”u ziÅu autors IT emuÄros un uzstÄjies ar sarunÄm vairÄk nekÄ 40 valstÄ«s.
55. rindiÅÄ ir COUCHBASE_URI, kas norÄda uz Å”o datu bÄzes pakalpojumu, kas arÄ« tika izveidots, izmantojot Kubernetes konfigurÄcijas failu. Ja paskatÄs uz 2. rindiÅu, jÅ«s varat redzÄt veidu: Pakalpojums ir pakalpojums, ko veidoju, ko sauc par couchbase-service, un tas pats nosaukums ir norÄdÄ«ts 4. rindÄ. TÄlÄk ir norÄdÄ«ti daži porti.
GalvenÄs rindas ir 6 un 7. ApkalpoÅ”anas laikÄ es saku: "Hei, Ŕīs ir etiÄ·etes, kuras es meklÄju!", un Ŕīs etiÄ·etes ir nekas vairÄk kÄ mainÄ«go pÄru nosaukumi, un 7. rinda norÄda uz manu couchbase-rs-pod. pieteikumu. TÄlÄk ir norÄdÄ«ti porti, kas nodroÅ”ina piekļuvi Ŕīm paÅ”Äm etiÄ·etÄm.
19. rindiÅÄ es izveidoju jauna tipa ReplicaSet, 31. rindiÅÄ ir attÄla nosaukums, un 24.ā27. rindiÅa norÄda uz metadatiem, kas saistÄ«ti ar manu aplikumu. Tas ir tieÅ”i tas, ko pakalpojums meklÄ un ar ko ir jÄizveido savienojums. Faila beigÄs ir sava veida savienojums starp rindu 55-56 un 4, kurÄ teikts: "izmantojiet Å”o pakalpojumu!"
TÄtad, es sÄku savu pakalpojumu, kad ir reprodukcijas komplekts, un, tÄ kÄ katrai kopiju komplektam ir savs ports ar atbilstoÅ”o etiÄ·eti, tas ir iekļauts pakalpojumÄ. No izstrÄdÄtÄja viedokļa jÅ«s vienkÄrÅ”i izsaucat pakalpojumu, kas pÄc tam izmanto jums nepiecieÅ”amo kopiju kopu.
TÄ rezultÄtÄ man ir WildFly pod, kas sazinÄs ar datu bÄzes aizmugursistÄmu, izmantojot Couchbase Service. Es varu izmantot priekÅ”Äjo daļu ar vairÄkiem WildFly podiem, kas arÄ« sazinÄs ar couchbase aizmugursistÄmu, izmantojot couchbase pakalpojumu.
VÄlÄk apskatÄ«sim, kÄ pakalpojums, kas atrodas Ärpus klastera, sazinÄs, izmantojot savu IP adresi, ar elementiem, kas atrodas klastera iekÅ”pusÄ un kuriem ir iekÅ”Äja IP adrese.
TÄtad bezvalsts konteineri ir lieliski, bet cik labi ir izmantot statusu saturoÅ”us konteinerus? ApskatÄ«sim stÄvokļu vai pastÄvÄ«go konteineru sistÄmas iestatÄ«jumus. ProgrammÄ Docker ir 4 dažÄdas pieejas datu glabÄÅ”anas izkÄrtojumam, kurÄm jums vajadzÄtu pievÄrst uzmanÄ«bu. Pirmais ir Implicit Per-Container, kas nozÄ«mÄ, ka, izmantojot couchbase, MySQL vai MyDB sateful konteinerus, tie visi sÄkas ar noklusÄjuma Sandbox. Tas ir, viss, kas tiek glabÄts datu bÄzÄ, tiek glabÄts paÅ”Ä konteinerÄ. Ja konteiners pazÅ«d, dati pazÅ«d kopÄ ar to.
Otrais ir Explicit Per-Container, kad izveidojat noteiktu krÄtuvi ar docker sÄjuma izveides komandu un saglabÄjat tajÄ datus. TreÅ”Ä Per-Host pieeja ir saistÄ«ta ar krÄtuves kartÄÅ”anu, kad viss konteinerÄ saglabÄtais vienlaikus tiek dublÄts resursdatorÄ. Ja konteiners neizdodas, dati paliks resursdatorÄ. PÄdÄjais ir vairÄku Multi-Host saimniekdatoru izmantoÅ”ana, kas ir ieteicams dažÄdu risinÄjumu ražoÅ”anas stadijÄ. PieÅemsim, ka jÅ«su konteineri ar jÅ«su lietojumprogrammÄm darbojas resursdatorÄ, bet jÅ«s vÄlaties saglabÄt savus datus kaut kur internetÄ, un Å”im nolÅ«kam izmantojat automÄtisko kartÄÅ”anu sadalÄ«tajÄm sistÄmÄm.
Katra no Ŕīm metodÄm izmanto noteiktu uzglabÄÅ”anas vietu. Implicit un Explicit Per-Container glabÄ datus resursdatorÄ vietnÄ /var/lib/docker/volumes. Izmantojot Per-Host metodi, krÄtuve tiek uzstÄdÄ«ta konteinera iekÅ”pusÄ, un pats konteiners ir uzstÄdÄ«ts uz resursdatora. VairÄkiem resursdatoriem var izmantot tÄdus risinÄjumus kÄ Ceph, ClusterFS, NFS utt.
Ja pastÄvÄ«gs konteiners neizdodas, pirmajos divos gadÄ«jumos krÄtuves direktorijs kļūst nepieejams, bet pÄdÄjos divos gadÄ«jumos piekļuve tiek saglabÄta. TomÄr pirmajÄ gadÄ«jumÄ krÄtuvei varat piekļūt, izmantojot Docker resursdatoru, kas darbojas virtuÄlajÄ maŔīnÄ. OtrajÄ gadÄ«jumÄ arÄ« dati netiks zaudÄti, jo esat izveidojis Explicit krÄtuvi.
Ja saimniekdators neizdodas, pirmajos trÄ«s gadÄ«jumos krÄtuves direktorijs nav pieejams; pÄdÄjÄ gadÄ«jumÄ savienojums ar krÄtuvi netiek pÄrtraukts. Visbeidzot, koplietojamÄ funkcija pirmajÄ gadÄ«jumÄ ir pilnÄ«bÄ izslÄgta no uzglabÄÅ”anas un ir iespÄjama pÄrÄjÄ gadÄ«jumÄ. OtrajÄ gadÄ«jumÄ varat koplietot krÄtuvi atkarÄ«bÄ no tÄ, vai jÅ«su datu bÄze atbalsta izplatÄ«to krÄtuvi vai ne. Per-Host gadÄ«jumÄ datu izplatÄ«Å”ana ir iespÄjama tikai noteiktÄ resursdatorÄ, un vairÄkiem resursdatoriem to nodroÅ”ina klastera paplaÅ”inÄÅ”ana.
Tas ir jÄÅem vÄrÄ, veidojot statusu saturoÅ”us konteinerus. VÄl viens noderÄ«gs Docker rÄ«ks ir spraudnis Volume, kas darbojas pÄc principa ābaterijas ir, bet ir jÄnomainaā. Kad startÄjat Docker konteineru, tas saka: "Hei, kad esat ieslÄdzis konteineru ar datu bÄzi, varat saglabÄt savus datus Å”ajÄ konteinerÄ!" Å Ä« ir noklusÄjuma funkcija, taÄu jÅ«s to varat mainÄ«t. Å is spraudnis ļauj konteinera datu bÄzes vietÄ izmantot tÄ«kla disku vai ko lÄ«dzÄ«gu. Tas ietver noklusÄjuma draiveri resursdatora krÄtuvei un ļauj integrÄt konteinerus ar ÄrÄjÄm krÄtuves sistÄmÄm, piemÄram, Amazon EBS, Azure Storage un GCE pastÄvÄ«gajiem diskiem.
NÄkamajÄ slaidÄ ir parÄdÄ«ta Docker Volume spraudÅa arhitektÅ«ra.
ZilÄ krÄsa apzÄ«mÄ Docker klientu, kas saistÄ«ts ar zilo Docker resursdatoru, kuram ir lokÄlÄ krÄtuves programma, kas nodroÅ”ina jÅ«s ar konteineriem datu glabÄÅ”anai. Zaļa krÄsa norÄda uz spraudÅa klientu un spraudÅu dÄmonu, kas arÄ« ir savienoti ar resursdatoru. Tie nodroÅ”ina iespÄju glabÄt datus tÄ«kla krÄtuvÄ tÄda veida Storage Backend, kas jums nepiecieÅ”ams.
Docker Volume spraudni var izmantot ar Portworx krÄtuvi. PX-Dev modulis faktiski ir jÅ«su darbinÄtais konteiners, kas savienojas ar jÅ«su Docker resursdatoru un ļauj Ärti uzglabÄt datus vietnÄ Amazon EBS.
Portworx klients ļauj pÄrraudzÄ«t dažÄdu ar jÅ«su resursdatoru savienoto krÄtuves konteineru statusu. Ja apmeklÄjat manu emuÄru, varat izlasÄ«t, kÄ maksimÄli izmantot Portworx, izmantojot Docker.
Kubernetes krÄtuves koncepcija ir lÄ«dzÄ«ga Docker, un to attÄlo direktoriji, kas ir pieejami jÅ«su konteineram podÄ. Tie nav atkarÄ«gi no jebkura konteinera kalpoÅ”anas laika. VisizplatÄ«tÄkie pieejamie krÄtuves veidi ir hostPath, nfs, awsElasticBlockStore un gsePersistentDisk. ApskatÄ«sim, kÄ Å”ie veikali strÄdÄ Kubernetes. Parasti to savienoÅ”anas process sastÄv no 3 soļiem.
Pirmais ir tas, ka kÄds tÄ«kla pusÄ, parasti administrators, nodroÅ”ina jums pastÄvÄ«gu krÄtuvi. Å im nolÅ«kam ir atbilstoÅ”s PersistentVolume konfigurÄcijas fails. PÄc tam lietojumprogrammas izstrÄdÄtÄjs raksta konfigurÄcijas failu ar nosaukumu PersistentVolumeClaim jeb PVC krÄtuves pieprasÄ«jumu, kurÄ teikts: āMan ir nodroÅ”inÄta 50 GB sadalÄ«tÄ krÄtuve, taÄu, lai arÄ« citi cilvÄki varÄtu izmantot tÄs ietilpÄ«bu, es saku Å”im PVC, ka paÅ”laik nepiecieÅ”ami tikai 10 GB". Visbeidzot, treÅ”ais solis ir tas, ka jÅ«su pieprasÄ«jums tiek pievienots kÄ krÄtuve, un lietojumprogramma, kurai ir pods, kopiju komplekts vai kaut kas lÄ«dzÄ«gs, sÄk to izmantot. Ir svarÄ«gi atcerÄties, ka Å”is process sastÄv no 3 minÄtajÄm darbÄ«bÄm un ir mÄrogojams.
NÄkamajÄ slaidÄ ir parÄdÄ«ts AWS arhitektÅ«ras Kubernetes noturÄ«bas konteiners.
BrÅ«najÄ taisnstÅ«rÄ«, kas attÄlo Kubernetes kopu, ir viens galvenais mezgls un divi darba mezgli, kas norÄdÄ«ti dzeltenÄ krÄsÄ. VienÄ no darbinieka mezgliem ir oranžs pods, krÄtuve, replikas kontrolleris un zaļŔ Docker Couchbase konteiners. Klastera iekÅ”pusÄ virs mezgliem purpursarkans taisnstÅ«ris norÄda, ka pakalpojums ir pieejams no Ärpuses. Å Ä« arhitektÅ«ra ir ieteicama datu glabÄÅ”anai paÅ”Ä ierÄ«cÄ. Ja nepiecieÅ”ams, es varu saglabÄt savus datus EBS Ärpus klastera, kÄ parÄdÄ«ts nÄkamajÄ slaidÄ. Å is ir tipisks mÄrogoÅ”anas modelis, taÄu, izmantojot to, jÄÅem vÄrÄ finansiÄlais aspekts ā datu glabÄÅ”ana kaut kur tÄ«klÄ var bÅ«t dÄrgÄka nekÄ resursdatorÄ. IzvÄloties konteinerizÄcijas risinÄjumus, tas ir viens no nozÄ«mÄ«gÄkajiem argumentiem.
TÄpat kÄ ar Docker, ar Portworx varat izmantot pastÄvÄ«gus Kubernetes konteinerus.
Tas ir tas, ko paÅ”reizÄjÄ Kubernetes 1.6 terminoloÄ£ijÄ sauc par āStatefulSetā ā veids, kÄ strÄdÄt ar Stateful lietojumprogrammÄm, kas apstrÄdÄ notikumus, kas saistÄ«ti ar Pod apturÄÅ”anu un Graceful Shutdown veikÅ”anu. MÅ«su gadÄ«jumÄ Å”Ädas lietojumprogrammas ir datu bÄzes. ManÄ emuÄrÄ varat lasÄ«t, kÄ izveidot StatefulSet programmÄ Kubernetes, izmantojot Portworx.
ParunÄsim par attÄ«stÄ«bas aspektu. KÄ jau teicu, Docker ir 2 versijas - CE un EE, pirmajÄ gadÄ«jumÄ mÄs runÄjam par stabilu Community Edition versiju, kas tiek atjauninÄta reizi 3 mÄneÅ”os, atŔķirÄ«bÄ no ikmÄneÅ”a atjauninÄtÄs EE versijas. Varat lejupielÄdÄt Docker operÄtÄjsistÄmai Mac, Linux vai Windows. PÄc instalÄÅ”anas Docker tiks automÄtiski atjauninÄts, un to ir ļoti viegli sÄkt.
AttiecÄ«bÄ uz Kubernetes es dodu priekÅ”roku Minikube versijai ā tas ir labs veids, kÄ sÄkt darbu ar platformu, izveidojot kopu vienÄ mezglÄ. Lai izveidotu vairÄku mezglu klasterus, versiju izvÄle ir plaÅ”Äka: tÄs ir kops, kube-aws (CoreOS+AWS), kube-up (novecojuÅ”as). Ja vÄlaties izmantot uz AWS balstÄ«tu Kubernetes, iesaku pievienoties AWS SIG, kas katru piektdienu tiekas tieÅ”saistÄ un publicÄ dažÄdus interesantus materiÄlus par darbu ar AWS Kubernetes.
ApskatÄ«sim, kÄ Rolling Update tiek veikta Å”ajÄs platformÄs. Ja ir vairÄku mezglu klasteris, tad tiek izmantota noteikta attÄla versija, piemÄram, WildFly:1. SlÄ«doÅ”ais atjauninÄjums nozÄ«mÄ, ka attÄla versija tiek secÄ«gi aizstÄta ar jaunu katrÄ mezglÄ, vienu pÄc otra.
Lai to izdarÄ«tu, izmantoju komandu docker service update (pakalpojuma nosaukums), kurÄ norÄdu jauno WildFly:2 attÄla versiju un atjauninÄÅ”anas metodi update-parallelism 2. Skaitlis 2 nozÄ«mÄ, ka sistÄma atjauninÄs 2 lietojumprogrammas attÄlus. tajÄ paÅ”Ä laikÄ, tad 10 sekunžu atjauninÄÅ”anas aizkave 10s, pÄc kuras nÄkamie 2 attÄli tiks atjauninÄti vÄl 2 mezglos utt. Å is vienkÄrÅ”ais atjauninÄÅ”anas mehÄnisms tiek nodroÅ”inÄts kÄ daļa no Docker.
ProgrammÄ Kubernetes slÄ«doÅ”ais atjauninÄjums darbojas Å”Ädi. ReplikÄcijas kontrolleris rc izveido vienas un tÄs paÅ”as versijas kopiju kopu, un katrs Å”ajÄ webapp-rc pods ir nodroÅ”inÄts ar etiÄ·eti, kas atrodas mapÄ etcd. Kad man ir nepiecieÅ”ams pods, es izmantoju lietojumprogrammu pakalpojumu, lai piekļūtu etcd krÄtuvei, kas man nodroÅ”ina podziÅu, izmantojot norÄdÄ«to etiÄ·eti.
Å ajÄ gadÄ«jumÄ mums ir 3 podi replikÄcijas kontrollerÄ«, kurÄ darbojas lietojumprogramma WildFly versija 1. Atjauninot fonÄ, tiek izveidots cits replikÄcijas kontrolleris ar tÄdu paÅ”u nosaukumu un beigÄs indeksu - - xxxxx, kur x ir nejauÅ”i skaitļi, un ar tÄm paÅ”Äm etiÄ·etÄm. Tagad Application Service ir trÄ«s aplikÄcijas ar lietojumprogrammas veco versiju un trÄ«s komplekti ar jauno versiju jaunajÄ replikÄcijas kontrollerÄ«. PÄc tam vecie podi tiek dzÄsti, replikÄcijas kontrolleris ar jaunajiem podiem tiek pÄrdÄvÄts un nodots ekspluatÄcijÄ.
PÄriesim pie monitoringa. Docker ir daudz iebÅ«vÄtu uzraudzÄ«bas komandu. PiemÄram, docker konteineru statistikas komandrindas interfeiss ļauj katru sekundi parÄdÄ«t konsolei informÄciju par konteineru stÄvokli - procesora lietojumu, diska izmantoÅ”anu, tÄ«kla slodzi. Docker Remote API rÄ«ks nodroÅ”ina datus par to, kÄ klients sazinÄs ar serveri. Tas izmanto vienkÄrÅ”as komandas, bet ir balstÄ«ts uz Docker REST API. Å ajÄ gadÄ«jumÄ vÄrdi REST, Flash, Remote nozÄ«mÄ to paÅ”u. Sazinoties ar saimniekdatoru, tÄ ir REST API. Docker Remote API ļauj iegÅ«t vairÄk informÄcijas par konteineru darbinÄÅ”anu. ManÄ emuÄrÄ ir sniegta informÄcija par Ŕīs uzraudzÄ«bas izmantoÅ”anu ar Windows Server.
Docker sistÄmas notikumu pÄrraudzÄ«ba, palaižot vairÄku saimniekdatoru klasteru, ļauj iegÅ«t datus par resursdatora avÄriju vai konteinera avÄriju konkrÄtÄ resursdatorÄ, mÄrogoÅ”anas pakalpojumiem un tamlÄ«dzÄ«gi. SÄkot ar Docker 1.20, tajÄ ir iekļauts Prometheus, kas iegulst galapunktus esoÅ”ajÄs lietojumprogrammÄs. Tas ļauj saÅemt metriku, izmantojot HTTP, un parÄdÄ«t tos informÄcijas paneļos.
VÄl viena uzraudzÄ«bas funkcija ir cAdvisor (saÄ«sinÄjums no konteinera padomnieka). Tas analizÄ un nodroÅ”ina resursu lietojuma un veiktspÄjas datus no darbinÄmiem konteineriem, nodroÅ”inot Prometheus metriku tieÅ”i no kastes. Å Ä« rÄ«ka Ä«paÅ”Ä iezÄ«me ir tÄ, ka tas sniedz datus tikai par pÄdÄjÄm 60 sekundÄm. TÄpÄc jums ir jÄspÄj savÄkt Å”os datus un ievietot tos datu bÄzÄ, lai jÅ«s varÄtu uzraudzÄ«t ilgtermiÅa procesu. To var arÄ« izmantot, lai grafiski parÄdÄ«tu informÄcijas paneļa metriku, izmantojot Grafana vai Kibana. ManÄ emuÄrÄ ir detalizÄts apraksts par to, kÄ izmantot cAdvisor, lai pÄrraudzÄ«tu konteinerus, izmantojot Kibana informÄcijas paneli.
NÄkamajÄ slaidÄ ir parÄdÄ«ts, kÄ izskatÄs Prometheus galapunkta izvade, un attÄloÅ”anai pieejamÄs metrikas.
ApakÅ”ÄjÄ kreisajÄ stÅ«rÄ« ir redzama HTTP pieprasÄ«jumu, atbilžu utt. metrika, labajÄ pusÄ ir to grafiskais displejs.
Kubernetes ietver arÄ« iebÅ«vÄtus uzraudzÄ«bas rÄ«kus. Å ajÄ slaidÄ ir parÄdÄ«ts tipisks klasteris, kurÄ ir viens galvenÄ un trÄ«s darbinieka mezgli.
Katrs no darba mezgliem satur automÄtiski palaistu cAdvisor. TurklÄt ir Heapster, veiktspÄjas uzraudzÄ«bas un metrikas apkopoÅ”anas sistÄma, kas ir saderÄ«ga ar Kubernetes versiju 1.0.6 un jaunÄku versiju. Heapster ļauj apkopot ne tikai darba slodzes, podi un konteineru veiktspÄjas rÄdÄ«tÄjus, bet arÄ« notikumus un citus signÄlus, ko Ä£enerÄ visa klastera. Lai apkopotu datus, tas sazinÄs ar katras pod Kubelet, automÄtiski saglabÄ informÄciju InfluxDB datu bÄzÄ un izvada to kÄ metriku uz Grafana informÄcijas paneli. TomÄr paturiet prÄtÄ, ka, ja izmantojat miniKube, Ŕī funkcija pÄc noklusÄjuma nav pieejama, tÄpÄc uzraudzÄ«bai bÅ«s jÄizmanto papildinÄjumi. TÄtad tas viss ir atkarÄ«gs no tÄ, kur palaižat konteinerus un kÄdus uzraudzÄ«bas rÄ«kus varat izmantot pÄc noklusÄjuma un kuri jÄinstalÄ kÄ atseviŔķi papildinÄjumi.
NÄkamajÄ slaidÄ ir redzami Grafana informÄcijas paneļi, kas parÄda manu konteineru darbÄ«bas statusu. Å eit ir diezgan daudz interesantu datu. Protams, ir daudz komerciÄlu Docker un Kubernetes procesu uzraudzÄ«bas rÄ«ku, piemÄram, SysDig, DataDog, NewRelic. Dažiem no tiem ir pieejams 30 gadu bezmaksas izmÄÄ£inÄjuma periods, lai jÅ«s varÄtu mÄÄ£inÄt atrast sev vispiemÄrotÄko. PersonÄ«gi es gribÄtu izmantot SysDig un NewRelic, kas labi integrÄjas ar Kubernetes. Ir rÄ«ki, kas vienlÄ«dz labi integrÄjas gan Docker, gan Kubernetes platformÄs.
Dažas reklÄmas š
Paldies, ka palikÄt kopÄ ar mums. Vai jums patÄ«k mÅ«su raksti? Vai vÄlaties redzÄt interesantÄku saturu? Atbalsti mÅ«s, pasÅ«tot vai iesakot draugiem,
Dell R730xd 2x lÄtÄk Equinix Tier IV datu centrÄ AmsterdamÄ? Tikai Å”eit
Avots: www.habr.com