I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU

Emva ngo-2016 siseBuffer itshintshelwe kwi-Kubernetes, kwaye ngoku malunga ne-60 nodes (kwi-AWS) kunye nezikhongozeli ezili-1500 ezisebenzayo kwiqela lethu le-k8s elilawulwa khaba. Nangona kunjalo, siye safudukela kwii-microservices ngolingo nangempazamo, kwaye nasemva kweminyaka emininzi sisebenza nee-k8s sisajongene neengxaki ezintsha. Kule post siza kuthetha ngayo unyino lweprosesa: kwakutheni ukuze sicinge ukuba baziqhelisa kakuhle kwaye kutheni begqibele bengasalunganga kangako.

Unyino lweprosesa kunye ne-throttling

Njengabanye abasebenzisi abaninzi beKubernetes, UGoogle uncoma kakhulu ukuseta imida ye-CPU. Ngaphandle kolungiselelo olunjalo, izikhongozeli kwi-node zinokuthatha onke amandla eprosesa, nto leyo ebangela iinkqubo ezibalulekileyo zeKubernetes (umzekelo. kubelet) uya kuyeka ukuphendula izicelo. Ke, ukuseta imida ye-CPU yindlela elungileyo yokukhusela iindawo zakho.

Imida yeProcessor isete isikhongozeli sexesha eliphezulu le-CPU enokulisebenzisa ixesha elithile (okuhlala kukho li-100ms), kwaye isikhongozeli asisokuze sigqithe lo mda. Kwi Kubernetes for ukutswina isikhongozeli kunye nokuthintela ukuba ungagqithisi umda, isixhobo esikhethekileyo sisetyenziswa CFS Quota, kodwa le mida ye-CPU eyenziweyo igcina ilimaza ukusebenza kunye nokwandisa ixesha lokuphendula kwizikhongozeli zakho.

Kwenzeka ntoni ukuba asiyibeki imida yeprosesa?

Ngelishwa, kwafuneka sijamelane nale ngxaki. Indawo nganye inenkqubo enoxanduva lokulawula izikhongozeli kubelet, yaye wayeka ukuphendula izicelo. I-node, xa oku kusenzeka, kuya kungena kurhulumente NotReady, kunye nezikhongozeli ezisuka kuyo ziyakuqondiswa kwenye indawo kwaye zenze iingxaki ezifanayo kwiindawo ezintsha. Ayiyomeko ifanelekileyo, ukutsho oko.

Ukubonakaliswa kwengxaki ye-throttling kunye nokuphendula

I-metric engundoqo yokulandelela umgqomo yi trottling, ibonisa ukuba mangaphi amaxesha apho isikhongozeli sakho sicinezelwe. Siqaphele ngomdla ubukho bokuxinana kwezinye izikhongozeli, nokuba umthwalo weprosesa ubugqithisile okanye hayi. Njengomzekelo, makhe sijonge enye yee-API zethu eziphambili:

I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU

Njengoko ubona ngezantsi, sibeke umda ukuba 800m (0.8 okanye 80% engundoqo), kunye nencopho yamaxabiso ekufikeleleni 200m (20% engundoqo). Kubonakala ngathi ngaphambi kokuba siqhube inkonzo sisenamandla amaninzi eprosesa, nangona kunjalo ...

I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU
Usenokuba uqaphele ukuba naxa umthwalo weprosesa ungaphantsi kwemida echaziweyo - kakhulu ngezantsi - ukuxinana kusenzeka.

Ukujongana noku, kungekudala safumana izixhobo ezininzi (ingxaki kwi github, umboniso kwi zadano, thumela kwi-omio) malunga nokwehla kokusebenza kunye nexesha lokuphendula leenkonzo ngenxa yokuxinana.

Kutheni sibona i-throttling kumthwalo ophantsi we-CPU? Inguqulelo emfutshane yile: "kukho ibug kwi-Linux kernel ebangela ukushukuma ngokungeyomfuneko kwezikhongozeli ezinemida yeprosesa echaziweyo." Ukuba unomdla kubume bengxaki, ungafunda umboniso (видео и umbhalo iinketho) nguDave Chiluk.

Ukususa izithintelo ze-CPU (ngononophelo olukhulu)

Emva kweengxoxo ezinde, sigqibe kwelokuba sisuse izithintelo zeprosesa kuzo zonke iinkonzo ezichaphazele ngokuthe ngqo okanye ngokungathanga ngqo ukusebenza okubalulekileyo kubasebenzisi bethu.

Isigqibo besingalula kuba sikuxabisa kakhulu uzinzo lweqela lethu. Kwixesha elidlulileyo, sele sele sizama ukungazinzi kweqela lethu, kwaye ke iinkonzo zichithe izibonelelo ezininzi kwaye zanciphisa umsebenzi we-node yazo yonke. Ngoku yonke into yayahluke ngandlel’ ithile: sasinokuqonda ngokucacileyo oko besikulindele kumaqela ethu, kunye nesicwangciso esilungileyo sokuphumeza iinguqu ezicwangcisiweyo.

I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU
Imbalelwano yoshishino malunga nomba oxingayo.

Indlela yokukhusela iindawo zakho xa izithintelo zisusiwe?

Ukwahlulwa kweenkonzo “ezingenamiqathango”:

Kwixesha elidlulileyo, sele sibonile ezinye iindawo zokuhlala zingena kwisimo notReady, ngokuyintloko ngenxa yeenkonzo ezitye izixhobo ezininzi kakhulu.

Sagqiba ekubeni sibeke ezo nkonzo kwiindawo ezahlukeneyo (“ezibhalwe”) ukuze zingaphazamisi iinkonzo “ezinxulumeneyo”. Ngenxa yoko, ngokumakisha ezinye iinqununu kunye nokongeza ipharamitha yokunyamezela kwiinkonzo "ezingahambelaniyo", siphumelele ukulawula okukhulu kwi-cluster, kwaye kwaba lula ngathi ukuchonga iingxaki ngeenodi. Ukwenza iinkqubo ezifanayo ngokwakho, unokuziqhelanisa nazo uxwebhu.

I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU

Ukwabela iprosesa echanekileyo kunye nesicelo sememori:

Uloyiko lwethu olukhulu yayikukuba inkqubo iya kusebenzisa izixhobo ezininzi kwaye i-node iya kuyeka ukuphendula izicelo. Ukusukela ngoku (enkosi kwi-Datadog) sinokubeka iliso ngokucacileyo zonke iinkonzo kwiqela lethu, ndihlalutye iinyanga ezininzi zokusebenza kwezo besicwangcise ukuzichaza "njengenganxulumananga". Ndiseta nje ubuninzi bokusetyenziswa kwe-CPU kunye nomda we-20%, kwaye ngaloo ndlela ndabelwe indawo kwindawo apho i-k8s izama ukwabela ezinye iinkonzo kwindawo.

I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU

Njengoko ubona kwigrafu, umthwalo ophezulu kwiprosesa ufikelele 242m CPU cores (0.242 processor cores). Kwisicelo somqhubekekisi, kwanele ukuthatha inani elikhulu kancinci kuneli xabiso. Nceda uqaphele ukuba njengoko iinkonzo ziphakathi komsebenzisi, amaxabiso omthwalo ophakamileyo ahambelana netrafikhi.

Yenza okufanayo kunye nokusetyenziswa kwememori kunye nemibuzo, kwaye voila - nonke nisekiwe! Ngokhuseleko olukhulu, unokongeza i-horizontal pod autoscaling. Ngaloo ndlela, ngalo lonke ixesha umthwalo wemithombo uphezulu, i-autoscaling iya kudala iipod ezintsha, kwaye i-kubernetes iya kusasaza kwiindawo ngeendawo zamahhala. Kwimeko apho akukho sithuba sishiywe kwiqela ngokwalo, ungaziseta isivuseleli okanye uqwalasele ukongezwa kweenodi ezintsha ngokusebenzisa i-autoscaling yazo.

Kwimizuzu, kubalulekile ukuqaphela ukuba siphulukene "ingxinano yesikhongozeli", i.e. inani lezikhongozeli ezihamba kwindawo enye. Sinokuba "nokuphumla" okuninzi kuxinzelelo lwetrafikhi ephantsi, kwaye kukho nethuba lokuba uya kufikelela kumthwalo weprosesa ephezulu, kodwa i-autoscaling nodes kufuneka incede ngale yokugqibela.

Iziphumo

Ndiyavuya ukupapasha ezi ziphumo zibalaseleyo kwimifuniselo kwezi veki zimbalwa zidlulileyo; sele sibonile ukuphucuka okubalulekileyo kwiimpendulo kuzo zonke iinkonzo ezilungisiweyo:

I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU

Sifumene iziphumo ezilungileyo kwiphepha lethu lasekhaya (buffer.com), apho inkonzo yakhawuleza yangena amashumi amabini anesibini amaxesha!

I-Kubernetes: Khawulezisa iinkonzo zakho ngokususa imida ye-CPU

Ngaba i-Linux kernel bug ilungisiwe?

Ewe ulungile I-bug sele ilungisiwe kwaye ukulungiswa kongezwe kwi-kernel unikezelo uguqulelo 4.19 nangaphezulu.

Nangona kunjalo, xa ufunda kubernetes iingxaki kwi-github okwesibini kaSeptemba 2020 sisafumana ukukhankanywa kwezinye iiprojekthi zeLinux ezinebug efanayo. Ndiyakholelwa ukuba ezinye izinikezelo zeLinux zisenayo le bug kwaye zisebenza nje ukuyilungisa.

Ukuba uguqulelo lwakho lokusabalalisa lungaphantsi kwe-4.19, ndingancoma ukuhlaziywa kwangoku, kodwa kuyo nayiphi na imeko kufuneka uzame ukususa izithintelo zeprosesa kwaye ubone ukuba i-throttling iyaqhubeka. Ngezantsi ungabona uluhlu oluyinxenye lweenkonzo zolawulo lweKubernetes kunye nokuhanjiswa kweLinux:

  • I-Debian: lungisa udityaniswe kuguqulelo lwamva nje losasazo, ukuqhuba, kwaye ibonakala intsha (Nge-2020 ka-Agasti). Ezinye iinguqulelo zangaphambili nazo zinokulungiswa.
  • Ubuntu: lungisa udityaniswe kwinguqulelo yamva nje Ubuntu Focal Fossa 20.04
  • I-EKS inokulungiswa okwangoku ngoDisemba ka-2019. Ukuba uguqulelo lwakho lusezantsi kunolu, kufuneka uhlaziye i-AMI.
  • kops: Ukusukela ngoJuni ka-2020 у kops 1.18+ Umfanekiso ophambili womkhosi uya kuba ngu-Ubuntu 20.04. Ukuba inguqulelo yakho yekops indala, kungafuneka ulinde ukulungiswa. Nathi silindile ngoku.
  • I-GKE (iLifu likaGoogle): Lungisa oludityanisiweyo ngoJanuwari 2020, nangona kunjalo kukho iingxaki nge-throttling zisajongwa.

Yintoni onokuyenza ukuba isilungiso silungise ingxaki ye-throttling?

Andiqinisekanga ukuba ingxaki isonjululwe ngokupheleleyo. Xa sifika kwi-kernel version kunye nokulungiswa, ndiya kuvavanya i-cluster kwaye ndihlaziye isithuba. Ukuba kukho umntu osele ehlaziyiwe, ndingathanda ukufunda iziphumo zakho.

isiphelo

  • Ukuba usebenza kunye nezikhongozeli zeDocker phantsi kweLinux (akunamsebenzi iKubernetes, Mesos, Swarm okanye ezinye), izikhongozeli zakho zinokuphulukana nokusebenza ngenxa yokuxinana;
  • Zama ukuhlaziya kuguqulelo lwamva nje lonikezelo lwakho ngethemba lokuba ibug sele ilungisiwe;
  • Ukususa imida yeprosesa kuya kusombulula ingxaki, kodwa le yindlela eyingozi ekufuneka isetyenziswe ngokuqaphela okukhulu (kungcono ukuhlaziya kuqala i-kernel kwaye uthelekise iziphumo);
  • Ukuba uyisusile imida ye-CPU, jonga ngononophelo i-CPU yakho kunye nokusetyenziswa kwememori kwaye uqiniseke ukuba izixhobo zakho ze-CPU zingaphezulu kwendlela oyisebenzisa ngayo;
  • Ukhetho olukhuselekileyo luya kuba kukwenza iipod ezizenzekelayo ukwenza ii-pods ezintsha kwimeko yomthwalo ophezulu we-hardware, ukuze i-kubernetes ibanike kwiindawo ezikhululekileyo.

Ndiyathemba ukuba esi sithuba siyakunceda uphucule ukusebenza kweenkqubo zesikhongozeli sakho.

PS kuyinto umbhali uhambelana nabafundi kunye nabahlalutyi (ngesiNgesi).


umthombo: www.habr.com

Yongeza izimvo