Hotunan shirye-shiryen samarwa don k8s

Wannan labarin game da yadda muke amfani da kwantena a cikin yanayin samarwa, musamman Kubernetes. Labarin ya keɓe don tattara ma'auni da rajistan ayyukan daga kwantena, da kuma hotunan gini.

Hotunan shirye-shiryen samarwa don k8s

Muna daga kamfanin fintech Exness, wanda ke haɓaka sabis don kasuwancin kan layi da samfuran fintech don B2B da B2C. R&D ɗinmu yana da ƙungiyoyi daban-daban, sashen haɓaka yana da ma'aikata 100+.

Muna wakiltar ƙungiyar da ke da alhakin dandamali don masu haɓaka mu don tattarawa da gudanar da lamba. Musamman, muna da alhakin tattarawa, adanawa da ba da rahoton awo, rajistan ayyukan, da abubuwan da suka faru daga aikace-aikace. A halin yanzu muna aiki kusan kwantena Docker dubu uku a cikin yanayin samarwa, muna kula da manyan bayanan TB 50, kuma muna ba da mafita na gine-ginen da aka gina a kusa da abubuwan more rayuwa: Kubernetes, Rancher, da masu samar da girgije na jama'a daban-daban. 

Burin mu

Me ke kona? Babu wanda zai iya amsawa. Ina murhu? Yana da wuyar fahimta. Yaushe ta kama wuta? Kuna iya ganowa, amma ba nan da nan ba. 

Hotunan shirye-shiryen samarwa don k8s

Me yasa wasu kwantena ke tsaye yayin da wasu suka fadi? Wanne kwantena ne ya yi laifi? Bayan haka, waje na kwantena iri ɗaya ne, amma a ciki kowanne yana da nasa Neo.

Hotunan shirye-shiryen samarwa don k8s

Masu haɓaka mu ƙwararrun mutane ne. Suna yin ayyuka masu kyau waɗanda ke kawo riba ga kamfani. Amma akwai gazawa yayin da kwantena tare da aikace-aikacen suka ɓace. Ɗayan kwantena yana cinye CPU da yawa, wani yana cinye hanyar sadarwa, na uku yana cinye ayyukan I/O, kuma na huɗu ba a san cikakken abin da yake yi da soket ba. Duk ya faɗi kuma jirgin ya nutse. 

Wakilai

Don fahimtar abin da ke faruwa a ciki, mun yanke shawarar sanya wakilai kai tsaye a cikin kwantena.

Hotunan shirye-shiryen samarwa don k8s

Wadannan wakilai suna hana shirye-shiryen da ke ajiye kwantena a cikin yanayin da ba za su karya juna ba. An daidaita wakilai, kuma wannan yana ba da damar daidaitaccen tsarin kula da kwantena. 

A cikin yanayinmu, dole ne wakilai su samar da rajistan ayyukan a cikin daidaitaccen tsari, mai alama da maƙura. Hakanan yakamata su samar mana da daidaitattun ma'auni waɗanda za'a iya cire su ta fuskar aikace-aikacen kasuwanci.

Wakilai kuma suna nufin abubuwan amfani don aiki da kiyayewa waɗanda zasu iya aiki a cikin tsarin ƙungiyar kade daban-daban waɗanda ke tallafawa hotuna daban-daban (Debian, Alpine, Centos, da sauransu).

A ƙarshe, dole ne wakilai su goyi bayan CI/CD mai sauƙi wanda ya haɗa da fayilolin Docker. In ba haka ba, jirgin zai rushe, saboda za a fara ba da kwantena tare da raƙuman "karkatattu".

Gina tsari da na'urar hoton manufa

Don kiyaye duk abin da aka daidaita kuma ana iya sarrafa shi, ana buƙatar bin wasu nau'ikan tsarin ginin daidaitaccen tsari. Saboda haka, mun yanke shawarar tattara kwantena ta kwantena - wannan shine maimaitawa.

Hotunan shirye-shiryen samarwa don k8s

Anan kwantena suna wakilta da ƙaƙƙarfan shaci. A lokaci guda, sun yanke shawarar sanya kayan rarrabawa a cikinsu don "rayuwa ba ta zama kamar raspberries ba." Me ya sa aka yi haka, za mu bayyana a kasa.
 
Sakamako shine kayan aikin gini - ƙayyadaddun akwati na musamman wanda ke yin nuni da takamaiman nau'ikan rarrabawa da takamaiman nau'ikan rubutun.

Ta yaya muke amfani da shi? Muna da Docker Hub wanda ya ƙunshi akwati. Mu madubi shi a cikin tsarin mu don kawar da abubuwan dogaro na waje. Sakamakon shine akwati mai alamar rawaya. Muna ƙirƙirar samfuri don shigar da duk rarrabawa da rubutun da muke buƙata a cikin akwati. Bayan haka, muna tattara hoton da aka shirya don amfani: masu haɓakawa suna sanya lamba da wasu abubuwan dogaro na musamman a ciki. 

Menene kyau game da wannan hanya? 

  • Na farko, cikakken sigar sarrafa kayan aikin gini - ginin ganga, rubutun da nau'ikan rarrabawa. 
  • Na biyu, mun cimma daidaito: muna ƙirƙirar samfuri, matsakaici da kuma shirye-shiryen amfani da su ta hanya ɗaya. 
  • Na uku, kwantena suna ba mu damar ɗauka. A yau muna amfani da Gitlab, kuma gobe za mu canza zuwa TeamCity ko Jenkins kuma za mu iya tafiyar da kwantenanmu a cikin hanya ɗaya. 
  • Na hudu, rage dogaro. Ba daidai ba ne muka sanya kayan rarrabawa a cikin akwati, saboda wannan yana ba mu damar guje wa zazzage su daga Intanet a kowane lokaci. 
  • Na biyar, saurin ginin ya karu - kasancewar kwafin hotuna na gida yana ba ka damar ɓata lokaci akan saukewa, tun da akwai hoton gida. 

A wasu kalmomi, mun cimma tsarin haɗuwa mai sarrafawa da sassauƙa. Muna amfani da kayan aikin iri ɗaya don gina kowane kwantena mai cikakken sigar. 

Yadda tsarin ginin mu ke aiki

Hotunan shirye-shiryen samarwa don k8s

An ƙaddamar da taron tare da umarni ɗaya, ana aiwatar da tsari a cikin hoton (wanda aka haskaka a ja). Mai haɓakawa yana da fayil ɗin Docker (wanda aka haskaka da rawaya), muna sanya shi, yana maye gurbin masu canji tare da ƙima. Kuma a kan hanya muna ƙara buga kai da ƙafa - waɗannan su ne wakilanmu. 

Header yana ƙara rarrabawa daga hotuna masu dacewa. Kuma ƙafa yana shigar da ayyukanmu a ciki, yana daidaita ƙaddamar da aikin aiki, shiga da sauran wakilai, ya maye gurbin shigarwa, da sauransu. 

Hotunan shirye-shiryen samarwa don k8s

Mun dade muna tunanin ko shigar da mai kulawa. A ƙarshe, mun yanke shawarar cewa muna bukatarsa. Mun zabi S6. Mai kulawa yana ba da sarrafa kwantena: yana ba ku damar haɗawa da shi idan babban tsari ya faɗo kuma yana ba da sarrafa injin ɗin hannu ba tare da sake ƙirƙira shi ba. Logs da awo matakai ne da ke gudana a cikin akwati. Hakanan suna buƙatar a sarrafa su ko ta yaya, kuma muna yin hakan tare da taimakon mai kulawa. A ƙarshe, S6 yana kula da aikin gida, sarrafa sigina da sauran ayyuka.

Tun da muna amfani da tsarin kade-kade daban-daban, bayan gini da gudu, dole ne kwandon ya fahimci yanayin da yake ciki kuma yayi aiki daidai da yanayin. Misali:
Wannan yana ba mu damar gina hoto ɗaya da gudanar da shi a cikin tsarin kade-kade daban-daban, kuma za a ƙaddamar da shi ta la'akari da takamaiman tsarin wannan ƙungiyar.

 Hotunan shirye-shiryen samarwa don k8s

Don ganga ɗaya muna samun bishiyoyin sarrafawa daban-daban a Docker da Kubernetes:

Hotunan shirye-shiryen samarwa don k8s

Ana aiwatar da kayan aikin a ƙarƙashin kulawar S6. Kula da mai tarawa da abubuwan da suka faru - waɗannan wakilanmu ne da ke da alhakin rajistan ayyukan da awo. Kubernetes ba shi da su, amma Docker yana da su. Me yasa? 

Idan muka dubi ƙayyadaddun "pod" (nan gaba - Kubernetes pod), za mu ga cewa an aiwatar da akwati na abubuwan da suka faru a cikin kwasfa, wanda ke da wani akwati dabam dabam wanda ke yin aikin tattara ma'auni da rajistan ayyukan. Zamu iya amfani da damar Kubernetes: kwantena masu gudana a cikin kwasfa ɗaya, a cikin tsari guda ɗaya da/ko sararin cibiyar sadarwa. A zahiri gabatar da wakilan ku kuma kuyi wasu ayyuka. Kuma idan aka harba kwantena iri ɗaya a cikin Docker, za ta sami dukkan ƙarfin aiki iri ɗaya kamar yadda ake fitarwa, wato, za ta iya isar da katako da awo, tunda za a ƙaddamar da wakilai a ciki. 

Metrics da logs

Isar da ma'auni da rajistan ayyukan aiki ne mai rikitarwa. Akwai bangarori da dama a cikin shawararta.
An ƙirƙiri abubuwan more rayuwa don aiwatar da abin da aka biya, kuma ba don yawan isar da katako ba. Wato, dole ne a yi wannan tsari tare da ƙarancin buƙatun albarkatun kwantena. Muna ƙoƙari don taimakawa masu haɓaka mu: "Samu akwati Docker Hub, gudanar da shi, kuma za mu iya isar da rajistan ayyukan." 

Bangare na biyu shine iyakance ƙarar gundumomi. Idan karuwa a cikin ƙarar rajistan ayyukan ya faru a cikin kwantena da yawa ( aikace-aikacen yana fitar da tari a cikin madauki), nauyin da ke kan CPU, tashoshin sadarwa, da tsarin sarrafa log yana ƙaruwa, kuma wannan yana shafar aikin mai watsa shiri azaman duka da sauran kwantena a kan mai gida, to, wani lokacin wannan yana haifar da "fadu" na rundunar. 

Bangare na uku shine ya zama dole a goyi bayan hanyoyin tattara ma'auni da yawa kamar yadda zai yiwu daga cikin akwatin. Daga karanta fayiloli da jefa ƙuri'a Prometheus-ƙarshen zuwa amfani da takamaiman ƙa'idodi.

Kuma al'amari na ƙarshe shine rage yawan amfani da albarkatu.

Mun zaɓi mafita mai buɗewa ta Go mai suna Telegraf. Wannan haɗin kai ne na duniya wanda ke goyan bayan fiye da nau'ikan tashoshi 140 na shigar da bayanai (filin shigar da shigar) da nau'ikan tashoshi 30 na fitarwa (filugin abubuwan fitarwa). Mun kammala shi kuma yanzu za mu gaya muku yadda muke amfani da shi ta amfani da Kubernetes a matsayin misali. 

Hotunan shirye-shiryen samarwa don k8s

Bari mu ce mai haɓakawa yana ɗaukar nauyin aiki kuma Kubernetes ya karɓi buƙatun ƙirƙirar kwasfa. A wannan lokacin, ana ƙirƙira wani akwati da ake kira Collector ta atomatik ga kowane kwafsa (muna amfani da mutation webhook). Mai tarawa shine wakilinmu. A farkon, wannan akwati yana daidaita kanta don yin aiki tare da Prometheus da tsarin tarin log.

  • Don yin wannan, yana amfani da bayanan kwasfan fayiloli, kuma dangane da abubuwan da ke ciki, ƙirƙirar, ka ce, ƙarshen ƙarshen Prometheus; 
  • Dangane da ƙayyadaddun kwas ɗin da takamaiman saitunan kwantena, yana yanke shawarar yadda ake sadar da rajistan ayyukan.

Muna tattara rajistan ayyukan ta hanyar Docker API: masu haɓakawa kawai suna buƙatar sanya su a cikin stdout ko stderr, kuma Mai tarawa zai warware shi. Ana tattara rajistan ayyukan a gungu-gungu tare da ɗan jinkiri don hana yuwuwar ɗaukar nauyi mai masaukin baki. 

Ana tattara ma'auni a cikin misalan nauyin aiki (tsari) a cikin kwantena. Duk abin da aka tagged: sunan sararin samaniya, ƙarƙashin, da sauransu, sa'an nan kuma canza zuwa tsarin Prometheus - kuma ya zama samuwa don tarawa (sai dai logs). Muna kuma aika rajistan ayyukan, awo da abubuwan da suka faru zuwa Kafka da ƙari:

  • Logs suna samuwa a cikin Graylog (don nazarin gani);
  • Ana aika rajistan ayyukan, awo, abubuwan da suka faru zuwa Clickhouse don adana dogon lokaci.

Komai yana aiki daidai iri ɗaya a cikin AWS, kawai mun maye gurbin Graylog tare da Kafka tare da Cloudwatch. Mun aika da rajistan ayyukan a can, kuma duk abin da ya juya ya zama mai dacewa: nan da nan ya bayyana ko wane gungu da akwati suke. Haka yake ga Google Stackdriver. Wato, makircinmu yana aiki tare da Kafka da kuma cikin gajimare. 

Idan ba mu da Kubernetes tare da kwasfa, makircin ya ɗan fi rikitarwa, amma yana aiki akan ka'idodin guda ɗaya.

Hotunan shirye-shiryen samarwa don k8s

Ana aiwatar da matakai iri ɗaya a cikin akwati, ana yin su ta amfani da S6. Duk matakai iri ɗaya suna gudana a cikin akwati ɗaya.

A ƙarshe

Mun ƙirƙiri cikakken bayani don ginawa da ƙaddamar da hotuna, tare da zaɓuɓɓuka don tattarawa da isar da rajistan ayyukan da ma'auni:

  • Mun haɓaka daidaitaccen tsari don haɗa hotuna, kuma bisa ga shi mun haɓaka samfuran CI;
  • Wakilan tattara bayanai sune kari na Telegraf. Mun gwada su da kyau a cikin samarwa;
  • Muna amfani da mutation webhook don aiwatar da kwantena tare da wakilai a cikin kwasfa; 
  • Haɗe cikin yanayin yanayin Kubernetes/Rancher;
  • Za mu iya aiwatar da kwantena iri ɗaya a cikin tsarin kade-kade daban-daban kuma mu sami sakamakon da muke tsammani;
  • Ƙirƙirar tsarin sarrafa kwantena gaba ɗaya mai ƙarfi. 

Marubuci: Ilya Prudnikov

source: www.habr.com

Add a comment