Ko nga tepe PTM me te tarai kaitaua ki Kubernetes

Tuhipoka. whakamaori.: Ko tenei hitori whakatuwhera-kanohi o Omio—he whakahiato haerenga Pakeha—ka kawe i nga kaipānui mai i te ariā taketake ki nga mahi whakahihiri o te whirihoranga Kubernetes. Ko te mohio ki nga keehi penei ka awhina i te whakawhānui ake i o tirohanga, engari ka aukati i nga raru kore-iti.

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes

Kua u tonu tetahi tono, mutu te whakautu ki nga arowhai hauora, kaore koe e mohio he aha? Ko tetahi whakamaramatanga e pa ana ki nga tepe motunga rauemi CPU. Koinei ta tatou e korero ai i tenei tuhinga.

TL; DR:
E tino taunaki ana matou kia whakakorehia nga tepe PTM i Kubernetes (whakakorehia ranei nga motunga CFS i Kubelet) mena kei te whakamahi koe i tetahi putanga o te kakano Linux me tetahi pepeha motunga CFS. I roto i te matua Kei te waatea tino me tino mohiotia he bug e arai atu ana ki te tohe nui me te whakaroa
.

Kei Omio Ko nga hanganga katoa e whakahaerehia ana e Kubernetes. Katoa o a maatau kawenga mahi tuuturu me te kore whenua ka rere anake i runga i nga Kubernetes (ka whakamahi matou i te Google Kubernetes Engine). I roto i nga marama e ono kua taha ake nei, i timata matou ki te kite i nga heke ohorere. Ka whakatio, ka mutu ranei te urupare ki nga arowhai hauora, ka ngaro te hononga ki te whatunga, aha atu. He roa tenei whanonga i pohehe i a maua, ka mutu ka whakatauhia e maua te whakaaro nui ki te raruraru.

Whakarāpopototanga o te tuhinga:

  • He kupu torutoru mo nga ipu me nga Kubernetes;
  • Me pehea te whakatinanatanga o nga tono me nga rohenga CPU;
  • He pehea te mahi a te rohe CPU i roto i nga taiao maha-matua;
  • Me pehea te whai i te aukati CPU;
  • Te otinga raruraru me nga ahuatanga.

He kupu torutoru mo nga ipu me nga Kubernetes

Ko Kubernetes te paerewa hou o te ao hangahanga. Ko tana mahi matua ko te whakahaere ipu.

Tuhinga

I nga wa o mua, me hanga e matou nga taonga penei i nga Java JARs/WARs, Python Eggs, me nga mea whakahaere hei whakahaere i runga i nga kaitoro. Heoi, kia pai ai te mahi, me mahi etahi atu mahi: te whakauru i te waahi whakahaere (Java/Python), te whakanoho i nga konae e tika ana ki nga waahi tika, me te whakarite i te hototahi ki tetahi putanga motuhake o te punaha whakahaere, aha atu. I etahi atu kupu, me aro nui ki te whakahaere whirihoranga (he maha tonu te take o te tautohetohe i waenga i nga kaihanga me nga kaiwhakahaere punaha).

I hurihia e nga ipu nga mea katoa. Inaianei he ahua ipu te taonga. Ka taea te tohu hei ahua o te konae ka taea te toro atu kei roto ehara i te kaupapa anake, engari ano hoki he taiao mahi katoa (Java/Python/...), me nga konae e tika ana, kua oti te whakauru me te rite ki te mahi. rere. Ka taea te tuku i nga ipu ka rere ki runga i nga tuunga rereke kaore he waahanga taapiri.

I tua atu, ka mahi nga ipu ki roto i o raatau ake taiao pouaka kirikiri. Kei a raatau ake taapiri whatunga mariko, a raatau ake punaha konae me te iti o te urunga, o raatau ake tikanga whakahaere, o raatau ake herenga i runga i te PTM me te mahara, me era atu. Ka whakatinanahia enei mea katoa na te punaha iti o te kernel Linux - nga waahi ingoa.

Kubernetes

Ka rite ki te korero i mua ake nei, ko Kubernetes te kaitoi ipu. He penei te mahi: ka hoatu e koe he puna miihini, katahi ka kii: "Kia, e Kubernetes, kia rewa kia tekau nga wahanga o taku ipu me te 2 tukatuka me te 3 GB o te mahara ki ia tangata, kia rere tonu!" Ma nga Kubernetes e tiaki te toenga. Ka kitea te kaha kore utu, ka whakarewahia nga ipu ka whakaara ano mena ka tika, ka whakaputahia he whakahou ka huri i nga putanga, aha atu. Ko te tikanga, ka taea e Kubernetes te tango i te waahanga taputapu me te hanga i nga momo punaha e tika ana mo te tuku me te whakahaere tono.

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes
Kubernetes mai i te tirohanga a te reimana

He aha nga tono me nga rohe kei Kubernetes

Kaati, kua hipokina e matou nga ipu me nga Kubernetes. Kei te mohio ano matou he maha nga ipu ka noho ki runga i te miihini kotahi.

Ka taea te tuhi i tetahi whakataurite ki te whare noho tahi. He waahi whanui (miihini/waahanga) ka haria ka riihitia ki etahi kairëti (putea). Ka mahi a Kubernetes hei kaihokohoko. Ka puta ake te patai, me pehea te pupuri i nga kairëti i nga taupatupatu ki a raua ano? He aha mena ka whakatau tetahi o ratou ki te nama i te wharepaku mo te haurua o te ra?

I konei ka uru mai nga tono me nga rohe. PTM tono e hiahiatia ana mo nga kaupapa whakamahere. He rite tenei ki te "rarangi hiahia" o te ipu, ka whakamahia hei whiriwhiri i te node tino pai. I te wa ano ko te PTM tepe ka taea te whakataurite ki tetahi kirimana riihi - ina kowhiria he waahanga mo te ipu, te e kore e taea haere ki tua atu i nga rohe kua whakaritea. Na konei ka puta te raruraru...

Me pehea te whakatinana i nga tono me nga rohe ki Kubernetes

Ka whakamahi a Kubernetes i tetahi tikanga whakamaarama (te peke i nga huringa karaka) i hangaia ki roto i te kernel hei whakatinana i nga tepe PTM. Mēnā ka nui ake te tepe o te tono, ka whakahohehia te whakamaarama (arā, he iti ake nga huringa CPU). He rereke te whakaritenga o nga tono me nga rohe mo te mahara, no reira he maamaa ake te kite. Ki te mahi i tenei, tirohia noa te mana whakaara ano whakamutunga o te peera: ahakoa he "OOMKilled". Ehara i te mea tino ngawari te whakamaoritanga CPU, na te mea ka tukuna noa e K8 nga inenga ma te whakamahi, ehara ma nga roopu c.

Tono PTM

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes
Me pehea te whakatinana tono PTM

Mo te ngawari, me titiro ki te mahi ma te miihini me te PTM 4-matua hei tauira.

Ka whakamahi a K8s i te tikanga roopu whakahaere (cgroups) hei whakahaere i te tohatoha rauemi (mahara me te tukatuka). E waatea ana he tauira arowhai mo taua mea: ka riro i te tamaiti nga rohe o te roopu matua. Ko nga korero tohatoha kei te rongoa i roto i te punaha konae mariko (/sys/fs/cgroup). I roto i te take o te pūtukatuka ko tenei /sys/fs/cgroup/cpu,cpuacct/*.

Ka whakamahia e K8s te konae cpu.share ki te tohatoha rauemi tukatuka. I roto i to maatau, ka whiwhi te cgroup pakiaka 4096 nga hea o nga rauemi CPU - 100% o te mana tukatuka e waatea ana (1 matua = 1024; he uara pumau tenei). Ka tohatohahia e te roopu pakiaka nga rauemi i runga i nga waahanga o nga uri kua rehitatia cpu.share, a ko ratou, ka pera ano me o ratou uri, etc. I runga i te node Kubernetes, e toru nga tamariki o te roopu c: system.slice, user.slice и kubepods. Ka whakamahia nga roopu iti tuatahi e rua ki te tohatoha rauemi i waenga i nga kawenga punaha tino nui me nga kaupapa kaiwhakamahi kei waho o nga K8. Ko te whakamutunga - kubepods — i hangaia e Kubernetes hei tohatoha rauemi i waenga i nga poti.

Ko te hoahoa i runga ake nei e whakaatu ana i whakawhiwhia nga roopu-iti tuatahi me te tuarua 1024 nga hea, me te roopu iti kuberpod kua tohaina 4096 hea Me pehea e taea ai tenei: i muri i nga mea katoa, ko te roopu pakiaka anake te uru 4096 hea, a ko te tapeke o nga hea o ana uri kua nui ke atu i tenei nama (6144)? Ko te tohu ko te uara he tikanga arorau, no reira ka whakamahia e te kaiwhakariterite Linux (CFS) ki te tohatoha i nga rauemi CPU. I roto i to maatau, ka whiwhi nga roopu tuatahi e rua 680 nga hea tino (16,6% o te 4096), ka riro i te kubepod te toenga 2736 hea I te wa e paheke ana, kaore nga roopu tuatahi e whakamahi i nga rauemi kua tohatohahia.

Waimarie, he tikanga to te kaihōtaka hei karo i te moumou rawa o nga rauemi CPU kaore i whakamahia. Ka whakawhitihia e ia te kaha "kaore" ki te puna wai o te ao, ka tohatohahia ki nga roopu e hiahia ana ki te kaha o te tukatuka (ka puta te whakawhitinga i roto i nga roopu kia kore ai e huri i nga mate). He rite te tikanga ki nga uri uri katoa.

Ko tenei tikanga ka whakarite i te tohatoha tika o te mana tukatuka me te whakarite kia kore tetahi e mahi "tahae" rauemi mai i etahi atu.

Tepe PTM

Ahakoa he rite te ahua o nga whirihoranga o nga rohe me nga tono i roto i nga K8, he tino rereke te whakatinanatanga: tenei tino whakapohehe me te waahanga iti rawa i tuhia.

Ka uru a K8s Tikanga motunga CFS ki te whakatinana rohe. Kua tohua o raatau tautuhinga ki nga konae cfs_period_us и cfs_quota_us i te raarangi cgroup (kei reira ano te konae cpu.share).

Rerekē cpu.share, ko te motunga kei runga wā wā, kaore i runga i te mana tukatuka e waatea ana. cfs_period_us ka tohu i te roanga o te waa (waa) - he 100000 μs (100 ms) tonu. He whiringa ki te huri i tenei uara i roto i nga K8, engari kei te waatea noa i te alpha mo tenei wa. Ka whakamahi te kaihōtaka i te waa ki te whakaara ano i nga motunga kua whakamahia. Kōnae tuarua cfs_quota_us, ka whakapūtā i te wā e wātea ana (motunga) i ia wā. Kia mahara kua tohua ano i roto i nga microseconds. Ko te motunga ka nui ake i te roa o te waa; i etahi atu kupu, ka nui ake pea i te 100 ms.

Ka titiro tatou ki nga ahuatanga e rua mo nga miihini 16-matua (te momo rorohiko tino noa kei a tatou i Omio):

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes
Tauari 1: 2 miro me te tepe 200 ms. Karekau he whakamaroke

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes
Tauari 2: 10 miro me te 200 ms tepe. Ka timata te tarai i muri i te 20 ms, ka hoki ano te uru ki nga rauemi tukatuka i muri i te 80 ms

Me kii kua tautuhia e koe te tepe PTM ki 2 kākano; Ka whakamaoritia e Kubernetes tenei uara ki te 200 ms. Ko te tikanga ka taea e te ipu te whakamahi i te 200ms morahi o te wa PTM me te kore e tarai.

Na konei ka timata te ngahau. Ka rite ki te korero i runga ake nei, ko te motunga e waatea ana ko te 200 ms. Mena kei te mahi whakarara koe tekau nga miro i runga i te miihini 12-matua (tirohia te whakaahuatanga mo te ahuatanga 2), i te wa e mangere ana era atu pene, ka pau te motunga i roto noa i te 20 ms (mai i te 10 * 20 ms = 200 ms), ka iri nga miro katoa o tenei pene. » (kātere) mo te 80 ms e whai ake nei. Ko nga korero kua whakahuatia ake nei bug whakahōtaka, na te mea he nui rawa te katereti ka kore e taea e te ipu te whakatutuki i te motunga o naianei.

Me pehea te aromatawai i te pupuhi i roto i nga putea?

Takiuru noa ki te poti ka mahia cat /sys/fs/cgroup/cpu/cpu.stat.

  • nr_periods — te tapeke o nga wa whakarite;
  • nr_throttled - te maha o nga wa kaaiti i roto i te hanganga nr_periods;
  • throttled_time — te wa maataa i roto i nga nanohekona.

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes

He aha te tino mahi?

Ko te mutunga mai, ka whiwhi tatou i te tere tere i roto i nga tono katoa. I etahi wa kei roto ia kotahi me te hawhe nga wa kaha ake i te tatau!

He maha nga hapa ka puta - he rahua te tirotiro i te reri, ka tio ipu, ka mutu te hononga whatunga, te wa i roto i nga waea ratonga. Ko te mutunga ka piki ake te roanga me te nui ake o nga reiti hapa.

Te whakatau me nga hua

He ngawari nga mea katoa i konei. I whakarerea e matou nga rohe o te PTM ka tiimata ki te whakahou i te kakano OS i roto i nga tautau ki te putanga hou, i whakatikahia ai te pepeke. Ko te maha o nga hapa (HTTP 5xx) i roto i a maatau ratonga i tino heke iho:

Nga hapa HTTP 5xx

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes
Nga hapa HTTP 5xx mo tetahi ratonga tino nui

Wā whakautu p95

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes
Tohenga tono ratonga tino nui, 95 ōrau

Nga utu whakahaere

Ko nga tepe PTM me te tarai kaitaua ki Kubernetes
Te maha o nga haora i pau

He aha te hopu?

Ka rite ki te korero i te timatanga o te tuhinga:

Ka taea te tuhi i tetahi whakataurite ki tetahi whare noho tahi... Ko Kubernetes te mahi hei kaihokohoko. Engari me pehea te pupuri i nga kairëti mai i nga tautohetohe tetahi ki tetahi? He aha mena ka whakatau tetahi o ratou ki te nama i te wharepaku mo te haurua o te ra?

Anei te hopu. Ka taea e tetahi ipu maharahara te kai i nga rauemi CPU katoa kei runga miihini. Mena kei a koe he puranga tono atamai (hei tauira, JVM, Haere, Node VM kua tika te whirihora), na ehara tenei i te raruraru: ka taea e koe te mahi i roto i nga ahuatanga mo te wa roa. Engari mena he iti te arotautanga o nga tono, kaore ranei i tino arotauhia (FROM java:latest), ka ngaro pea te ahuatanga. I Omio kua whakaaunoatia e matou nga konae Dockerfiles me nga tautuhinga taunoa tika mo te puranga reo nui, no reira karekau tenei take.

Ka tūtohu mātou kia aroturuki i ngā inenga WHAKAMAHI (whakamahinga, waiwai me nga hapa), te roa o te API me te reiti hapa. Me whakarite kia tutuki nga hua ki nga tumanakohanga.

tohutoro

Ko ta matou korero tenei. Ko nga rauemi e whai ake nei i tino awhina ki te mohio ki nga mea e tupu ana:

Ko nga purongo bug Kubernetes:

Kua pa ki a koe etahi raruraru rite i roto i to mahi, he wheako ranei e pa ana ki te tarai i roto i nga taiao whakaputa ipu? Tuhia to korero i roto i nga korero!

PS mai i te kaiwhakamaori

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero