Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

La 27 Mmesa kopanong Leano la 2019, e le karolo ea karolo ea "DevOps", tlaleho "Autoscaling le tsamaiso ea lisebelisoa ho Kubernetes" e fanoe. E bua ka hore na u ka sebelisa li-K8 joang ho netefatsa boteng bo phahameng ba lits'ebetso tsa hau le ho netefatsa ts'ebetso e phahameng.

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ka moetlo, re thabela ho hlahisa video ea tlaleho (Metsotso e 44, e ruta ho feta sengoloa) le kakaretso ea sehlooho ka mokhoa oa mongolo. Tsamaea!

Ha re hlahlobeng sehlooho sa tlaleho lentsoe ka lentsoe 'me re qale ho tloha qetellong.

Kubernetes

Ha re re re na le lijana tsa Docker ho moamoheli oa rona. Molelmong oa eng? Ho etsa bonnete ba ho pheta-pheta le ho itšehla thajana, e leng se lumellang hore ho be bonolo le ho tsamaisoa hantle, CI/CD. Re na le likoloi tse ngata tse joalo tse nang le lik'hontheinara.

Kubernetes o fana ka eng tabeng ee?

  1. Re emisa ho nahana ka mechini ena mme re qala ho sebetsa le "leru" sehlopha sa lijana kapa li-pods (lihlopha tsa lijana).
  2. Ho feta moo, ha re nahane le ka li-pods tsa motho ka mong, empa re laola ho fetaоlihlopha tse kholoanyane. Joalo tsa maemo a holimo re lumelle ho bolela hore ho na le template ea ho tsamaisa mosebetsi o itseng, 'me mona ke palo e hlokahalang ea maemo a ho e tsamaisa. Haeba ka mor'a moo re fetola template, maemo ohle a tla fetoha.
  3. Ka thuso ea declarative API Sebakeng sa ho etsa tatellano ea litaelo tse ikhethileng, re hlalosa "sebopeho sa lefats'e" (ho YAML), se entsoeng ke Kubernetes. Hape hape: ha tlhaloso e fetoha, pontšo ea eona ea sebele le eona e tla fetoha.

Tsamaiso ea lisebelisoa

CPU

A re matheng nginx, php-fpm le mysql ho seva. Litšebeletso tsena li tla ba le lits'ebetso tse ngata le ho feta, tse hlokang lisebelisoa tsa komporo:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)
(linomoro tse selaeteng ke "lipapakhai", tlhokahalo e hlakileng ea ts'ebetso ka 'ngoe bakeng sa matla a komporo)

Ho etsa hore ho be bonolo ho sebetsa le sena, hoa utloahala ho kopanya mekhoa ka lihlopha (mohlala, mekhoa eohle ea nginx ho sehlopha se le seng "nginx"). Mokhoa o bonolo le o hlakileng oa ho etsa sena ke ho beha sehlopha ka seng ka har'a setshelo:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ho tsoela pele, o hloka ho hopola hore na setshelo ke eng (ho Linux). Ponahalo ea bona e ile ea khoneha ka lebaka la likarolo tse tharo tsa bohlokoa ka har'a kernel, tse sebelisitsoeng khale haholo: Bokhoni, mabitso a mabitso и lihlopha. 'Me nts'etsopele e eketsehileng e ile ea thusoa ke mahlale a mang (ho kenyeletsoa "likhetla" tse bonolo joalo ka Docker):

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Boemong ba tlaleho, re thahasella feela lihlopha, hobane lihlopha tsa taolo ke karolo ea ts'ebetso ea lijana (Docker, joalo-joalo) tse sebelisang taolo ea lisebelisoa. Mekhoa e kopantsoeng ka lihlopha, joalo ka ha re ne re batla, ke lihlopha tsa taolo.

Ha re khutleleng litlhoko tsa CPU bakeng sa lits'ebetso tsena, 'me joale bakeng sa lihlopha tsa lits'ebetso:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)
(Ke pheta hore linomoro tsohle ke polelo e hlakileng ea tlhoko ea lisebelisoa)

Ka nako e ts'oanang, CPU ka boeona e na le mohloli o itseng o lekanyelitsoeng (mohlala ona ke 1000), eo e mong le e mong a ka e hlokang (kakaretso ea litlhoko tsa lihlopha tsohle ke 150+850+460=1460). Ho tla etsahala’ng tabeng ee?

Kernel e qala ho aba lisebelisoa 'me e e etsa "ka toka", e fana ka lisebelisoa tse lekanang ho sehlopha ka seng. Empa tabeng ea pele, ho na le tse ngata ho feta tse hlokahalang (333> 150), kahoo chelete e feteletseng (333-150 = 183) e ntse e bolokiloe, e boetse e ajoa ka ho lekana pakeng tsa lijana tse ling tse peli:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ka lebaka leo: setshelo sa pele se ne se e-na le mehloli e lekaneng, ea bobeli - e ne e se na lisebelisoa tse lekaneng, ea boraro - e ne e se na lisebelisoa tse lekaneng. Sena ke phello ea liketso "Botšepehi" kemiso ho Linux - CFS. Ts'ebetso ea eona e ka fetoloa ho sebelisoa kabelo boima e 'ngoe le e 'ngoe ea linkho. Ka mohlala, joalo ka:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ha re shebeng taba ea khaello ea lisebelisoa ka har'a setshelo sa bobeli (php-fpm). Lisebelisoa tsohle tsa lijana li ajoa ka ho lekana lipakeng tsa lits'ebetso. Ka lebaka leo, ts'ebetso ea master e sebetsa hantle, empa basebetsi bohle ba fokotsa lebelo, ba fumana ka tlase ho halofo ea seo ba se hlokang:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ena ke tsela eo kemiso ea CFS e sebetsang ka eona. Re tla tsoela pele ho bitsa litekanyo tseo re li abelang linkho likopo. Hobaneng ho le joalo - sheba ho ea pele.

A re shebeng boemo bohle ho tloha ka lehlakoreng le leng. Joalokaha u tseba, litsela tsohle li lebisa Roma, 'me tabeng ea k'homphieutha, ho ea ho CPU. CPU e le 'ngoe, mesebetsi e mengata - o hloka lebone la sephethephethe. Tsela e bonolo ka ho fetisisa ea ho laola lisebelisoa ke "leseli la sephethephethe": ba file ts'ebetso e le 'ngoe nako e tsitsitseng ea ho kena ho CPU, ebe e latelang, joalo-joalo.

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Mokhoa ona o bitsoa hard quotas (thibelo e thata). Ha re e hopole feela joalo ka meeli. Leha ho le joalo, haeba u aba meeli ho lijana tsohle, bothata bo hlaha: mysql e ne e khanna tseleng 'me ka nako e' ngoe tlhoko ea eona ea CPU e felile, empa lits'ebetso tse ling kaofela li tlameha ho ema ho fihlela CPU. e se nang letho.

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ha re khutlele ho Linux kernel le tšebelisano ea eona le CPU - setšoantšo se akaretsang se tjena:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

cgroup e na le litlhophiso tse peli - ha e le hantle tsena ke "li-twist" tse peli tse bonolo tse u lumellang ho tseba:

  1. boima ba setshelo (likopo) ke e arolelanoa;
  2. peresente ea kakaretso ea nako ea CPU bakeng sa ho sebetsa mesebetsing ea setshelo (meeli) ke quota.

Mokhoa oa ho lekanya CPU?

Ho na le mekhoa e fapaneng:

  1. seo li-parrots, ha ho motho ea tsebang - o hloka ho buisana nako le nako.
  2. Thahasello e hlakileng, empa e amana: 50% ea seva e nang le li-cores tse 4 le li-cores tse 20 ke lintho tse fapaneng ka ho feletseng.
  3. U ka sebelisa tse seng li boletsoe boima, eo Linux e e tsebang, empa hape e amana.
  4. Khetho e nepahetseng ka ho fetesisa ke ho lekanya lisebelisoa tsa komporo metsotsoana. Tseo. ka metsotsoana ea nako ea processor e amanang le metsotsoana ea nako ea nnete: motsotsoana o le mong oa nako ea processor o fanoe ka motsotsoana o le mong oa 'nete - ona ke konokono e le 'ngoe ea CPU.

Ho etsa hore ho be bonolo le ho feta ho bua, ba ile ba qala ho lekanya ka kotloloho lithollo, e bolelang ka bona nako e tšoanang ea CPU e amanang le ea 'nete. Kaha Linux e utloisisa litekanyo, empa eseng nako e ngata ea CPU / li-cores, ho ne ho hlokahala mochine ho fetolela ho tloha ho o mong ho ea ho o mong.

Ha re nahaneng ka mohlala o bonolo ka seva e nang le li-cores tse 3 tsa CPU, moo li-pods tse tharo li tla fuoa litekanyo (500, 1000 le 1500) tse fetoloang habonolo likarolong tse tsamaellanang tsa li-cores tse fanoeng ho tsona (0,5, 1 le 1,5).

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Haeba u nka seva sa bobeli, moo ho tla ba le li-cores tse peli (6), 'me u behe li-pods tse tšoanang moo, kabo ea li-cores e ka baloa habonolo ka ho atisa 2 (1, 2 le 3, ka ho latellana). Empa motsotso oa bohlokoa o etsahala ha pod ea bone e hlaha ho seva sena, seo boima ba sona, bakeng sa boiketlo bo tla ba 3000. E nka karolo ea lisebelisoa tsa CPU (halofo ea li-cores), 'me bakeng sa li-pods tse setseng li khutlisetsoa (halved):

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Lisebelisoa tsa Kubernetes le CPU

Ho Kubernetes, lisebelisoa tsa CPU hangata li lekantsoe miliadrax, ke. 0,001 cores e nkoa e le boima ba motheo. (Ntho e tšoanang ho Linux/cgroup terminology e bitsoa share CPU, leha, ka nepo, 1000 millicores = 1024 CPU share.) K8s e netefatsa hore ha e behe li-pods tse ngata ho seva ho feta ho na le lisebelisoa tsa CPU bakeng sa kakaretso ea boima ba li-pods tsohle.

See se etsahala joang? Ha o eketsa seva ho sehlopha sa Kubernetes, ho tlalehoa hore na e na le li-cores tse kae tsa CPU. Mme ha o theha pod e ncha, mohlophisi oa Kubernetes o tseba hore na pod ena e tla hloka li-cores tse kae. Kahoo, pod e tla abeloa ho seva moo ho nang le li-cores tse lekaneng.

Ho tla etsahalang haeba ha kopo e hlalositsoe (ke hore pod ha e na palo e hlalositsoeng ea li-cores eo e e hlokang)? Ha re boneng hore na Kubernetes ka kakaretso e bala lisebelisoa joang.

Bakeng sa pod o ka hlakisa likopo tse peli (sehlophisi sa CFS) le meeli (u hopole lebone la sephethephethe?):

  • Haeba li hlalosoa li lekana, joale pod e abeloa sehlopha sa QoS netefalitsoe. Palo ena ea li-cores e lula e fumaneha ho eona e tiisitsoe.
  • Haeba kopo e le tlase ho moeli - sehlopha sa QoS phatloha. Tseo. Re lebelletse hore pod, mohlala, e tla lula e sebelisa 1 core, empa boleng bona ha se moeli bakeng sa eona: иногда pod e ka sebelisa ho feta (ha seva se na le lisebelisoa tsa mahala bakeng sa sena).
  • Ho boetse ho na le sehlopha sa QoS mosebetsi o motle ka ho fetisisa - e kenyelletsa li-pods tseo kopo e sa boleloang ka tsona. Lisebelisoa li fuoa bona qetellong.

memori.hlahloba

Ka mohopolo, boemo bo tšoana, empa bo fapane hanyane - ka mor'a tsohle, mofuta oa lisebelisoa tsena o fapane. Ka kakaretso, papiso e tjena:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ha re boneng hore na likopo li kengoa ts'ebetsong joang mohopolong. Lumella li-pods li phele ho seva, li fetola tšebeliso ea mohopolo, ho fihlela e 'ngoe ea tsona e ba kholo hoo e felloang ke mohopolo. Tabeng ena, 'molai oa OOM o hlaha' me o bolaea ts'ebetso e kholo ka ho fetisisa:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Sena ha se kamehla se re tšoanelang, kahoo hoa khoneha ho laola hore na ke mekhoa efe ea bohlokoa ho rona mme ha ea lokela ho bolaoa. Ho etsa sena, sebelisa parameter oom_score_adj.

Ha re khutleleng lihlopheng tsa QoS tsa CPU 'me re etse papiso le litekanyetso tsa oom_score_adj tse khethollang lintho tse tlang pele ho tšebeliso ea mohopolo bakeng sa li-pods:

  • Boleng bo tlase ba oom_score_adj bakeng sa pod - -998 - bo bolela hore pod e joalo e lokela ho bolaoa qetellong, sena. netefalitsoe.
  • E phahameng ka ho fetisisa - 1000 - ke mosebetsi o motle ka ho fetisisa, li-pods tse joalo li bolaoa pele.
  • Ho bala litekanyetso tse setseng (phatloha) ho na le moralo, oo moelelo oa oona o ipapisang le taba ea hore ha pod e kōpile lisebelisoa tse ngata, ho na le monyetla o fokolang oa hore e bolaoe.

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ea bobeli "sotha" - limit_in_bytes - bakeng sa meeli. Ka eona, ntho e 'ngoe le e' ngoe e bonolo: re fana feela ka boholo ba memori e fanoeng, 'me mona (ho fapana le CPU) ha ho na potso ea hore na u ka e lekanya joang (memori).

Kakaretso

Pod e 'ngoe le e' ngoe e Kubernetes e fanoe requests и limits - liparamente ka bobeli tsa CPU le memori:

  1. e ipapisitse le likopo, ho sebetsa ho Kubernetes scheduler, e abang li-pods har'a li-server;
  2. ho ipapisitsoe le liparamente tsohle, sehlopha sa QoS sa pod se ikemiselitse;
  3. Boima bo lekanang bo baloa ho ipapisitsoe le likopo tsa CPU;
  4. kemiso ea CFS e hlophisoa ho latela likopo tsa CPU;
  5. OOM killer e hlophisitsoe ho ipapisitsoe le likopo tsa memori;
  6. "lebone la sephethephethe" le lokiselitsoe ho latela meeli ea CPU;
  7. Ho ipapisitsoe le meeli ea memori, moeli o lokiselitsoe sehlopha.

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Ka kakaretso, setšoantšo sena se araba lipotso tsohle mabapi le hore na karolo e ka sehloohong ea tsamaiso ea lisebelisoa e etsahala joang Kubernetes.

Autoscaling

K8s cluster-autoscaler

Ha re nahane hore sehlopha sohle se se se ntse se tšoaretsoe 'me pod e ncha e hloka ho etsoa. Le hoja pod e ke ke ea hlaha, e leketlile boemong a ntse a emetse. E le hore e hlahe, re ka hokahanya seva se secha ho sehlopha kapa ... kenya cluster-autoscaler, e tla re etsetsa eona: laela mochine oa sebele ho tsoa ho mofani oa maru (ho sebelisa kopo ea API) ebe o o hokahanya le sehlopha. , ka mor'a moo pod e tla ekeletsoa .

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Sena ke autoscaling ea sehlopha sa Kubernetes, se sebetsang hantle (ka boiphihlelo ba rona). Leha ho le joalo, joalo ka libakeng tse ling, ho na le li-nuances tse ling mona ...

Hafeela re ntse re eketsa boholo ba lihlopha, ntho e 'ngoe le e' ngoe e ne e le hantle, empa ho etsahala'ng ha sehlopha a qala ho itokolla? Bothata ke hore ho falla ha li-pods (ho lokolla mabotho) ho thata haholo ka botekgeniki ebile ho theko e boima ho latela lisebelisoa. Kubernetes o sebelisa mokhoa o fapaneng ka ho felletseng.

Nahana ka sehlopha sa li-server tse 3 tse nang le Deployment. E na le li-pods tse 6: joale ho na le tse 2 bakeng sa seva ka seng. Ka lebaka le itseng re ne re batla ho tima e 'ngoe ea li-server. Ho etsa sena re tla sebelisa taelo kubectl drain, e leng:

  • e tla thibela ho romela li-pods tse ncha ho seva sena;
  • e tla hlakola li-pods tse teng ho seva.

Kaha Kubernetes o ikarabella ho boloka palo ea li-pods (6), e bonolo e tla bopa bocha bona libakeng tse ling, empa eseng ho e holofetseng, kaha e se e tšoailoe hore ha e fumanehe bakeng sa ho amohela li-pods tse ncha. Ena ke mochini oa mantlha oa Kubernetes.

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Leha ho le joalo, ho boetse ho na le nuance mona. Boemong bo ts'oanang, bakeng sa StatefulSet (ho e-na le Deployment), liketso li tla fapana. Hona joale re se re ntse re e-na le kopo e hlakileng - ka mohlala, li-pods tse tharo tse nang le MongoDB, e 'ngoe ea tsona e nang le bothata ba mofuta o itseng (data e senyehile kapa phoso e' ngoe e thibelang pod ho qala ka nepo). Mme re boetse re etsa qeto ea ho tima seva e le 'ngoe. Ho tla etsahala'ng?

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

MongoDB ka khona shoa hobane e hloka quorum: bakeng sa sehlopha sa lits'ebetso tse tharo, bonyane tse peli li tlameha ho sebetsa. Leha ho le joalo, sena ha e etsahale - ka lebaka la PodDisruptionBudget. Paramethara ena e etsa qeto ea bonyane palo e hlokahalang ea li-pods tse sebetsang. Ho tseba hore e 'ngoe ea li-pods tsa MongoDB ha e sa sebetsa, le ho bona hore PodDisruptionBudget e hlophiselitsoe MongoDB. minAvailable: 2, Kubernetes e ke ke ea u lumella ho hlakola pod.

Ntlha ea bohlokoa: e le hore motsamao ('me ha e le hantle, ho tsosolosoa) ha li-pods li sebetse ka mokhoa o nepahetseng ha sehlopha se lokolloa, hoa hlokahala ho lokisa PodDisruptionBudget.

Sekala se otlolohileng

A re hlahlobeng boemo bo bong. Ho na le kopo e sebetsang e le Deployment ho Kubernetes. Sephethephethe sa basebelisi se tla ho li-pods tsa sona (mohlala, ho na le tse tharo tsa tsona), 'me re lekanya letšoao le itseng ho tsona (re re, CPU load). Ha mojaro o ntse o eketseha, re e rekota ka kemiso ebe re eketsa palo ea li-pods ho aba likopo.

Kajeno ho Kubernetes sena ha se hloke ho etsoa ka letsoho: keketseho ea othomathike / phokotso ea palo ea li-pods e lokisoa ho latela boleng ba matšoao a boima a lekantsoeng.

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Lipotso tsa mantlha mona ke: seo hantle ho lekanya и mokhoa oa ho toloka ba fumane boleng (bakeng sa ho etsa qeto ea ho fetola palo ea li-pods). O ka lekanya haholo:

Autoscaling le taolo ea lisebelisoa ho Kubernetes (tlhahlobo le tlaleho ea video)

Mokhoa oa ho etsa sena ka botekgeniki - bokella metrics, joalo-joalo. - Ke buile ka ho qaqileng tlalehong e mabapi le Tlhokomelo le Kubernetes. 'Me keletso e ka sehloohong ea ho khetha li-parameter tse nepahetseng ke teko!

Ho na le SEBELISA mokhoa (Tlhahiso ea Tšebeliso le Liphoso), seo moelelo oa sona o leng ka tsela e latelang. Ke motheong ofe hoa utloahala ho lekanya, mohlala, php-fpm? Ho latela taba ea hore basebetsi ba felloa ke matla, sena se tshebediso. 'Me haeba basebetsi ba felile' me likhokahano tse ncha li sa amoheloe, sena se se se ntse se le teng ho tlala. Mekhahlelo ena ka bobeli e tlameha ho lekanyetsoa, ​​'me ho latela boleng, ho lekanya ho tlameha ho etsoa.

Ho e-na phetheha

Tlaleho e na le ts'ebetso: mabapi le ho phahamisa holimo le mokhoa oa ho khetha lisebelisoa tse nepahetseng. Ke tla bua ka sena livideong tse tlang ho YouTube ea rona - Ingolise e le hore u se ke oa fetoa!

Lifitio le li-slide

Video ea tšebetso (metsotso e 44):

Tlhahiso ea tlaleho:

PES

Litlaleho tse ling ka Kubernetes ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso