Kubernetes ir lielisks rÄ«ks Docker konteineru darbinÄÅ”anai klasteru ražoÅ”anas vidÄ. TomÄr ir problÄmas, kuras Kubernetes nevar atrisinÄt. BiežÄm ražoÅ”anas izvietoÅ”anÄm mums ir nepiecieÅ”ama pilnÄ«bÄ automatizÄta zilÄ/zaÄ¼Ä izvietoÅ”ana, lai izvairÄ«tos no dÄ«kstÄves procesÄ, kam arÄ« jÄapstrÄdÄ ÄrÄjie HTTP pieprasÄ«jumi un jÄveic SSL izkrauÅ”ana. Tam nepiecieÅ”ama integrÄcija ar slodzes balansÄtÄju, piemÄram, ha-proxy. VÄl viens izaicinÄjums ir paÅ”a Kubernetes klastera pusautomÄtiskÄ mÄrogoÅ”ana, darbojoties mÄkoÅa vidÄ, piemÄram, daļÄji samazinot klasteru naktÄ«.
Lai gan Kubernetes Ŕīs funkcijas nav pieejamas, tÄ nodroÅ”ina API, ko varat izmantot lÄ«dzÄ«gu problÄmu risinÄÅ”anai. RÄ«ki automatizÄtai Kubernetes klastera Blue/Green izvietoÅ”anai un mÄrogoÅ”anai tika izstrÄdÄti kÄ daļa no Cloud RTI projekta, kas tika izveidots, pamatojoties uz atvÄrtÄ pirmkoda pamata.
Å ajÄ rakstÄ ā video atÅ”ifrÄjumÄ ā ir parÄdÄ«ts, kÄ iestatÄ«t Kubernetes kopÄ ar citiem atvÄrtÄ pirmkoda komponentiem, lai izveidotu ražoÅ”anai gatavu vidi, kas pieÅem kodu no git commit bez ražoÅ”anas dÄ«kstÄves.
TÄtad, tiklÄ«dz jums ir piekļuve savÄm lietojumprogrammÄm no Ärpasaules, varat sÄkt pilnÄ«bÄ iestatÄ«t automatizÄciju, tas ir, nogÄdÄt to tÄdÄ stadijÄ, kurÄ varat veikt git commit un nodroÅ”inÄt, lai Ŕī git commit nonÄktu ražoÅ”anÄ. Protams, Ä«stenojot Ŕīs darbÄ«bas, ievieÅ”ot izvietoÅ”anu, mÄs nevÄlamies saskarties ar dÄ«kstÄvi. TÄtad jebkura Kubernetes automatizÄcija sÄkas ar API.
Kubernetes nav rÄ«ks, ko var produktÄ«vi izmantot no kastes. Protams, jÅ«s varat to darÄ«t, izmantot kubectl un tÄ tÄlÄk, bet tomÄr API ir visinteresantÄkÄ un noderÄ«gÄkÄ lieta Å”ajÄ platformÄ. Izmantojot API kÄ funkciju kopu, varat piekļūt gandrÄ«z visam, ko vÄlaties darÄ«t pakalpojumÄ Kubernetes. Pats kubectl izmanto arÄ« REST API.
Tas ir REST, tÄpÄc varat izmantot jebkuru valodu vai rÄ«ku, lai strÄdÄtu ar Å”o API, taÄu pielÄgotÄs bibliotÄkas padarÄ«s jÅ«su dzÄ«vi daudz vieglÄku. Mana komanda uzrakstÄ«ja 2 Å”Ädas bibliotÄkas: vienu Java/OSGi un vienu Go. Otrais netiek izmantots bieži, bet jebkurÄ gadÄ«jumÄ Å”Ä«s noderÄ«gas lietas ir jÅ«su rÄ«cÄ«bÄ. Tie ir daļÄji licencÄts atvÄrtÄ pirmkoda projekts. Ir daudz Å”Ädu bibliotÄku dažÄdÄm valodÄm, tÄpÄc varat izvÄlÄties sev vispiemÄrotÄkÄs.
TÄpÄc, pirms sÄkat automatizÄt izvietoÅ”anu, jums jÄpÄrliecinÄs, ka process netiks pakļauts dÄ«kstÄvei. PiemÄram, mÅ«su komanda veic ražoÅ”anas izvietoÅ”anu dienas vidÅ«, kad cilvÄki visvairÄk izmanto lietojumprogrammas, tÄpÄc ir svarÄ«gi izvairÄ«ties no procesa aizkavÄÅ”anÄs. Lai izvairÄ«tos no dÄ«kstÄves, tiek izmantotas 2 metodes: zilÄ/zaÄ¼Ä izvietoÅ”ana vai ritoÅ”Ä atjauninÄÅ”ana. PÄdÄjÄ gadÄ«jumÄ, ja darbojas 5 lietojumprogrammas kopijas, tÄs tiek atjauninÄtas secÄ«gi viena pÄc otras. Å Ä« metode darbojas lieliski, taÄu tÄ nav piemÄrota, ja izvietoÅ”anas procesa laikÄ vienlaikus darbojas dažÄdas lietojumprogrammas versijas. Å ÄdÄ gadÄ«jumÄ varat atjauninÄt lietotÄja interfeisu, kamÄr aizmugursistÄma darbojas vecajÄ versijÄ, un lietojumprogramma pÄrtrauks darboties. TÄpÄc no programmÄÅ”anas viedokļa strÄdÄt Å”Ädos apstÄkļos ir diezgan sarežģīti.
Tas ir viens no iemesliem, kÄpÄc mÄs dodam priekÅ”roku zilÄ/zaÄ¼Ä izvietoÅ”anai, lai automatizÄtu mÅ«su lietojumprogrammu izvietoÅ”anu. Izmantojot Å”o metodi, jums ir jÄnodroÅ”ina, lai vienlaikus bÅ«tu aktÄ«va tikai viena lietojumprogrammas versija.
ZilÄ/zaÄ¼Ä izvietoÅ”anas mehÄnisms izskatÄs Å”Ädi. MÄs saÅemam datplÅ«smu mÅ«su lietojumprogrammÄm, izmantojot ha-proxy, kas to pÄrsÅ«ta uz tÄs paÅ”as versijas lietojumprogrammas replikÄm.
Kad tiek veikta jauna izvietoÅ”ana, mÄs izmantojam Deployer, kuram tiek pieŔķirti jaunie komponenti un tiek izvietota jaunÄ versija. Lietojumprogrammas jaunas versijas izvietoÅ”ana nozÄ«mÄ, ka tiek āizceltaā jauna kopiju kopa, pÄc kuras Ŕīs jaunÄs versijas kopijas tiek palaistas atseviŔķÄ, jaunÄ podÄ. TomÄr ha-proxy par tiem neko nezina un pagaidÄm nenovirza tiem nekÄdu darba slodzi.
TÄpÄc, pirmkÄrt, ir jÄveic jauno veselÄ«bas pÄrbaudes versiju veiktspÄjas pÄrbaude, lai pÄrliecinÄtos, ka replikas ir gatavas slodzes apkalpoÅ”anai.
Visiem izvietoÅ”anas komponentiem ir jÄatbalsta kÄda veida veselÄ«bas pÄrbaude. TÄ var bÅ«t pavisam vienkÄrÅ”a HTTP izsaukuma pÄrbaude, saÅemot kodu ar statusu 200, vai arÄ« padziļinÄtÄka pÄrbaude, kurÄ pÄrbauda repliku savienojumu ar datu bÄzi un citiem pakalpojumiem, dinamiskÄs vides savienojumu stabilitÄti. , un vai viss sÄkas un darbojas pareizi. Å is process var bÅ«t diezgan sarežģīts.
Kad sistÄma pÄrbaudÄ«s, vai visas atjauninÄtÄs kopijas darbojas, Deployer atjauninÄs konfigurÄciju un nodos pareizo confd, kas pÄrkonfigurÄs ha-starpniekserveri.
Tikai pÄc tam datplÅ«sma tiks novirzÄ«ta uz podziÅu ar jaunÄs versijas kopijÄm, un vecais pods pazudÄ«s.
Å is mehÄnisms nav Kubernetes iezÄ«me. ZilÄ/zaļÄs izvietoÅ”anas koncepcija pastÄv jau diezgan ilgu laiku, un tajÄ vienmÄr ir izmantots slodzes lÄ«dzsvarotÄjs. PirmkÄrt, jÅ«s novirzÄt visu trafiku uz lietojumprogrammas veco versiju, un pÄc atjauninÄÅ”anas jÅ«s to pilnÄ«bÄ pÄrsÅ«tÄt uz jauno versiju. Å is princips tiek izmantots ne tikai Kubernetes.
Tagad es jÅ«s iepazÄ«stinÄÅ”u ar jaunu izvietoÅ”anas komponentu - Deployer, kas veic veselÄ«bas pÄrbaudes, pÄrkonfigurÄ starpniekserverus utt. Å is ir jÄdziens, kas neattiecas uz Ärpasauli un pastÄv Kubernetes iekÅ”ienÄ. Es jums parÄdÄ«Å”u, kÄ jÅ«s varat izveidot savu Deployer koncepciju, izmantojot atvÄrtÄ pirmkoda rÄ«kus.
TÄtad, pirmÄ lieta, ko Deployer dara, ir izveidot RC replikÄcijas kontrolieri, izmantojot Kubernetes API. Å Ä« API izveido aplikumus un pakalpojumus turpmÄkai izvietoÅ”anai, tas ir, mÅ«su lietojumprogrammÄm izveido pilnÄ«gi jaunu klasteru. TiklÄ«dz RC bÅ«s pÄrliecinÄts, ka replikas ir sÄkuÅ”Äs, tÄ veiks to funkcionalitÄtes veselÄ«bas pÄrbaudi. Lai to izdarÄ«tu, Deployer izmanto komandu GET /health. Tas palaiž atbilstoÅ”os skenÄÅ”anas komponentus un pÄrbauda visus elementus, kas atbalsta klastera darbÄ«bu.
Kad visi podi ir ziÅojuÅ”i par savu stÄvokli, Deployer izveido jaunu konfigurÄcijas elementu ā etcd sadalÄ«to krÄtuvi, ko Kubernetes izmanto iekÅ”Äji, tostarp saglabÄ slodzes lÄ«dzsvara konfigurÄcijas konfigurÄciju. MÄs rakstÄm datus uz etcd un nelielu rÄ«ku, ko sauc par confd monitors etcd, lai iegÅ«tu jaunus datus.
Ja tas konstatÄ izmaiÅas sÄkotnÄjÄ konfigurÄcijÄ, tas Ä£enerÄ jaunu iestatÄ«jumu failu un pÄrsÅ«ta to uz ha-starpniekserveri. Å ÄdÄ gadÄ«jumÄ ha-starpniekserveris tiek atsÄknÄts, nezaudÄjot savienojumus, un adresÄ slodzi jauniem pakalpojumiem, kas nodroÅ”ina mÅ«su lietojumprogrammu jaunÄs versijas darbÄ«bu.
KÄ redzat, neskatoties uz komponentu pÄrpilnÄ«bu, Å”eit nav nekÄ sarežģīta. Jums vienkÄrÅ”i jÄpievÄrÅ” lielÄka uzmanÄ«ba API un utt. Es vÄlos jums pastÄstÄ«t par atvÄrtÄ pirmkoda izvietotÄju, ko mÄs paÅ”i izmantojam - Amdatu Kubernetes Deployer.
Tas ir rÄ«ks Kubernetes izvietoÅ”anas organizÄÅ”anai, un tam ir Å”Ädas funkcijas:
- ZilÄ/zaÄ¼Ä izvietoÅ”ana;
- ÄrÄjÄ slodzes lÄ«dzsvara iestatÄ«Å”ana;
- izvietoÅ”anas deskriptora pÄrvaldÄ«ba;
- vadīt faktisko izvietoŔanu;
- VeselÄ«bas pÄrbaužu funkcionalitÄtes pÄrbaude izvietoÅ”anas laikÄ;
- vides mainÄ«go ievieÅ”ana podiÅos.
Å is izvietotÄjs ir izveidots, izmantojot Kubernetes API, un nodroÅ”ina REST API, lai pÄrvaldÄ«tu rokturus un izvietoÅ”anu, kÄ arÄ« Websocket API žurnÄlu straumÄÅ”anai izvietoÅ”anas procesa laikÄ.
Tas ievieto slodzes lÄ«dzsvara konfigurÄcijas datus programmÄ etcd, tÄpÄc jums nav jÄizmanto ha-starpniekserveris ar tÅ«lÄ«tÄju atbalstu, bet vienkÄrÅ”i jÄizmanto savs slodzes lÄ«dzsvara konfigurÄcijas fails. Amdatu Deployer ir rakstÄ«ts Go, tÄpat kÄ pati Kubernetes, un to ir licencÄjis Apache.
Pirms sÄku lietot Å”o izvietotÄja versiju, es izmantoju Å”Ädu izvietoÅ”anas deskriptoru, kas norÄda man nepiecieÅ”amos parametrus.
Viens no svarÄ«gajiem Ŕī koda parametriem ir karoga āuseHealthCheckā iespÄjoÅ”ana. Mums ir jÄnorÄda, ka izvietoÅ”anas procesa laikÄ ir jÄveic saprÄta pÄrbaude. Å o iestatÄ«jumu var atspÄjot, ja izvietoÅ”anÄ tiek izmantoti treÅ”Äs puses konteineri, kas nav jÄverificÄ. Å is deskriptors norÄda arÄ« repliku skaitu un priekÅ”gala URL, kas nepiecieÅ”ams ha starpniekserverim. BeigÄs ir pod specifikÄcijas karodziÅÅ” "podspec", kas izsauc Kubernetes informÄciju par porta konfigurÄciju, attÄlu utt. Å is ir diezgan vienkÄrÅ”s JSON deskriptors.
VÄl viens rÄ«ks, kas ir daļa no atvÄrtÄ pirmkoda Amdatu projekta, ir Deploymentctl. Tam ir lietotÄja saskarne izvietoÅ”anas konfigurÄÅ”anai, tiek saglabÄta izvietoÅ”anas vÄsture, un tajÄ ir tÄ«mekļa aizÄ·eres treÅ”o puÅ”u lietotÄju un izstrÄdÄtÄju atzvanÄ«Å”anai. JÅ«s nedrÄ«kstat izmantot lietotÄja interfeisu, jo pats Amdatu Deployer ir REST API, taÄu Ŕī saskarne var ievÄrojami atvieglot izvietoÅ”anu, neiesaistot API. Deploymentctl ir rakstÄ«ts OSGi/Vertx, izmantojot Angular 2.
Tagad es parÄdÄ«Å”u iepriekÅ” minÄto uz ekrÄna, izmantojot iepriekÅ” ierakstÄ«tu ierakstu, lai jums nebÅ«tu jÄgaida. MÄs izvietosim vienkÄrÅ”u Go lietojumprogrammu. Neuztraucieties, ja iepriekÅ” neesat izmÄÄ£inÄjis Go, tÄ ir ļoti vienkÄrÅ”a lietojumprogramma, tÄpÄc jums vajadzÄtu to izdomÄt.
Å eit mÄs izveidojam HTTP serveri, kas reaÄ£Ä tikai uz /health, tÄpÄc Ŕī lietojumprogramma pÄrbauda tikai veselÄ«bas pÄrbaudi un neko citu. Ja pÄrbaude iztur, tiek izmantota tÄlÄk norÄdÄ«tÄ JSON struktÅ«ra. TajÄ ir ietverta lietojumprogrammas versija, kuru izvietos izvietotÄjs, ziÅojums, ko redzat faila augÅ”daļÄ, un BÅ«la datu tips ā neatkarÄ«gi no tÄ, vai mÅ«su lietojumprogramma darbojas vai ne.
Nedaudz krÄpjos ar pÄdÄjo rindiÅu, jo faila augÅ”pusÄ ievietoju fiksÄtu BÅ«la vÄrtÄ«bu, kas man turpmÄk palÄ«dzÄs izvietot pat āneveselÄ«guā aplikÄciju. Ar to mÄs nodarbosimies vÄlÄk.
TÄtad sÄksim. Vispirms mÄs pÄrbaudÄm, vai nav nevienas darbÄ«bas, izmantojot komandu ~ kubectl get pods, un, pamatojoties uz to, ka no priekÅ”gala URL nav atbildes, mÄs pÄrliecinÄmies, ka paÅ”laik netiek veikta neviena izvietoÅ”ana.
NÄkamajÄ ekrÄnÄ tiek parÄdÄ«ta manis pieminÄtÄ Deploymentctl saskarne, kurÄ ir iestatÄ«ti izvietoÅ”anas parametri: nosaukumvieta, lietojumprogrammas nosaukums, izvietoÅ”anas versija, reprodukciju skaits, priekÅ”gala URL, konteinera nosaukums, attÄls, resursu ierobežojumi, porta numurs stÄvokļa pÄrbaudei, utt. Resursu ierobežojumi ir ļoti svarÄ«gi, jo tie ļauj izmantot maksimÄli iespÄjamo aparatÅ«ras daudzumu. Å eit varat skatÄ«t arÄ« izvietoÅ”anas žurnÄlu.
Ja tagad atkÄrtojat komandu ~ kubectl get pods, jÅ«s varat redzÄt, ka sistÄma āsasalstā uz 20 sekundÄm, kuru laikÄ tiek pÄrkonfigurÄts ha-proxy. PÄc tam tiek palaists pods, un mÅ«su repliku var redzÄt izvietoÅ”anas žurnÄlÄ.
Es no video izgriezu 20 sekunžu gaidÄ«Å”anu, un tagad ekrÄnÄ var redzÄt, ka ir izvietota lietojumprogrammas pirmÄ versija. Tas viss tika darÄ«ts, izmantojot tikai lietotÄja interfeisu.
Tagad izmÄÄ£inÄsim otro versiju. Lai to izdarÄ«tu, nomainu lietojumprogrammas ziÅojumu no "Sveika, Kubernetes!" āSveiki, izvietotÄjs!ā, sistÄma izveido Å”o attÄlu un ievieto to Docker reÄ£istrÄ, pÄc tam mÄs vienkÄrÅ”i vÄlreiz noklikŔķiniet uz pogas āIzvietotā logÄ Deploymentctl. Å ajÄ gadÄ«jumÄ izvietoÅ”anas žurnÄls tiek automÄtiski palaists tÄdÄ paÅ”Ä veidÄ, kÄ tas notika, izvietojot pirmo lietojumprogrammas versiju.
Komanda ~ kubectl get pods parÄda, ka paÅ”laik darbojas 2 lietojumprogrammas versijas, bet priekÅ”gals parÄda, ka joprojÄm darbojas 1. versija.
Slodzes lÄ«dzsvarotÄjs gaida, lÄ«dz tiks pabeigta stÄvokļa pÄrbaude, pirms novirza trafiku uz jauno versiju. PÄc 20 sekundÄm mÄs pÄrslÄdzamies uz curl un redzam, ka tagad ir izvietota lietojumprogrammas 2. versija, un pirmÄ ir izdzÄsta.
TÄ bija āveselÄ«gasā lietojumprogrammas izvietoÅ”ana. ApskatÄ«sim, kas notiks, ja jaunai lietojumprogrammas versijai es nomainÄ«Å”u parametru VeselÄ«gs no patiess uz nepatiesu, tas ir, mÄÄ£inu izvietot neveselÄ«gu lietojumprogrammu, kas nav izturÄjusi veselÄ«bas pÄrbaudi. Tas var notikt, ja lietojumprogrammÄ izstrÄdes stadijÄ tika pieļautas dažas konfigurÄcijas kļūdas un tÄ tika nosÅ«tÄ«ta ražoÅ”anÄ Å”ÄdÄ formÄ.
KÄ redzat, izvietoÅ”ana notiek, izmantojot visas iepriekÅ” minÄtÄs darbÄ«bas, un ~kubectl get pods parÄda, ka abi podi darbojas. Bet atŔķirÄ«bÄ no iepriekÅ”ÄjÄs izvietoÅ”anas žurnÄlÄ tiek parÄdÄ«ts taimauta statuss. Tas ir, sakarÄ ar to, ka veselÄ«bas pÄrbaude neizdevÄs, jauno lietojumprogrammas versiju nevar izvietot. RezultÄtÄ redzat, ka sistÄma ir atgriezusies pie lietojumprogrammas vecÄs versijas izmantoÅ”anas un jaunÄ versija vienkÄrÅ”i ir atinstalÄta.
LabÄ lieta ir tÄda, ka pat tad, ja lietojumprogrammÄ tiek saÅemts liels skaits vienlaicÄ«gu pieprasÄ«jumu, tie pat nepamanÄ«s dÄ«kstÄves laiku, Ä«stenojot izvietoÅ”anas procedÅ«ru. Ja testÄjat Å”o lietojumprogrammu, izmantojot Gatling sistÄmu, kas tai nosÅ«ta pÄc iespÄjas vairÄk pieprasÄ«jumu, neviens no Å”iem pieprasÄ«jumiem netiks atmests. Tas nozÄ«mÄ, ka mÅ«su lietotÄji pat nepamanÄ«s versiju atjauninÄjumus reÄllaikÄ. Ja tas neizdodas, darbs tiks turpinÄts ar veco versiju; ja tas bÅ«s veiksmÄ«gs, lietotÄji pÄrslÄgsies uz jauno versiju.
Ir tikai viena lieta, kas var neizdoties - ja veselÄ«bas pÄrbaude izdodas, bet lietojumprogramma neizdodas, tiklÄ«dz tai tiek piemÄrota darba slodze, tas ir, sabrukums notiks tikai pÄc izvietoÅ”anas pabeigÅ”anas. Å ajÄ gadÄ«jumÄ jums bÅ«s manuÄli jÄatgriežas pie vecÄs versijas. TÄtad, mÄs apskatÄ«jÄm, kÄ izmantot Kubernetes ar tam paredzÄtajiem atvÄrtÄ pirmkoda rÄ«kiem. IzvietoÅ”anas process bÅ«s daudz vienkÄrÅ”Äks, ja Å”os rÄ«kus iebÅ«vÄsit savos Build/Deploy cauruļvados. TajÄ paÅ”Ä laikÄ, lai sÄktu izvietoÅ”anu, varat izmantot vai nu lietotÄja saskarni, vai pilnÄ«bÄ automatizÄt Å”o procesu, izmantojot, piemÄram, apÅemÅ”anos apgÅ«t.
MÅ«su Build Server izveidos Docker attÄlu, ievietos to Docker Hub vai jebkurÄ jÅ«su izmantotajÄ reÄ£istrÄ. Docker Hub atbalsta tÄ«mekļa aizÄ·eri, tÄpÄc mÄs varam aktivizÄt attÄlo izvietoÅ”anu, izmantojot Deployer, kÄ parÄdÄ«ts iepriekÅ”. TÄdÄ veidÄ jÅ«s varat pilnÄ«bÄ automatizÄt lietojumprogrammas izvietoÅ”anu potenciÄlajÄ ražoÅ”anÄ.
PÄrejam pie nÄkamÄs tÄmas - Kubernetes klastera mÄrogoÅ”ana. Å emiet vÄrÄ, ka kubectl komanda ir mÄrogoÅ”anas komanda. Ar lielÄku palÄ«dzÄ«bu mÄs varam viegli palielinÄt kopiju skaitu mÅ«su esoÅ”ajÄ klasterÄ«. TomÄr praksÄ mÄs parasti vÄlamies palielinÄt mezglu, nevis pÄkstu skaitu.
TajÄ paÅ”Ä laikÄ darba laikÄ, iespÄjams, bÅ«s jÄpalielina, bet naktÄ«, lai samazinÄtu Amazon pakalpojumu izmaksas, jums, iespÄjams, bÅ«s jÄsamazina darbojoÅ”os lietojumprogrammu gadÄ«jumu skaits. Tas nenozÄ«mÄ, ka pietiks ar mÄrogoÅ”anu tikai ar podiÅu skaitu, jo pat tad, ja kÄds no mezgliem ir dÄ«kstÄvÄ, jums par to joprojÄm bÅ«s jÄmaksÄ Amazon. Tas nozÄ«mÄ, ka kopÄ ar pÄkstÄ«m ir nepiecieÅ”ams mÄrogot izmantoto iekÄrtu skaitu.
Tas var bÅ«t sarežģīti, jo neatkarÄ«gi no tÄ, vai mÄs izmantojam Amazon vai citu mÄkoÅpakalpojumu, Kubernetes neko nezina par izmantoto maŔīnu skaitu. Tam trÅ«kst rÄ«ka, kas ļauj mÄrogot sistÄmu mezgla lÄ«menÄ«.
TÄpÄc mums bÅ«s jÄrÅ«pÄjas gan par mezgliem, gan par pÄkstÄ«m. MÄs varam viegli mÄrogot jaunu mezglu palaiÅ”anu, izmantojot AWS API un mÄrogoÅ”anas grupas maŔīnas, lai konfigurÄtu Kubernetes darbinieku mezglu skaitu. Varat arÄ« izmantot mÄkoÅa iniciatoru vai lÄ«dzÄ«gu skriptu, lai reÄ£istrÄtu mezglus Kubernetes klasterÄ«.
JaunÄ maŔīna sÄkas mÄrogoÅ”anas grupÄ, sÄk darboties kÄ mezgls, reÄ£istrÄjas galvenÄ reÄ£istrÄ un sÄk darboties. PÄc tam varat palielinÄt reprodukciju skaitu, ko izmantot iegÅ«tajos mezglos. SamazinÄÅ”ana prasa vairÄk pūļu, jo jums ir jÄpÄrliecinÄs, ka Å”Äds solis neizraisa jau darbojoÅ”os lietojumprogrammu iznÄ«cinÄÅ”anu pÄc ānevajadzÄ«goā maŔīnu izslÄgÅ”anas. Lai novÄrstu Å”Ädu scenÄriju, mezgliem ir jÄiestata statuss āneplÄnojamsā. Tas nozÄ«mÄ, ka noklusÄjuma plÄnotÄjs ignorÄs Å”os mezglus, plÄnojot DaemonSet podi. PlÄnotÄjs neko neizdzÄsÄ«s no Å”iem serveriem, bet arÄ« nepalaidÄ«s tajos jaunus konteinerus. NÄkamais solis ir iztukÅ”ot iztukÅ”oÅ”anas mezglu, tas ir, pÄrslÄgt no tÄ darbÄ«gos blokus uz citu maŔīnu vai citiem mezgliem, kuriem ir pietiekama jauda. Kad esat pÄrliecinÄjies, ka Å”ajos mezglos vairs nav konteineru, varat tos noÅemt no Kubernetes. PÄc tam Kubernetes tie vienkÄrÅ”i pÄrstÄs pastÄvÄt. TÄlÄk jums ir jÄizmanto AWS API, lai atspÄjotu nevajadzÄ«gos mezglus vai maŔīnas.
Varat izmantot Amdatu Scalerd, citu atvÄrtÄ koda mÄrogoÅ”anas rÄ«ku, kas ir lÄ«dzÄ«gs AWS API. Tas nodroÅ”ina CLI, lai pievienotu vai noÅemtu mezglus klasterÄ«. TÄs interesantÄ funkcija ir iespÄja konfigurÄt plÄnotÄju, izmantojot Å”Ädu json failu.
ParÄdÄ«tais kods samazina klastera jaudu uz pusi nakts periodÄ. Tas konfigurÄ gan pieejamo kopiju skaitu, gan vÄlamo Amazon klastera jaudu. Izmantojot Å”o plÄnotÄju, tiks automÄtiski samazinÄts mezglu skaits naktÄ« un palielinÄts no rÄ«ta, tÄdÄjÄdi ietaupot izmaksas par mezglu izmantoÅ”anu no mÄkoÅpakalpojuma, piemÄram, Amazon. Å Ä« funkcija nav iebÅ«vÄta Kubernetes, taÄu, izmantojot Scalerd, varÄsit mÄrogot Å”o platformu, kÄ vien vÄlaties.
Es vÄlos norÄdÄ«t, ka daudzi cilvÄki man saka: "Tas viss ir labi, bet kÄ ar manu datubÄzi, kas parasti ir statiska?" KÄ jÅ«s varat palaist kaut ko lÄ«dzÄ«gu dinamiskÄ vidÄ, piemÄram, Kubernetes? ManuprÄt, to nevajadzÄtu darÄ«t, nevajag mÄÄ£inÄt palaist datu noliktavu Kubernetes. Tas ir tehniski iespÄjams, un internetÄ ir pamÄcÄ«bas par Å”o tÄmu, taÄu tas nopietni sarežģīs jÅ«su dzÄ«vi.
JÄ, Kubernetes pastÄv pastÄvÄ«gu veikalu koncepcija, un jÅ«s varat mÄÄ£inÄt palaist tÄdus datu veikalus kÄ Mongo vai MySQL, taÄu tas ir diezgan darbietilpÄ«gs uzdevums. Tas ir saistÄ«ts ar faktu, ka datu noliktavas pilnÄ«bÄ neatbalsta mijiedarbÄ«bu ar dinamisku vidi. LielÄkajai daļai datu bÄzu ir nepiecieÅ”ama ievÄrojama konfigurÄcija, ieskaitot klastera manuÄlu konfigurÄÅ”anu, nepatÄ«k automÄtiskÄ mÄrogoÅ”ana un citas lÄ«dzÄ«gas lietas.
TÄpÄc jums nevajadzÄtu sarežģīt savu dzÄ«vi, mÄÄ£inot vadÄ«t datu noliktavu Kubernetes. OrganizÄjiet savu darbu tradicionÄlÄ veidÄ, izmantojot pazÄ«stamos pakalpojumus, un vienkÄrÅ”i nodroÅ”iniet Kubernetes iespÄju tos izmantot.
NoslÄdzot tÄmu, vÄlos jÅ«s iepazÄ«stinÄt ar Cloud RTI platformu, kuras pamatÄ ir Kubernetes un pie kuras strÄdÄ mana komanda. Tas nodroÅ”ina centralizÄtu reÄ£istrÄÅ”anu, lietojumprogrammu un klasteru uzraudzÄ«bu un daudzas citas noderÄ«gas funkcijas, kas noderÄs. Tas izmanto dažÄdus atvÄrtÄ pirmkoda rÄ«kus, piemÄram, Grafana, lai parÄdÄ«tu uzraudzÄ«bu.
Bija jautÄjums, kÄpÄc ar Kubernetes izmantot ha-proxy slodzes balansÄtÄju. Labs jautÄjums, jo paÅ”laik ir 2 slodzes lÄ«dzsvaroÅ”anas lÄ«meÅi. Kubernetes pakalpojumi joprojÄm atrodas virtuÄlajÄs IP adresÄs. JÅ«s nevarat tos izmantot ÄrÄjo saimniekdatoru portiem, jo, ja Amazon pÄrslogos savu mÄkoÅa resursdatoru, adrese mainÄ«sies. TÄpÄc mÄs ievietojam ha-proxy pakalpojumu priekÅ”Ä - lai izveidotu statiskÄku trafika struktÅ«ru, lai netraucÄti sazinÄtos ar Kubernetes.
VÄl viens labs jautÄjums ir, kÄ jÅ«s varat parÅ«pÄties par datu bÄzes shÄmas izmaiÅÄm, veicot zilo/zaļo izvietoÅ”anu? Fakts ir tÄds, ka neatkarÄ«gi no Kubernetes izmantoÅ”anas datu bÄzes shÄmas maiÅa ir sarežģīts uzdevums. Jums jÄpÄrliecinÄs, ka vecÄ un jaunÄ shÄma ir saderÄ«ga, pÄc tam varat atjauninÄt datu bÄzi un pÄc tam atjauninÄt paÅ”as lietojumprogrammas. Varat nomainÄ«t datu bÄzi un pÄc tam atjauninÄt lietojumprogrammas. Es zinu cilvÄkus, kuri ir sÄknÄjuÅ”i pilnÄ«gi jaunu datu bÄzes klasteru ar jaunu shÄmu. Å Ä« ir iespÄja, ja jums ir datu bÄze bez shÄmÄm, piemÄram, Mongo, taÄu tas jebkurÄ gadÄ«jumÄ nav viegls uzdevums. Ja jums nav papildu jautÄjumu, paldies par uzmanÄ«bu!
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