Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

April 27 ee shirka Shaqo joojin 2019, iyada oo qayb ka ah qaybta "DevOps", warbixinta "Autoscaling iyo maamulka khayraadka ee Kubernetes" ayaa la bixiyay. Waxay ka hadlaysaa sida aad u isticmaali karto K8s si loo hubiyo helitaanka sare ee codsiyadaada oo loo hubiyo waxqabadka ugu sarreeya.

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Dhaqan ahaan, waan ku faraxsanahay inaan soo bandhigno muuqaalka warbixinta (44 daqiiqo, aad uga xog badan maqaalka) iyo soo koobida ugu weyn ee qaabka qoraalka. Tag!

Aan ku falanqeyno mowduuca warbixinta eray ahaan oo aan ka bilowno dhamaadka.

Kubureteska

Aynu nidhaahno waxaan ku haynaa weelasha Docker ee gurigayaga. Maxay? Si loo hubiyo soo noqnoqoshada iyo go'doominta, taas oo u oggolaanaysa hawlgelin fudud oo wanaagsan, CI/CD. Waxaan haynaa gaadiid badan oo noocaas oo kale ah oo ay ku jiraan weelal.

Muxuu Kubernetes ku bixiyaa kiiskan?

  1. Waxaan joojinay ka fikirida mishiinadan oo aan bilowno la shaqaynta "daruur" kooxda weelasha ama cawsyo (kooxaha weelasha).
  2. Waxaa intaa dheer, xitaa kama fekereyno kubadaha gaarka ah, laakiin wax badan ayaa maamulaΠΎkooxaha waaweyn. Sidan horudhac heer sare ah noo ogolow in aan nidhaahno waxaa jira template ah oo lagu socodsiiyo shaqo gaar ah, oo halkan waa tirada kiisaska loo baahan yahay si loo socodsiiyo. Haddii aan ka dib beddelno qaab-dhismeedka, dhammaan xaaladaha way isbedeli doonaan.
  3. Iyada oo gargaar ah caddaynta API Halkii laga fulin lahaa taxane amarro gaar ah, waxaan ku qeexnaa "qaabka adduunka" (ee YAML), kaas oo ay abuurtay Kubernetes. Oo mar labaad: marka sharraxaaddu is beddesho, muuqaalkeeda dhabta ah ayaa sidoo kale isbeddeli doona.

Maamulka kheyraadka

processor

Aynu ku socodsiino nginx, php-fpm iyo mysql server-ka. Adeegyadani dhab ahaantii waxay yeelan doonaan habab badan oo socda, mid walbana wuxuu u baahan yahay agab xisaabeed:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)
(tirooyinka ku yaal boggan waa "parrots", baahida aan la taaban karin ee habka kasta ee awoodda xisaabinta)

Si loo fududeeyo in tan la shaqeeyo, waa macquul in la isku daro hababka kooxo (tusaale ahaan, dhammaan hababka nginx ee hal koox "nginx"). Habka fudud oo cad ee tan loo sameeyo waa in koox kasta lagu rido weel:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Si aad u sii waddo, waxaad u baahan tahay inaad xasuusato waxa weelku yahay (Linux). Muuqaalkooda ayaa suurtogal ka dhigay iyada oo ay ugu mahadcelinayaan saddex astaamood oo muhiim ah kernel-ka, oo la hirgeliyay waqti dheer ka hor: Awoodaha, magacyada ΠΈ koox kooxeedyo. Horumarinta dheeraadka ah waxaa fududeeyay tignoolajiyada kale (oo ay ku jiraan "qofof" ku habboon sida Docker):

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Dulucda warbixinta, waxa aanu danaynaynaa oo kaliya koox kooxeedyo, sababtoo ah kooxaha kantaroolku waa qayb ka mid ah shaqeynta weelasha (Docker, iwm.) ee fuliya maareynta kheyraadka. Nidaamyada la isku daray oo kooxo ah, sida aan rabnay, waa kooxaha xakamaynta.

Aan ku soo laabano shuruudaha CPU ee habsocodkan, iyo hadda kooxaha habsocodka:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)
(Waxaan ku celinayaa in dhammaan tirooyinka ay yihiin muujin aan la taaban karin oo ku saabsan baahida kheyraadka)

Isla mar ahaantaana, CPU lafteedu waxay leedahay kheyraad xaddidan oo gaar ah (tusaale ahaan tani waa 1000), oo qof kastaa ka maqan yahay (isku geynta baahiyaha kooxaha oo dhan waa 150+850+460=1460). Maxaa dhici doona kiiskan?

Kernelku wuxuu bilaabaa qaybinta kheyraadka wuxuuna u sameeyaa "si cadaalad ah", isagoo siinaya isla qaddarka kheyraadka koox kasta. Laakiin marka hore, waxaa jira in ka badan inta loo baahan yahay (333>150), sidaa darteed xad-dhaafka (333-150=183) ayaa ku sii jira kayd, kaas oo sidoo kale loo qaybiyo laba weel oo kale:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Natiijo ahaan: weelka koowaad wuxuu lahaa kheyraad ku filan, kan labaad - ma uusan haysan kheyraad ku filan, kan saddexaad - ma uusan haysan kheyraad ku filan. Tani waa natiijada ficillada Jadwalaha "daacad ah" ee Linux - Habboon. Hawlgalkeeda waxaa lagu hagaajin karaa iyadoo la adeegsanayo hawsha miisaanka weel kasta. Tusaale ahaan, sida tan:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Aynu eegno kiiska la'aanta agabka weelka labaad (php-fpm). Dhammaan agabka weelka waxaa loo qaybiyaa si siman inta u dhaxaysa hababka. Natiijo ahaan, habka sayidku si fiican ayuu u shaqeeyaa, laakiin dhammaan shaqaaluhu way gaabiyaan, iyagoo helaya wax ka yar kala badh waxa ay u baahan yihiin:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Tani waa sida jadwalka CFS u shaqeeyo. Waxaan sii wici doonaa miisaanka aan ku wareejinayno weelasha codsiyada. Waa maxay sababta tani sidaas tahay - arag wax dheeraad ah.

Bal aan dhinaca kale ka eegno xaaladda oo dhan. Sida aad ogtahay, dhammaan waddooyinka waxay u horseedaan Rome, iyo kiiska kumbuyuutarka, ilaa CPU. Hal CPU, hawlo badan - waxaad u baahan tahay nalka taraafigga. Habka ugu fudud ee loo maareeyo kheyraadka waa "iftiin taraafikada": waxay hal nidaam siiyeen waqti go'an oo gelitaanka CPU, ka dibna kan xiga, iwm.

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Habkan waxaa lagu magacaabaa kootada adag (xaddidaad adag). Aynu si fudud u xasuusano sida xad. Si kastaba ha noqotee, haddii aad u qaybiso xadka dhammaan weelasha, dhibaato ayaa soo baxaysa: mysql wuxuu ku waday wadada oo mar uun baahideeda CPU way dhammaatay, laakiin dhammaan hababka kale ayaa lagu qasbay inay sugaan ilaa CPU shaqo la'aan.

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Aan ku soo laabano kernel-ka Linux iyo is dhexgalka ay la leedahay CPU - sawirka guud waa sida soo socota:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

kooxdu waxay leedahay laba habayn - asal ahaan kuwani waa laba "qalloocin" fudud oo kuu oggolaanaya inaad go'aamiso:

  1. miisaanka weelka (codsiyada) waa saamiyada;
  2. boqolkiiba wadarta wakhtiga CPU ee ka shaqaynta hawlaha weelka (xaddidaadyada) waa kootada.

Sidee loo cabbiraa CPU?

Waxaa jira siyaabo kala duwan:

  1. Maxaa jajabyoQofna ma garanayo - waxaad u baahan tahay inaad gorgortan gasho mar kasta.
  2. Daneyn cad, laakiin qaraabo ah: 50% server ka 4 kore iyo 20 ka mid ah waa wax gebi ahaanba kala duwan.
  3. Waxaad isticmaali kartaa kuwa hore loo sheegay miisaanka, oo Linux yaqaan, laakiin sidoo kale waa qaraabo.
  4. Doorashada ugu habboon waa in la cabbiro ilaha xisaabinta gudaha ilbiriqsi. Kuwaas. ilbidhiqsiyada wakhtiga processor-ka marka loo eego ilbidhiqsiyada wakhtiga dhabta ah: 1 ilbiriqsi ee wakhtiga processor-ka ayaa la bixiyay 1 ilbiriqsi oo dhab ah - tani waa hal unug oo dhan CPU.

Si ay xitaa ugu fududaato hadalka, waxay bilaabeen inay si toos ah u cabbiraan kernels, taasoo la micno ah iyaga oo la mid ah waqtiga CPU marka loo eego kan dhabta ah. Maaddaama Linux uu fahamsan yahay miisaanka, laakiin aan aad u badnayn waqtiga CPU/core, farsamo ayaa loo baahday midba midka kale.

Aynu tixgelinno tusaale fudud oo leh server leh 3 koofiyadood oo CPU ah, halkaas oo saddex xabbadood la siin doono miisaan (500, 1000 iyo 1500) kuwaas oo si fudud loogu beddelo qaybaha u dhigma ee xudunta loo qoondeeyey (0,5, 1 iyo 1,5).

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Haddii aad qaadato server-ka labaad, halkaas oo ay jiri doonaan labanlaab ka badan inta cores (6), oo aad dhigto isla boodhyo isku mid ah, qaybinta koofiyadaha si fudud ayaa loo xisaabin karaa iyadoo si fudud loogu dhufto 2 (1, 2 iyo 3, siday u kala horreeyaan). Laakiin daqiiqad muhiim ah waxay dhacdaa marka boodhka afraad uu ka soo muuqdo server-kan, miisaankiisu, si ku habboon, wuxuu noqon doonaa 3000. Waxa ay ka qaadaa qayb ka mid ah ilaha CPU (kala badh koodhadhka), inta soo hadhayna dib ayaa loo xisaabiyaa (kala badh):

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Kubernetes iyo ilaha CPU

Gudaha Kubernetes, agabka CPU waxaa badanaa lagu cabbiraa milliadrax, i.e. 0,001 koofiyadaha ayaa loo qaataa sida miisaanka aasaasiga ah. (Wax la mid ah ereyada Linux/kooxaha waxaa loo yaqaan saamiga CPU, inkastoo, si sax ah, 1000 millicores = 1024 saamiyada CPU.) K8s waxa ay hubisaa in aanay ku dhejin seerfar ka badan inta ay jiraan agabka CPU ee wadarta miisaannada dhammaan pods-ka.

Sidee tani u dhacdaa? Marka aad ku darto server kutlada Kubernetes, waxaa la soo warinayaa inta xabbo ee CPU ee ay haysato. Iyo marka la abuurayo boodh cusub, jadwaliyaha Kubernetes wuu ogyahay inta xabbo ee daboolkani u baahan doono. Sidaa darteed, podska waxaa lagu meelayn doonaa server halkaas oo ay jiraan kabo ku filan.

Maxaa dhacaya haddii ma Codsiga waa la cayimay (tusaale, boodhku ma laha tiro go'an oo ah xudunta uu u baahan yahay)? Aynu ogaano sida Kubernetes guud ahaan u xisaabiyo ilaha.

Boodhka waxaad u cayimi kartaa labada codsi (jadwalaha CFS) iyo xadka (xusuusnow iftiinka taraafiggu?):

  • Haddii la cayimay siman yihiin, ka dib boodhka waxaa loo qoondeeyay fasalka QoS damaanad qaaday. Tiradan xudunta ah ee had iyo jeer diyaar u ah waa dammaanad.
  • Haddii codsigu ka yar yahay xadka - fasalka QoS qarxin kara. Kuwaas. Waxaan filaynaa in boodhka, tusaale ahaan, uu had iyo jeer isticmaalo 1 core, laakiin qiimahani maaha mid xaddidan: ΠΈΠ½ΠΎΠ³Π΄Π° Pod wuxuu isticmaali karaa wax badan (marka server-ku u haysto ilo bilaash ah tan).
  • Waxa kale oo jira fasalka QoS dadaalka ugu fiican - waxaa ka mid ah boodhadhka aan codsiga la cayimin. Khayraadka ayaa la siiyaa iyaga ugu dambeeya.

xusuusta

Xasuusta, xaaladdu waa la mid, laakiin wax yar ka duwan - ka dib, dabeecadda kheyraadkani way ka duwan tahay. Guud ahaan, isbarbardhiggu waa sida soo socota:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Aynu aragno sida codsiyada loogu fuliyo xusuusta. U ogolow in podsku ku noolaadaan server-ka, beddelaan isticmaalka xusuusta, ilaa mid ka mid ah uu weynaado oo ay ka baxdo xusuusta. Xaaladdan oo kale, dilaaga OOM ayaa soo muuqda oo dilaya habka ugu weyn:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Tani mar walba naguma habboona, markaa waa suurtogal in la nidaamiyo hababka muhiimka noo ah oo aan la dilin. Si tan loo sameeyo, isticmaal cabbirka oom_score_adj.

Aan ku soo laabano fasalada QoS ee CPU oo aan sawirno isbarbardhig leh oom_score_adj qiyamka kaas oo go'aamiya mudnaanta isticmaalka xusuusta ee pods:

  • Qiimaha oom_score_adj ee ugu hooseeya - -998 - waxay la macno tahay in boodhkan oo kale la dilo ugu dambayn, tani damaanad qaaday.
  • Ugu sarreeya - 1000 - waa dadaalka ugu fiican, baallaha noocan oo kale ah ayaa marka hore la dilaa.
  • Si loo xisaabiyo qiyamka hadhay (qarxin kara) waxa jirta qaacido, nuxurkeeduna ku soo ururay, in hadba inta kheyraadka uu boodhka codsado, ay yaraanayso in la dilo.

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Midka labaad "maroojin" - xaddid_in_bytes - xadka. Iyadoo la adeegsanayo, wax walba waa ka fudud yihiin: waxaan si fudud u qoondeyneynaa qadarka ugu badan ee xusuusta la soo saaray, halkan (oo ka duwan CPU) ma jirto su'aal ah sida loo cabbiro (xusuusta).

Wadarta

Mid kasta oo ku yaal Kubernetes waa la bixiyaa requests ΠΈ limits - labada cabbir ee CPU iyo xusuusta:

  1. iyadoo lagu saleynayo codsiyada, jadwalka Kubernetes wuxuu shaqeeyaa, kaas oo u qaybiya seerayaasha dhexdooda;
  2. iyadoo lagu saleynayo dhammaan cabbirrada, fasalka QoS ee pods ayaa la go'aamiyaa;
  3. Miisaanka qaraabada waxaa lagu xisaabiyaa iyadoo lagu salaynayo codsiyada CPU;
  4. Jadwalka CFS waxaa loo habeeyey iyadoo lagu saleynayo codsiyada CPU;
  5. dilaa OOM waxa loo habeeyey iyadoo lagu salaynayo codsiyada xusuusta;
  6. "iftiin taraafikada" ayaa loo habeeyey iyadoo lagu salaynayo xadka CPU;
  7. Iyada oo ku saleysan xadka xusuusta, xadka ayaa loo habeeyey kooxda.

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Guud ahaan, sawirkani wuxuu ka jawaabayaa dhammaan su'aalaha ku saabsan sida qaybta ugu muhiimsan ee maareynta kheyraadka ay uga dhacdo Kubernetes.

Iskeelka otomaatiga ah

K8s cluster-autoscaler

Aynu qiyaasno in dhammaan kooxdu ay mar hore la qabsatay oo ay u baahan tahay in la sameeyo qayb cusub. Iyadoo boodhku aanu soo muuqan karin, wuxuu ku laadlaadsan yahay xaaladdiisa Inta. Si ay u muuqato, waxaan ku xiri karnaa server cusub kooxda ama... rakibi cluster-autoscaler, taas oo noo sameyn doonta: ka dalbo mashiinka farsamada ee bixiyaha daruuraha (adigoo isticmaalaya codsi API) oo ku xidh kooxda , ka bacdi waxaa lagu darayaa baallaha .

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Tani waa isku-dheellitirnaanta kooxda Kubernetes, taas oo si weyn u shaqeysa (waayo-aragnimadeena). Si kastaba ha ahaatee, sida meelo kale, waxaa jira qaar ka mid ah nuances halkan ...

Ilaa iyo inta aan kordhinay cabbirka kooxda, wax walba way fiicnaayeen, laakiin maxaa dhacaya marka kooxda wuxuu bilaabay inuu is xoreeyo? Dhibaatadu waxay tahay in boodhka guuritaanka (si loo xoreeyo martida loo yahay) waa mid aad u farsamo ahaan adag oo qaali ah marka la eego kheyraadka. Kubernetes waxay isticmaashaa hab gebi ahaanba ka duwan.

Tixgeli koox ka kooban 3 server oo leh Deployment. Waxay leedahay 6 qaybood: hadda waxaa jira 2 server kasta. Sababta qaar ayaan rabnay inaan daminno mid ka mid ah server-yada. Si tan loo sameeyo waxaan isticmaali doonaa amarka kubectl drain, kaas:

  • waxay mamnuuci doontaa in loo diro gadyo cusub server-kan;
  • waxay tirtiri doontaa galalka jira ee server-ka.

Maadaama Kubernetes uu mas'uul ka yahay ilaalinta tirada boodhka (6), si fudud dib u abuuri doona iyaga oo ku yaal qanjidhada kale, laakiin maaha kuwa naafada ah, maadaama ay horeba loogu calaamadeeyay inaan la heli karin martigelinta galal cusub. Kani waa makaanik aasaasiga u ah Kubernetes.

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Si kastaba ha ahaatee, halkan sidoo kale waxaa jira nuance. Xaalad la mid ah, ee StatefulSet (halkii la diri lahaa), ficilladu way ka duwanaan doonaan. Hadda waxaan horeyba u haysanay codsi dawladeed - tusaale ahaan, saddex xabbadood oo leh MongoDB, mid ka mid ah kaas oo leh nooc ka mid ah dhibaatada (xogtu way xumaatay ama qalad kale oo ka hortagaya in boodhka si sax ah u bilaabo). Oo waxaan mar kale go'aansanay inaan joojino hal server. Maxaa dhici doona?

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

MongoDB karaa u dhinta sababtoo ah waxay u baahan tahay kooram: koox ka kooban saddex qalab, ugu yaraan laba waa inay shaqeeyaan. Si kastaba ha ahaatee, tani ma dhacayso - mahadsanid Miisaaniyadda PodDisruption. Halbeeggaan ayaa go'aaminaya tirada ugu yar ee loo baahan yahay ee galalka shaqada. Ogaanshaha in mid ka mid ah boodhadhka MongoDB aanu hadda shaqaynayn, oo la arko in PodDisruptionBudget loo dejiyay MongoDB minAvailable: 2, Kubernetes kuma oggolaan doono inaad tirtirto boodhka.

Xariiqda hoose: si dhaqdhaqaaqa (iyo dhab ahaantii, dib-u-abuurista) boodhadhku si sax ah u shaqeeyaan marka kooxda la sii daayo, waxaa lagama maarmaan ah in la habeeyo PodDisruptionBudget.

Miisaanka toosan

Aan ka fiirsanno xaalad kale. Waxa jira codsi u shaqaynaya sidii Kubernetes. Gaadiidka adeegsaduhu wuxuu ku yimaadaa boodhkiisa (tusaale, waxaa jira saddex ka mid ah), waxaanan ku cabbirnaa tilmaame gaar ah (dheh, culeyska CPU). Marka uu culeysku kordho, waxaanu ku duubnaa jadwalka oo aanu kordhinnaa tirada boodhka si aanu u qaybinno codsiyada.

Maanta Kubernetes tan uma baahna in gacanta lagu sameeyo: koror otomaatig ah / hoos u dhac ku yimaada tirada boodhka ayaa loo qaabeeyey iyadoo kuxiran qiyamka tilmaamayaasha culeyska la qiyaasay.

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Su'aalaha ugu muhiimsan halkan waa: waxa saxda ah ee lagu qiyaaso ΠΈ sida loo fasiro qiyamka la helay (si loo sameeyo go'aan ku saabsan beddelka tirada pods). Waxaad qiyaasi kartaa wax badan:

Xisaabinta iyo maareynta kheyraadka ee Kubernetes ( dulmar iyo warbixin muuqaal ah)

Sida tan farsamo ahaan loo sameeyo - ururinta mitirka, iwm. - Waxaan si faahfaahsan uga hadlay warbixinta Kormeerka iyo Kubernetes. Iyo talada ugu weyn ee doorashada xuduudaha ugu fiican waa tijaabo!

Waxaa jira Habka isticmaal (Ka faa'iidaysiga Dheefta iyo Khaladaadka), oo macneheedu yahay sidan. Iyada oo ku saleysan maxay macno samaynaysaa in la cabbiro, tusaale ahaan, php-fpm? Iyada oo ku saleysan xaqiiqda ah in shaqaaluhu ay dhammaanayaan, tani waa ka faa’iideysiga. Oo haddii shaqaaluhu dhammaadaan oo xidhiidh cusub la aqbali waayo, tani waa horeba fadhiid. Labadan halbeegyadan waa in la cabbiraa, waxayna ku xiran tahay qiyamka, cabbiridda waa in la sameeyaa.

Halkii gabagabo

Warbixintu waxay leedahay sii socosho: ku saabsan miisaan toosan iyo sida loo doorto kheyraadka saxda ah. Tani waxaan kaga hadli doonaa fiidiyowyada mustaqbalka Youtube-keena - subscribe saar si aadan u dhaafin!

Muuqaalo iyo sawiro

Fiidiyowga waxqabadka (44 daqiiqo):

Soo bandhigida warbixinta:

PS

Warbixinno kale oo ku saabsan Kubernetes oo ku jira blog-keena:

Source: www.habr.com

Add a comment