Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU

Hoki mai i te tau 2016 kei te Buffer kua huri ki Kubernetes, a inaianei tata ki te 60 nga pona (kei runga i te AWS) me te 1500 nga ipu kei te mahi i runga i ta maatau huinga k8s e whakahaerehia ana e kopa. Heoi, i neke matou ki te microservices na roto i te whakamatautau me te hapa, a ahakoa i muri i nga tau maha o te mahi me nga k8s kei te raru tonu matou i nga raru hou. I tenei pou ka korerohia e matou whāititanga pūtukatuka: he aha matou i whakaaro ai he mahi pai ratou me te aha i mutu ai kaore i tino pai.

Te herenga pūtukatuka me te aukati

Pērā i ētahi atu kaiwhakamahi Kubernetes, Ka tino taunaki a Google ki te whakarite i nga rohe CPU. Ki te kore he tautuhinga pera, ka taea e nga ipu kei roto i te node te tango i te mana tukatuka katoa, na reira ka puta nga tikanga Kubernetes nui (hei tauira kubelet) ka mutu te whakautu ki nga tono. No reira, ko te whakatakoto i nga rohenga PTM he huarahi pai hei tiaki i o pona.

Ka tautuhia e nga tepe o te kai-tukatuka he ipu ki te morahi o te wa PTM ka taea e ia te whakamahi mo tetahi waa motuhake (ko te taunoa ko te 100ms), ka kore rawa te ipu e neke ake i tenei tepe. I Kubernetes mo te tarai ipu me te aukati i te nui o te rohe, ka whakamahia he taputapu motuhake Mounga CFS, engari ko enei tepe PTM horihori ka mutu ka kino te mahi me te whakanui ake i te wa whakautu o o ipu.

Ka ahatia mena karekau matou e whakarite i nga rohenga tukatuka?

Ko te mate, ko matou ano i pa ki tenei raru. Kei ia node he tukanga hei whakahaere i nga ipu kubelet, ka mutu tana whakautu ki nga tono. Ko te node, ka tupu tenei, ka haere ki te kawanatanga NotReady, ka tukuna ano nga ipu mai i a ia ki tetahi atu waahi ka puta nga raruraru i runga i nga waahanga hou. Ehara i te ahuatanga pai, ki te kii i te iti rawa.

Te whakaaturanga o te raruraru o te tarai me te whakautu

Ko te inenga matua mo te aroturuki ipu ko trottling, e whakaatu ana i te maha o nga wa i werohia to ipu. I kite matou i te aro nui ki te noho mai o te tarai i roto i etahi ipu, ahakoa he taumaha te uta o te tukatuka, kaore ranei. Hei tauira, me titiro ki tetahi o a maatau API matua:

Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU

Ka kite koe i raro nei, kua whakatauhia e matou te rohe ki 800m (0.8, 80% matua ranei), me nga uara teitei ka taea 200m (20% matua). Te ahua nei i mua i te tarai i te ratonga he nui tonu te mana o te tukatuka, heoi...

Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU
Kua kite pea koe ahakoa kei raro iho te uta o te kaitukatuka i nga rohe kua tohua - kei raro rawa - kei te haere tonu te pupuhi.

I mua i tenei, ka kitea e matou etahi rauemi (raruraru i runga i te github, whakaaturanga i runga i zadano, panui ki runga omio) mo te hekenga o te mahi me te wa whakautu o nga ratonga na te aukati.

He aha tatou ka kite ai i te katereti i te iti o te uta CPU? Ko te putanga poto ko: "he pepeke kei roto i te kakano Linux e kore e tika te tarai i nga ipu me nga rohe tukatuka kua tohua." Mena kei te pirangi koe ki te ahua o te raru, ka taea e koe te panui i te whakaaturanga (видео и kuputuhi kōwhiringa) na Dave Chiluk.

Te tango i nga here PTM (me te tino tupato)

Whai muri i nga korerorero roa, i whakatau matou ki te tango i nga here o te tukatuka mai i nga ratonga katoa e pa ana ki nga mahi whakahirahira mo o maatau kaiwhakamahi.

Ehara i te mea ngawari te whakatau na te mea ka whakanuia e matou te pumau o ta matou roopu. I nga wa o mua, kua whakamatauria e matou te koretake o ta matou kahui, katahi ka pau rawa nga rauemi e nga ratonga, ka whakapoipoi i te mahi o to ratou node katoa. Inaianei kua rerekee nga mea katoa: kua marama to maatau mohio ki nga mea i tumanakohia mai i a maatau roopu, me te rautaki pai mo te whakatinana i nga huringa kua whakamaheretia.

Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU
Nga reta pakihi mo tetahi take nui.

Me pēhea te tiaki i ō kōpuku ina whakakorehia ngā here?

Wehenga o nga ratonga "kore herea":

I nga wa o mua, kua kite tatou i etahi pona ka uru ki roto i te ahua notReady, na nga ratonga i pau rawa nga rauemi.

I whakatau matou ki te tuu i aua ratonga ki nga waahanga motuhake (“kua tapaina”) kia kore ai e pokanoa ki nga ratonga “paanga”. Ko te mutunga mai, na te tohu i etahi node me te taapiri i te tawhā aro ki nga ratonga "kore hono", ka nui ake te mana whakahaere mo te kahui, ka ngawari ake ki a maatau te tautuhi i nga raru me nga node. Ki te whakahaere i nga tukanga rite, ka taea e koe te waia koe ki a koe tuhinga.

Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU

Te tautapa i te tukatuka tika me te tono mahara:

Ko ta matou tino wehi ka pau rawa atu nga rauemi a te tukanga, ka mutu te urupare ki nga tono. Mai i tenei wa (he mihi ki a Datadog) ka taea e maatau te aro turuki i nga ratonga katoa i runga i ta maatau roopu, i tirotirohia e au etahi marama o te mahi o era i whakamaherehia e maatau ki te tohu "kaore he hononga". Ka tautuhi noa ahau i te nui o te whakamahi CPU me te tawhē o te 20%, na reira ka tohatohahia te waahi i roto i te node mena ka ngana a k8s ki te tautapa i etahi atu ratonga ki te node.

Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU

Ka taea e koe te kite i te kauwhata, kua tae te kawenga morahi i runga i te tukatuka 242m Nga matua CPU (0.242 nga waahanga tukatuka). Mo te tono pūtukatuka, he nui noa te tango i tetahi tau nui ake i tenei uara. Kia mahara mai na te mea ko nga ratonga e aro nui ana ki nga kaiwhakamahi, ko nga uara kawenga teitei ka rite ki nga waka.

Me pena ano me te whakamahi mahara me nga patai, me te voila - kua rite katoa koe! Mo te haumarutanga ake, ka taea e koe te taapiri i te tauine-aunoa pod whakapae. No reira, i nga wa katoa ka nui te uta o nga rauemi, ka hangaia e te autoscaling nga putunga hou, ka tohatohahia e nga kubernetes ki nga pona me te waahi waatea. Mena karekau he waahi kei roto i te tautau, ka taea e koe te whakarite i a koe he matohi, te whirihora ranei i te taapiri o nga pona hou na roto i o raatau tohu.

Mo nga mea iti, me mahara kua ngaro tatou i roto i "kiato ipu", ara. te maha o nga ipu e rere ana i runga i te node kotahi. He maha ano pea o taatau "whakangawari" i te iti o nga waka waka, a he tupono ano ka eke koe ki te utaina nui o te kaitukatuka, engari me awhina nga nodes autoscaling ki nga mea o muri.

Результаты

E harikoa ana ahau ki te whakaputa i enei hua pai mai i nga whakamatautau i nga wiki kua pahure ake nei; kua kite matou i nga whakapainga nui mo te whakautu puta noa i nga ratonga whakarereke katoa:

Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU

I tutuki i a maatau nga hua pai i runga i ta maatau wharangi kaainga (buffer.com), i reira ka tere haere te ratonga rua tekau ma rua nga wa!

Kubernetes: Whakaterehia o ratonga ma te tango i nga rohe CPU

Kua whakatikahia te bug kernel Linux?

Ae, Kua oti kē te whakatika i te bug, ā, kua tāpirihia te whakatika ki te pata tohatoha putanga 4.19 me te teitei ake.

Heoi, i runga i te panui nga raruraru kubernetes i runga i te github mo te tuarua o Hepetema 2020 kei te haere tonu matou ki nga korero mo etahi kaupapa Linux me te peera rite. E whakapono ana ahau kei etahi tohatoha Linux kei te mau tonu tenei pepeha a kei te mahi tonu ki te whakatika.

Mena he iti ake to putanga tohatoha i te 4.19, ka tūtohu ahau kia whakahōuhia ki te mea hou, engari ahakoa he aha me ngana koe ki te tango i nga here o te tukatuka me te kite mena ka mau tonu te tarai. Kei raro ka kite koe i tetahi rarangi waahanga o nga ratonga whakahaere Kubernetes me nga tohatoha Linux:

  • Debian: whakatika whakaurua ki te putanga hou o te tohatoha, Buster, me te ahua hou (Akuhata 2020). Ka taea hoki te whakatika etahi putanga o mua.
  • Ubuntu: whakatika whakaurua ki te putanga hou Ubuntu Focal Fossa 20.04
  • Kua whakatikahia ano a EKS i Hakihea 2019. Mena he iti ake to putanga i tenei, me whakahou e koe te AMI.
  • kopa: Mai Pipiri 2020 у kops 1.18+ Ko te ahua o te kaihautu matua ko Ubuntu 20.04. Mena he tawhito to putanga o te kops, me tatari koe mo te whakatika. Ko tatou ano kei te tatari inaianei.
  • GKE (Google Cloud): Whakatika whakauru i Hanuere 2020, heoi he raruraru kei te tarai kei te mau tonu.

Me aha mena ka whakatikahia e te whakatika te raru o te tarai?

Kaore au i te tino mohio kua whakatauhia te raru. Ka tae ki te putanga kernel me te whakatika, ka whakamatau ahau i te tautau me te whakahou i te pou. Mena kua whakahouhia e tetahi, ka hiahia ahau ki te panui i o hua.

mutunga

  • Mena ka mahi tahi koe me nga ipu Docker i raro i te Linux (ahakoa Kubernetes, Mesos, Swarm, etahi atu ranei), ka ngaro pea te mahi o au ipu na te katereti;
  • Whakamātauria te whakahōu ki te putanga hōu o tō tohatoha i runga i te tumanako kua oti kē te whakatika te iro;
  • Ko te tango i nga rohe o te tukatuka ka whakaoti i te raru, engari he tikanga kino tenei me tino tupato (he pai ke ki te whakahou tuatahi i te kernel me te whakataurite i nga hua);
  • Mēnā kua tangohia e koe ngā rohenga CPU, āta aroturuki i tō PTM me te whakamahi pūmahara me te whakarite kei te nui ake o rauemi CPU i to kai;
  • Ko te whiringa haumaru ko te hanga i nga poti-aunoa ki te hanga poti hou mena he nui te utaina o nga taputapu, na nga kubernetes e tautapa ki nga pona kore utu.

Ko taku tumanako ka awhina tenei panui ki a koe ki te whakapai ake i nga mahi o o punaha ipu.

PS ko te reira te kaituhi ki nga kaipānui me nga kaikorero (i te reo Ingarihi).


Source: will.com

Tāpiri i te kōrero