Kubernetes darbinieku mezgli: daudzi mazi vai vairāki lieli?

Kubernetes darbinieku mezgli: daudzi mazi vai vairāki lieli?
Veidojot Kubernetes klasteru, var rasties jautājumi: cik darbinieku mezglus konfigurēt un kāda veida? Kas ir labāks lokālam klasterim: iegādājieties vairākus jaudīgus serverus vai izmantojiet duci vecu iekārtu savā datu centrā? Vai labāk mākonī uzņemt astoņus viena kodola vai divus četrkodolu gadījumus?

Atbildes uz Å”iem jautājumiem ir atrodamas rakstā. Daniels Veibels, programmatÅ«ras inženieris un Learnk8s izglÄ«tÄ«bas projekta skolotājs pavēles tulkojumā Kubernetes aaS no Mail.ru.

Klasteru kapacitāte

Kopumā Kubernetes kopu var uzskatÄ«t par lielu "supermezglu". Tā kopējā skaitļoÅ”anas jauda ir visu to veidojoÅ”o mezglu jaudu summa.

Ir vairāki veidi, kā sasniegt vēlamo klastera jaudas mērÄ·i. Piemēram, mums ir nepiecieÅ”ams klasteris ar kopējo jaudu 8 procesora kodoliem un 32 GB RAM, jo lietojumprogrammu komplektam ir nepiecieÅ”ams tik daudz resursu. Pēc tam varat instalēt divus mezglus ar 16 GB atmiņu vai četrus mezglus ar 8 GB atmiņu, divus četrkodolu procesorus vai četrus divkodolu procesorus.

Šeit ir tikai divi iespējamie veidi, kā izveidot klasteru.

Kubernetes darbinieku mezgli: daudzi mazi vai vairāki lieli?
Abas opcijas rada kopu ar vienādu jaudu, bet apakŔējā konfigurācijā ir četri mazāki mezgli, bet augŔējā konfigurācijā ir divi lielāki mezgli.

KurŔ variants ir labāks?

Lai atbildētu uz Å”o jautājumu, apskatÄ«sim abu iespēju priekÅ”rocÄ«bas. Mēs tos esam apkopojuÅ”i tabulā.

Vairāki lieli mezgli

Daudzi mazi mezgli

VienkārŔāka klasteru pārvaldība (ja tā ir uz vietas)

VienmērÄ«ga automātiskā mērogoÅ”ana

Lētāk (ja uz vietas)

Cena nedaudz atŔķiras (mākonī)

Var palaist resursietilpīgas lietojumprogrammas

Pilna replikācija

Resursi tiek izmantoti efektīvāk (mazāk sistēmas dēmonu pieskaitāmās izmaksas
Augstāka klasteru kļūdu tolerance

Lūdzu, ņemiet vērā, ka mēs runājam tikai par darbinieku mezgliem. Galveno mezglu skaita un lieluma izvēle ir pavisam cita tēma.

Tātad, apspriedīsim katru punktu no tabulas sīkāk.

Pirmā iespēja: vairāki lieli mezgli

Ekstrēmākā iespēja ir viens darbinieka mezgls visai klastera jaudai. IepriekÅ” minētajā piemērā tas bÅ«tu viens darbinieka mezgls ar 16 CPU kodoliem un 16 GB RAM.

Plusi

Plus Nr. 1. Vieglāka vadība
Ir vieglāk pārvaldÄ«t dažas maŔīnas nekā visu autoparku. Atjauninājumu un labojumu ievieÅ”ana ir ātrāka, un to ir vieglāk sinhronizēt. ArÄ« neveiksmju skaits absolÅ«tajos skaitļos ir mazāks.

LÅ«dzu, ņemiet vērā, ka viss iepriekÅ” minētais attiecas uz jÅ«su aparatÅ«ru, serveriem, nevis mākoņa gadÄ«jumiem.

MākonÄ« situācija ir atŔķirÄ«ga. Tur pārvaldÄ«bu veic mākoņpakalpojumu sniedzējs. Tādējādi desmit mezglu pārvaldÄ«ba mākonÄ« daudz neatŔķiras no viena mezgla pārvaldÄ«bas.

Satiksmes marÅ”rutÄ“Å”ana un slodzes sadalÄ«jums starp podiem mākonÄ« veikta automātiski: satiksme, kas nāk no interneta, tiek nosÅ«tÄ«ta uz galveno slodzes balansētāju, kas pārsÅ«ta trafiku uz viena mezgla portu (nodePort pakalpojums iestata portu diapazonā no 30000-32767 katrā klastera mezglā). Kube-proxy iestatÄ«tie noteikumi novirza trafiku no mezgla uz aplikumu. LÅ«k, kā tas izskatās desmit pākstiem divos mezglos:

Kubernetes darbinieku mezgli: daudzi mazi vai vairāki lieli?
Pro #2: mazāka maksa par mezglu
JaudÄ«gs auto ir dārgāks, taču cenu pieaugums ne vienmēr ir lineārs. Citiem vārdiem sakot, viens desmit kodolu serveris ar 10 GB atmiņu parasti ir lētāks nekā desmit viena kodola serveri ar tādu paÅ”u atmiņas apjomu.

Bet ņemiet vērā, ka Å”is noteikums parasti nedarbojas mākoņpakalpojumos. Visu lielāko mākoņdatoÅ”anas pakalpojumu sniedzēju paÅ”reizējās cenu noteikÅ”anas shēmās cenas pieaug lineāri ar jaudu.

Tādējādi mākonī jūs parasti nevarat ietaupīt uz jaudīgākiem serveriem.

Pro #3: varat palaist resursietilpīgas lietojumprogrammas
Dažām lietojumprogrammām ir nepiecieÅ”ami jaudÄ«gi serveri klasterÄ«. Piemēram, ja maŔīnmācÄ«Å”anās sistēmai ir nepiecieÅ”ama 8 GB atmiņa, jÅ«s nevarēsiet to darbināt 1 GB mezglos, bet tikai ar vismaz vienu lielu darbinieku mezglu.

MÄ«nusi

Trūkums Nr.1. Daudz pākstis katrā mezglā
Ja viens un tas pats uzdevums tiek veikts mazākam mezglam, tad katrā no tiem dabiski būs vairāk pākstu.

Tā varētu būt problēma.

Iemesls ir tāds, ka katrs modulis rada papildu izmaksas konteinera izpildlaikam (piemēram, Docker), kā arī kubelet un cAdvisor.

Piemēram, kubelets regulāri pārbauda visus mezglā esoÅ”os konteinerus, lai noskaidrotu to izdzÄ«voÅ”anu ā€” jo vairāk konteineru, jo vairāk darba ir jāveic kubelet.

CAdvisor apkopo resursu izmantoÅ”anas statistiku par visiem konteineriem mezglā, un kubelet regulāri vaicā Å”o informāciju un nodroÅ”ina to, izmantojot API. Atkal vairāk konteineru nozÄ«mē vairāk darba gan cAdvisor, gan kubelet.

Ja moduļu skaits palielinās, tas var palēnināt sistēmas darbību un pat mazināt tās uzticamību.

Kubernetes darbinieku mezgli: daudzi mazi vai vairāki lieli?
Kubernetes repozitorijā daži sÅ«dzējāska mezgli pāriet starp statusiem Ready/NotReady, jo regulāras kubelet pārbaudes visiem mezglā esoÅ”ajiem konteineriem aizņem pārāk ilgu laiku.
Å Ä« iemesla dēļ Kubernetes iesaka izvietot ne vairāk kā 110 pākstis vienā mezglā. AtkarÄ«bā no mezgla veiktspējas vienā mezglā varat palaist vairāk podiņu, taču ir grÅ«ti paredzēt, vai radÄ«sies problēmas vai viss darbosies labi. Ir vērts iepriekÅ” pārbaudÄ«t darbu.

Trūkums Nr. 2. Replikācijas ierobežojums
Pārāk maz mezglu ierobežo lietojumprogrammas replikācijas efektivitāti. Piemēram, ja jums ir augstas pieejamības lietojumprogramma ar piecām replikām, bet tikai diviem mezgliem, lietojumprogrammas efektīvā replikācijas pakāpe tiek samazināta līdz diviem.

Piecas kopijas var sadalīt tikai pa diviem mezgliem, un, ja viens no tiem neizdodas, tas vienlaikus noņems vairākas kopijas.

Ja jums ir pieci vai vairāk mezgli, katra replika darbosies atseviŔķā mezglā, un viena mezgla kļūme noņems ne vairāk kā vienu repliku.

Tādējādi augstām pieejamÄ«bas prasÄ«bām var bÅ«t nepiecieÅ”ams noteikts minimālais mezglu skaits klasterÄ«.

Trūkums Nr.3. Sliktākas neveiksmes sekas
Ar nelielu mezglu skaitu katrai kļūmei ir nopietnākas sekas. Piemēram, ja jums ir tikai divi mezgli un viens no tiem neizdodas, puse no jūsu moduļiem nekavējoties pazūd.

Protams, Kubernetes migrēs darba slodzi no neveiksmīgā mezgla uz citiem. Bet, ja to ir maz, tad var nepietikt brīvas jaudas. Rezultātā dažas jūsu lietojumprogrammas nebūs pieejamas, līdz parādīsit neveiksmīgo mezglu.

Tādējādi, jo vairāk mezglu, jo mazāka ir aparatūras kļūmju ietekme.

4. trÅ«kums: vairāk automātiskās mērogoÅ”anas darbÄ«bu
Kubernetes ir klasteru automātiskās mērogoÅ”anas sistēma mākoņa infrastruktÅ«rai, kas ļauj automātiski pievienot vai noņemt mezglus atkarÄ«bā no jÅ«su paÅ”reizējām vajadzÄ«bām. Ar lielākiem mezgliem automātiskā mērogoÅ”ana kļūst pēkŔņāka un sarežģītāka. Piemēram, divos mezglos, pievienojot papildu mezglu, klastera jauda tiks nekavējoties palielināta par 50%. Un jums bÅ«s jāmaksā par Å”iem resursiem, pat ja tie jums nav vajadzÄ«gi.

Tādējādi, ja plānojat izmantot automātisko klasteru mērogoÅ”anu, jo mazāki mezgli, jo elastÄ«gāku un izmaksu ziņā efektÄ«vāku mērogoÅ”anu iegÅ«sit.

Tagad apskatīsim daudzu mazu mezglu priekŔrocības un trūkumus.

Otrā iespēja: daudzi mazi mezgli

Å Ä«s pieejas priekÅ”rocÄ«bas bÅ«tÄ«bā izriet no pretējās iespējas trÅ«kumiem ar vairākiem lieliem mezgliem.

Plusi

Pro #1: mazāka kļūmes ietekme
Jo vairāk mezglu, jo mazāk pākstu katrā mezglā. Piemēram, ja jums ir simts moduļu uz desmit mezgliem, tad katrā mezglā būs vidēji desmit moduļi.

Tādā veidā, ja kāds no mezgliem neizdodas, jūs zaudējat tikai 10% no darba slodzes. Iespējams, ka tiks ietekmēts tikai neliels skaits kopiju un visa lietojumprogramma darbosies.

Turklāt atlikuÅ”ajiem mezgliem, visticamāk, bÅ«s pietiekami daudz brÄ«vu resursu, lai apstrādātu neveiksmÄ«gā mezgla darba slodzi, tāpēc Kubernetes var brÄ«vi pārplānot podziņus, un jÅ«su lietojumprogrammas salÄ«dzinoÅ”i ātri atgriezÄ«sies funkcionālā stāvoklÄ«.

Pro #2: laba replikācija
Ja mezglu ir pietiekami daudz, Kubernetes plānotājs var pieŔķirt dažādus mezglus visām replikām. Tādā veidā, ja mezgls neizdodas, tiks ietekmēta tikai viena kopija un lietojumprogramma paliks pieejama.

MÄ«nusi

Trūkums Nr.1. Grūti vadāms
Lielu skaitu mezglu ir grÅ«tāk pārvaldÄ«t. Piemēram, katram Kubernetes mezglam ir jāsazinās ar visiem pārējiem, tas ir, savienojumu skaits pieaug kvadrātiski, un visi Å”ie savienojumi ir jāseko.

Kubernetes Controller Manager mezglu kontrolleris regulāri iziet cauri visiem klastera mezgliem, lai pārbaudÄ«tu stāvokli ā€” jo vairāk mezglu, jo lielāka ir kontrollera slodze.

Pieaug arÄ« etcd datubāzes slodze - katrs kubelet un kube-proxy izsauc vērotājs priekÅ” etcd (izmantojot API), uz kuru etcd ir jāpārraida objektu atjauninājumi.

Kopumā katrs darbinieka mezgls uzliek papildu slodzi galveno mezglu sistēmas komponentiem.

Kubernetes darbinieku mezgli: daudzi mazi vai vairāki lieli?
Kubernetes oficiāli atbalsta kopas ar mezglu skaits līdz 5000. Tomēr praksē jau ir 500 mezgli var radīt nenozīmīgas problēmas.

Lai pārvaldītu lielu skaitu darbinieku mezglu, jums vajadzētu izvēlēties jaudīgākus galvenos mezglus. Piemēram, kube-up automātiski instalē pareizo VM lielumu galvenajam mezglam atkarībā no darbinieku mezglu skaita. Tas ir, jo vairāk darbinieku mezglu, jo produktīvākiem jābūt galvenajiem mezgliem.

Å o specifisko problēmu risināŔanai ir Ä«paÅ”as izstrādes, piemēram, Virtuālais Kubelets. Å Ä« sistēma ļauj apiet ierobežojumus un izveidot klasterus ar milzÄ«gu skaitu darbinieku mezglu.

Trūkums #2: lielākas pieskaitāmās izmaksas.
Katrā darbinieka mezglā Kubernetes palaiž sistēmas dēmonu kopu ā€” tie ietver konteinera izpildlaiku (piemēram, Docker), kube starpniekserveri un kubelet, tostarp cAdvisor. Kopā viņi patērē noteiktu fiksētu resursu daudzumu.

Ja jums ir daudz mazu mezglu, Å”o pieskaitāmo izdevumu Ä«patsvars katrā mezglā ir lielāks. Piemēram, iedomājieties, ka visi sistēmas dēmoni vienā mezglā kopā izmanto 0,1 CPU kodolu un 0,1 GB atmiņu. Ja jums ir viens desmit kodolu mezgls ar 10 GB atmiņu, dēmoni patērē 1% no klastera jaudas. No otras puses, desmit viena kodola mezglos ar 1 GB atmiņu dēmoni aizņems 10% no klastera ietilpÄ«bas.

Tādējādi, jo mazāk mezglu, jo efektīvāk tiek izmantota infrastruktūra.

Trūkums Nr.3. Neefektīva resursu izmantoŔana
Mazos mezglos atlikuŔās resursu daļas var bÅ«t pārāk mazas, lai tām pieŔķirtu jebkādu darba slodzi, tāpēc tās paliek neizmantotas.

Piemēram, katram podam ir nepiecieÅ”ams 0,75 GB atmiņas. Ja jums ir desmit mezgli, katrs ar 1 GB atmiņu, varat palaist desmit blokus, atstājot katram mezglam 0,25 GB neizmantotas atmiņas.

Tas nozīmē, ka 25% no visas klastera atmiņas tiek iztērēti.

Lielā mezglā ar 10 GB atmiņu varat darbināt 13 no Å”iem moduļiem - un bÅ«s tikai viens neizmantots 0,25 GB fragments.

Šajā gadījumā tiek iztērēti tikai 2,5% atmiņas.

Tādējādi lielākos mezglos resursi tiek izmantoti optimālāk.

Vairāki lieli mezgli vai daudzi mazi?

Tātad, kas ir labāks: daži lieli mezgli klasterī vai daudzi mazi? Kā vienmēr, skaidras atbildes nav. Daudz kas ir atkarīgs no pieteikuma veida.

Piemēram, ja lietojumprogrammai ir nepiecieÅ”ami 10 GB atmiņas, lielāki mezgli ir acÄ«mredzama izvēle. Un, ja lietojumprogrammai ir nepiecieÅ”ama desmitkārtÄ«ga replikācija, lai nodroÅ”inātu augstu pieejamÄ«bu, diez vai ir vērts riskēt ar kopijas izvietoÅ”anu tikai divos mezglos ā€” klasterÄ« ir jābÅ«t vismaz desmit mezgliem.

Vidējās situācijās izdariet izvēli, pamatojoties uz katras iespējas priekÅ”rocÄ«bām un trÅ«kumiem. Iespējams, daži argumenti ir atbilstoŔāki jÅ«su situācijai nekā citi.

Un nemaz nav nepiecieÅ”ams visus mezglus padarÄ«t vienāda izmēra. Nekas neliedz vispirms eksperimentēt ar tāda paÅ”a izmēra mezgliem, pēc tam pievienot tiem cita izmēra mezglus, apvienojot tos klasterÄ«. Darbinieku mezgli Kubernetes klasterÄ« var bÅ«t pilnÄ«gi neviendabÄ«gi. Tātad jÅ«s varat mēģināt apvienot abu pieeju priekÅ”rocÄ«bas.

Nav vienas receptes, un katrai situācijai ir savas nianses, un tikai ražoŔana parādīs patiesību.

Tulkojumu sagatavojusi mākoņa platformas komanda Mail.ru mākoņa risinājumi.

Vairāk par Kubernetes: 25 Noderīgi rīki klasteru pārvaldībai un izvietoŔanai.

Avots: www.habr.com

Pievieno komentāru