Kugadzira-yakagadzirira mifananidzo yek8s

Iyi nyaya ndeye mashandisiro atinoita midziyo munzvimbo yekugadzira, kunyanya Kubernetes. Chinyorwa chakazvipira kuunganidza metrics uye matanda kubva mumidziyo, pamwe nekuvaka mifananidzo.

Kugadzira-yakagadzirira mifananidzo yek8s

Isu tinobva kukambani yefintech Exness, iyo inogadzira masevhisi ekutengesa online uye fintech zvigadzirwa zveB2B neB2C. R&D yedu ine zvikwata zvakawanda zvakasiyana, dhipatimendi rekusimudzira rine vashandi zana.

Isu tinomiririra timu ine basa repuratifomu kuti vagadziri vedu vatore nekumhanyisa kodhi. Kunyanya, isu tine basa rekuunganidza, kuchengetedza uye kushuma metrics, matanda, uye zviitiko kubva kumaapplication. Isu parizvino tinoshanda zvingangoita zviuru zvitatu zveDocker midziyo munzvimbo yekugadzira, chengetedza yedu 50 TB hombe yekuchengetedza data, uye nekupa zvigadziriso zvekuvaka zvakavakwa zvakatenderedza zvivakwa zvedu: Kubernetes, Rancher, uye vakasiyana siyana vanopa makore. 

Kurudziro yedu

Chii chiri kutsva? Hapana anogona kupindura. Choto chiripi? Zvakaoma kunzwisisa. Yakabata moto rinhi? Unogona kuzviwana, asi kwete ipapo ipapo. 

Kugadzira-yakagadzirira mifananidzo yek8s

Sei mamwe midziyo yakamira asi mamwe akadonha? Nderipi mudziyo waiva nemhosva? Mushure mezvose, kunze kwemidziyo yakafanana, asi mukati meimwe neimwe ine Neo yayo.

Kugadzira-yakagadzirira mifananidzo yek8s

Vagadziri vedu vakomana vanokwanisa. Vanoita mabasa akanaka anounza purofiti kukambani. Asi pane kukundikana kana macontainer ane application arasika. Imwe mudziyo inodya yakawandisa CPU, imwe inoshandisa network, yechitatu inoshandisa I / O mashandiro, uye yechina haina kunyatso kujeka kuti inoitei nezvigadziko. Zvose zvinodonha uye chikepe chinonyura. 

Agents

Kuti tinzwisise zviri kuitika mukati, takasarudza kuisa vamiririri zvakananga mumidziyo.

Kugadzira-yakagadzirira mifananidzo yek8s

Maajenti aya ari kudzora zvirongwa zvinoita kuti midziyo irambe iri mugwara rekuti asapwane. Maajenti akamisikidzwa, uye izvi zvinobvumira nzira yakamisikidzwa yekusevhisa midziyo. 

Mune yedu kesi, vamiririri vanofanirwa kupa matanda mune yakajairwa fomati, akamaka uye akatsikirirwa. Vanofanirawo kutipa ma metrics akajairwa anowedzerwa kubva kune bhizinesi application maonero.

MaAgents anorevawo zvishandiso zvekushanda nekugadzirisa izvo zvinogona kushanda mune akasiyana orchestration masisitimu anotsigira akasiyana mifananidzo (Debian, Alpine, Centos, nezvimwewo).

Chekupedzisira, vamiririri vanofanirwa kutsigira iri nyore CI/CD inosanganisira Docker mafaera. Zvikasadaro, ngarava inoputsika, nekuti midziyo ichatanga kuendeswa kune "yakakombama" njanji.

Vaka maitiro uye chinangwa chemufananidzo mudziyo

Kuchengeta zvese zvakamira uye zvinogoneka, imwe mhando yeyakajairwa kuvaka maitiro inoda kuteverwa. Naizvozvo, isu takasarudza kuunganidza midziyo nemidziyo - iyi kudzokorora.

Kugadzira-yakagadzirira mifananidzo yek8s

Pano midziyo inomiririrwa nemapepa akasimba. Panguva imwe cheteyo, vakasarudza kuisa midziyo yekugovera mavari kuitira kuti β€œupenyu husaite semaraspberries.” Sei izvi zvakaitwa, tichatsanangura pasi apa.
 
Mhedzisiro yacho chishandiso chekuvaka-shanduro-chaiyo chigaba chinonongedza mavhezheni chaiwo ekugovera uye chaiwo script shanduro.

Tinoishandisa sei? Tine Docker Hub ine mudziyo. Isu tinoiratidzira mukati mehurongwa hwedu kubvisa zvinotsamira zvekunze. Mhedzisiro yacho igaba rakaiswa yero. Isu tinogadzira template yekuisa zvese zvakagoverwa uye zvinyorwa zvatinoda mumudziyo. Mushure meizvozvo, isu tinounganidza yakagadzirira-kushandisa-chifananidzo: vanogadzira vanoisa kodhi uye zvimwe zvezvavo zvakakosha zvinoenderana nazvo. 

Chii chakanaka pamusoro pemaitiro aya? 

  • Chekutanga, yakazara vhezheni kutonga kwekuvaka maturusi - kuvaka mudziyo, script uye kugovera shanduro. 
  • Chechipiri, isu takawana kumira-mira: isu tinogadzira matemplate, epakati uye akagadzirira-kushandisa-chifananidzo nenzira imwechete. 
  • Chechitatu, midziyo inotipa kutakura. Nhasi isu tinoshandisa Gitlab, uye mangwana tichachinjira kuTeamCity kana Jenkins uye isu tichakwanisa kumhanyisa midziyo yedu nenzira imwechete. 
  • Chechina, kuderedza kutsamira. Yakanga isiri masanga kuti takaisa makiti ekugovera mumudziyo, nekuti izvi zvinotitendera kuti tidzivise kurodha kubva paInternet nguva dzese. 
  • Chechishanu, kumhanya kwekuvaka kwakawedzera - kuvapo kwemakopi emunharaunda emifananidzo kunokubvumira kuti urege kutambisa nguva pakurodha, sezvo paine mufananidzo wenzvimbo. 

Mune mamwe mazwi, isu takawana inodzorwa uye inochinjika gungano maitiro. Isu tinoshandisa maturusi mamwechete kuvaka chero midziyo yakazara yakazara. 

Nzira yedu yekuvaka inoshanda sei

Kugadzira-yakagadzirira mifananidzo yek8s

Gungano rinotangwa nemurairo mumwe chete, maitiro acho anoitwa mumufananidzo (wakasimbiswa mutsvuku). Iyo inovandudza ine Docker faira (yakasimudzwa muyero), isu tinoipa, tichitsiva zvinosiyana nehunhu. Uye munzira isu tinowedzera misoro uye tsoka - ava ndivo vamiririri vedu. 

Musoro unowedzera kugovera kubva kumifananidzo inoenderana. Uye tsoka inoisa masevhisi edu mukati, inogadzirisa kutangwa kwebasa, kutema miti uye mamwe maajenti, inotsiva yekupinda, nezvimwe. 

Kugadzira-yakagadzirira mifananidzo yek8s

Takafunga kwenguva refu kuti toisa supervisor here. Pakupedzisira, takasarudza kuti taimuda. Isu takasarudza S6. Mutariri anopa manejimendi emidziyo: inokutendera kuti ubatanidze kwairi kana main process ikaparara uye inopa maneja manejimendi emudziyo pasina kuigadzira zvakare. Logs uye metrics maitiro anomhanya mukati memudziyo. Vanodawo kudzorwa neimwe nzira, uye tinoita izvi tichibatsirwa nemutariri. Pakupedzisira, iyo S6 inotarisira kuchengetedza imba, kugadzirisa zviratidzo uye mamwe mabasa.

Sezvo isu tichishandisa akasiyana orchestration masisitimu, mushure mekuvaka uye kumhanya, mudziyo unofanirwa kunzwisisa kuti uri munzvimbo ipi uye kuita zvinoenderana nemamiriro ezvinhu. Semuyenzaniso:
Izvi zvinotibvumira kuvaka chifananidzo chimwe chete nekuchimhanyisa mumasisitimu akasiyana e orchestration, uye chinozotangwa tichifunga nezve chaiwo eiyi orchestration system.

 Kugadzira-yakagadzirira mifananidzo yek8s

Kune imwechete mudziyo isu tinowana akasiyana maitiro emiti muDocker uye Kubernetes:

Kugadzira-yakagadzirira mifananidzo yek8s

Iyo payload inoitwa pasi pekutariswa kweS6. Teerera kune muunganidzi uye zviitiko - ava ndivo vamiririri vedu vane mutoro wematanda uye metrics. Kubernetes haana, asi Docker anayo. Sei? 

Kana tikatarisa kutsanangurwa kwe "pod" (pano - Kubernetes pod), tichaona kuti chiitiko chigadziko chinoitwa mune pod, iyo ine yakaparadzana muunganidzi mudziyo inoita basa rekuunganidza metrics nematanda. Tinogona kushandisa kugona kweKubernetes: kumhanya midziyo mune imwe pod, mune imwechete maitiro uye / kana network nzvimbo. Chaizvoizvo suma vamiririri vako uye ita mamwe mabasa. Uye kana mudziyo mumwe chete wakatangwa muDocker, unogashira hunyanzvi hwese sekubuda, kureva kuti, ichakwanisa kuendesa matanda nemametrics, sezvo vamiririri vachizotangwa mukati. 

Metrics uye matanda

Kuendesa metrics uye matanda ibasa rakaoma. Pane zvinhu zvakati kuti pachisarudzo chake.
Izvo zvivakwa zvinogadzirwa kuti zviitwe mubhadharo wekubhadhara, uye kwete yekutumira kwakawanda kwematanda. Ndokureva kuti, maitiro aya anofanirwa kuitwa neashoma mudziyo wemidziyo zvinodiwa. Isu tinoedza kubatsira vagadziri vedu: "Tora chigadziko cheDocker Hub, chimhanye, uye tinogona kuendesa matanda." 

Chechipiri chikamu ndechekudzikamisa huwandu hwematanda. Kana kuwedzera kwehuwandu hwematanda kukaitika mumidziyo yakati wandei (chishandiso chinoburitsa stack-trace muchiuno), mutoro uri paCPU, nzira dzekutaurirana, uye log processing system inowedzera, uye izvi zvinokanganisa mashandiro emuenzi se yakazara uye zvimwe midziyo pamubati, zvino dzimwe nguva izvi zvinotungamira ku "kudonha" kwemuenzi. 

Chinhu chechitatu ndechekuti zvinodikanwa kutsigira nzira dzakawanda dzekuunganidza metrics sezvinobvira kunze kwebhokisi. Kubva pakuverenga mafaera uye kuvhota Prometheus-endpoint kusvika kushandisa application chaiyo protocol.

Uye chekupedzisira chikamu ndechekudzikisa kushandiswa kwezviwanikwa.

Isu takasarudza yakavhurika-sosi Go mhinduro inonzi Telegraf. Ichi chinongedzo chepasirese chinotsigira anopfuura zana nemakumi mana emhando dzematanho ekuisa (input plugins) uye makumi matatu marudzi ematanho ekubuda (output plugins). Takazvipedza uye zvino tichakuudza kuti tinoishandisa sei tichishandisa Kubernetes semuenzaniso. 

Kugadzira-yakagadzirira mifananidzo yek8s

Ngatitii mugadziri anoshandisa basa uye Kubernetes anogamuchira chikumbiro chekugadzira pod. Panguva ino, mudziyo unonzi Collector unogadzirwa otomatiki kune yega yega pod (tinoshandisa mutation webhook). Muunganidzi ndiye mumiririri wedu. Pakutanga, mudziyo uyu unozvigadzirisa kuti ushande nePrometheus uye iyo log yekuunganidza system.

  • Kuti uite izvi, inoshandisa pod annotations, uye zvichienderana nezviri mukati, inogadzira, toti, Prometheus yekupedzisira-poindi; 
  • Zvichienderana neiyo pod yakatarwa uye yakatarwa midziyo marongero, inosarudza nzira yekuendesa matanda.

Isu tinounganidza matanda kuburikidza neDocker API: Vagadziri vanongoda kuaisa mu stdout kana stderr, uye Muunganidzi achazvigadzirisa. Marogi anounganidzwa ari machunks nekumwe kunonoka kudzivirira zvingangoitika zvakawandisa. 

Metrics inounganidzwa mukati mezviitiko zvebasa (maitirwo) mumidziyo. Zvese zvakatemerwa: namespace, pasi, zvichingodaro, uye zvozoshandurwa kuita Prometheus fomati - uye inowanikwa yekuunganidza (kunze kwematanda). Isu tinotumirawo matanda, metrics uye zviitiko kuKafka uyezve:

  • Matanda anowanikwa muGreylog (yekuongorora kwekuona);
  • Marogi, metrics, zviitiko zvinotumirwa kuClickhouse kuchengetedza kwenguva refu.

Zvese zvinoshanda zvakafanana muAWS, chete isu tinotsiva Graylog neKafka neCloudwatch. Isu tinotumira matanda ipapo, uye zvese zvinobuda zviri nyore: zvinobva zvangojeka kuti ndezvipi sumbu uye mudziyo. Izvi zvakafanana neGoogle Stackdriver. Ndiko kuti, chirongwa chedu chinoshanda zvese pa-nzvimbo neKafka uye mugore. 

Kana isu tisina Kubernetes nemapods, chirongwa chacho chakanyanya kuoma, asi chinoshanda pamitemo yakafanana.

Kugadzira-yakagadzirira mifananidzo yek8s

Iwo maitiro akafanana anoitwa mukati memudziyo, iwo akarongwa achishandisa S6. Ese maitiro akafanana ari kushanda mukati memudziyo mumwe chete.

Somugumisiro,

Isu takagadzira mhinduro yakakwana yekuvaka nekutangisa mifananidzo, ine sarudzo dzekuunganidza uye kuendesa matanda uye metrics:

  • Takagadzira nzira yakarongeka yekuunganidza mifananidzo, uye kubva pairi takagadzira ma templates eCI;
  • Dhata yekuunganidza vamiririri ndeyedu Telegraf yekuwedzera. Takavaedza zvakanaka mukugadzira;
  • Isu tinoshandisa mutation webhook kushandisa midziyo ine vamiririri mumapods; 
  • Yakabatanidzwa muKubernetes/Rancher ecosystem;
  • Isu tinokwanisa kuuraya midziyo yakafanana mune akasiyana orchestration masisitimu uye towana mhedzisiro yatinotarisira;
  • Yakagadzirwa yakanyatso dynamic container management configuration. 

Mumwe munyori: Ilya Prudnikov

Source: www.habr.com

Voeg