
Kubernetes klastrit luues vĂ”ivad tekkida kĂŒsimused: kui palju töökohti ja millist tĂŒĂŒpi seadmeid seadistada? Mis on parem on-premise klastrile: osta mitu vĂ”imsat serverit vĂ”i kasutada kĂŒmmet vana masinat oma andmekeskuses? Ja pilves on parem juuda kahe neljatuumalise instantsi vĂ”i kaheksa ĂŒhetuumalist?
Nendele kĂŒsimustele leiate vastused artiklist tĂ”lgib meeskond .
Klastri vÔimekus
Ăldiselt vĂ”ib Kubernetes klastrit pidada suureks "super-sĂ”lmeks". Selle kogu arvutusvĂ”imsus on kĂ”ikide komponentide sĂ”lmede vĂ”imsuste summa.
On mitmeid viise soovitud klastrivÔimekuse saavutamiseks. NÀiteks, kui me vajame klastrit, mille koguvÔimsus on 8 protsessorituuma ja 32 GB RAM-i, kuna rakenduste komplekt nÔuab selliseid ressursse. Siis vÔiksime paigaldada kaks sÔlme, millel on 16 GB mÀlu, vÔi neli sÔlme, millel on 8 GB mÀlu, kaks neljatuumalist protsessorit vÔi neli kahetuumalist.
Siin on ainult kaks vÔimalikku viisi klastri loomiseks:

MĂ”lemad valikud annavad sama vĂ”imekusega klastrit, kuid allosas on neli vĂ€iksemat sĂ”lme, samas kui ĂŒlalosas on kaks suuremat.
Milline variant on parem?
KĂŒsimuse vastamiseks vaatame mĂ”lema variandi eeliseid. Oleme need kokku pannud tabelisse.
Mitu suurt sÔlme
Palju vÀikseid sÔlme
Klastri haldamine on lihtsam (kui see on on-premise)
Suumimine on sujuvam
Odavam (kui see on on-premise)
Hind ei erine palju (pilves)
VÔib kÀitada ressursinÔudlikke rakendusi
TĂ€ielik replikatsioon
Ressursse kasutatakse efektiivsemalt (vĂ€hem ĂŒleliigset sĂŒsteemide demonite peale)
Klastri talitluspĂŒsivus on kĂ”rgem
Pange tÀhele, et rÀÀgime ainult töökohti. Pea-sÔlmede arvu ja suuruse valimine on tÀiesti teine teema.
Nii et arutame iga punkti tabelist lÀhemalt.
Esimene variant: mitu suurt sÔlme
KĂ”ige ekstreemsem variant on ĂŒks töökohta kogu klastrivĂ”imekuse jaoks. Ălaltoodud nĂ€ites oleks see ĂŒks töökohta, millel on 16 protsessori tuuma ja 16 GB RAM-i.
Plussid
Pluss â 1. Halduse lihtsus
Mitme masina juhtimine on lihtsam kui terve pargi. Kiiremini on vĂ”imalik rakendada uuendusi ja parandusi, lihtsam on sĂŒnkroniseerida. Absoluutarvudes on ka tĂ”rkeid vĂ€hem.
Pange tÀhele, et kÔik eelnevalt öeldu kehtib teie riistvara, teie serverite kohta, mitte pilveinstantside kohta.
Pilves on olukord teine. Seal tegeleb haldusega pilveteenuse pakkuja. Seega ei erine kĂŒmne sĂ”lme haldamine pilves eriti ĂŒhe sĂ”lme haldamisest.
Liiklustee suunamine ja koormuse jaotamine pod'ide vahel pilves : internetist tulev liiklus suunatakse peamise koormuse tasakaalustajani, mis suunab liikluse ĂŒhe sĂ”lme pordile (NodePort teenus mÀÀrab pordi vahemikus 30000-32767 igas klastri sĂ”lmest). Kube-proxy'de seadistatud reeglid suunavad liikluse sĂ”lmest pod'i. Nii nĂ€eb see vĂ€lja kĂŒmne pod'i jaoks kahes sĂ”lmes:

Pluss â 2. VĂ€hem kulutusi sĂ”lme kohta
VĂ”imas masin on kallim, kuid hinna tĂ”us ei ole tingimata lineaarne. TeisisĂ”nu, ĂŒks kĂŒmne tuumaga server, millel on 10 GB mĂ€lu, on tavaliselt odavam kui kĂŒmme ĂŒhesĂŒdamikku, millel on sama palju mĂ€lu.
Kuid pidage meeles, et see reegel ei kehti tavaliselt pilveteenustes. Aktuaalsetes hinnakujundusskeemides tÔusevad kÔikide peamiste pilveteenuse pakkujate hinnad lineaarsete hindadega koos mahutavuse suurendamisega.
Seega ei saa pilves tavaliselt sÀÀsta vÔimsamate serverite arvelt.
Pluss â 3. Saate kĂ€ivitada ressursimahukaid rakendusi
MĂ”ned rakendused vajavad klastris vĂ”imsaid servereid. NĂ€iteks kui masinĂ”ppe sĂŒsteem vajab 8 GB mĂ€lu, ei saa te seda kĂ€ivitada 1 GB sĂ”lmedes, vaid ainult siis, kui teil on vĂ€hemalt ĂŒks suur töö sĂ”lm.
Miinused
Miinus â 1. Palju pod'e sĂ”lme kohta
Kui sama ĂŒlesanne tĂ€idetakse vĂ€iksemas sĂ”lmede arvus, siis on igas neist loomulikult rohkem pod'e.
See vÔib muutuda probleemiks.
PÔhjus on selles, et iga moodul toob kaasa teatud kulud konteinerite töötluskeskkonnale (nÀiteks Docker), samuti kubelet'ile ja cAdvisor'ile.
NĂ€iteks uurib kubelet regulaarselt kĂ”iki sĂ”lmes olevaid konteinerite elujĂ”ulisust â mida rohkem konteinerid, seda rohkem tööd on kubelet'il.
CAdvisor kogub ressursside kasutamise statistikat kĂ”ikide konteinerite kohta sĂ”lmes, samas kui kubelet kĂŒsib regulaarselt neid andmeid ning pĂ”hipunktena edastab selle lĂ€bi API. JĂ€llegi, mida rohkem on konteinerite, seda rohkem tööd on nii cAdvisoril kui kubelet'il.
Kui moodulite arv suureneb, vĂ”ib see pidurdada sĂŒsteemi ja isegi vĂ€hendada selle usaldusvÀÀrsust.

Kubernetes'e repositooriumis on mĂ”ned , et sĂ”lmed hĂŒppavad Ready/NotReady staatuste vahel, kuna kubelet'i regulaarne kontrollimine kĂ”igi sĂ”lmes olevate konteinerite ĂŒle vĂ”tab liiga palju aega.
Sel pÔhjusel soovitab Kubernetes . SÔlme jÔudlusest sÔltuvalt vÔite sÔlmes kÀitada rohkem pod'e, kuid on raske ennustada, kas tekivad probleemid vÔi kÔik töötab hÀsti. Soovitav on eelnevalt testida tööprotsessi.
Miinus nr 2. Replikatsiooni piirang
Liiga vÀike sÔlmede arv piirab rakenduste tÔhusat replikatsiooni. NÀiteks kui teil on kÔrge kÀttesaadavuse rakendus viie replikaga, kuid ainult kaks sÔlme, siis rakenduse tÔhus replikatsiooni mÀÀr vÀheneb kaheks.
Viit replikat saab jaotada ainult kahele sĂ”lmeks ja kui ĂŒks neist ei tööta, hĂ€vitab see korraga mitu replikat.
Kui teil on viis vĂ”i enam sĂ”lme, siis igat replikat töötatakse eraldi sĂ”lmes, ja ĂŒhe sĂ”lme rike eemaldab maksimaalselt ĂŒhe replikat.
Seega vÔivad kÔrge kÀttesaadavuse nÔuded vajada klastris teatud minimaalset sÔlmede arvu.
Miinus nr 3. Paigaldamise tagajÀrjed halvenevad
VĂ€ikese sĂ”lmede arvu puhul toob iga rike kaasa tĂ”sisemaid tagajĂ€rgi. NĂ€iteks kui teil on ainult kaks sĂ”lme ja ĂŒks neist ebaĂ”nnestub, kaob korraga pool teie moodulitest.
Loomulikult viib Kubernetes töökoormuse ebaĂ”nnestunud sĂ”lmest ĂŒle teistele. Kuid kui neid on vĂ€he, ei pruugi piisavat vaba mahtu olla. Selle tulemusena jÀÀvad mĂ”ned teie rakendustest kĂ€ttesaamatuks, kuni te ei kĂ€ivita ebaĂ”nnestunud sĂ”lme.
Nii et mida rohkem sÔlmesid on, seda vÀhem on riistvara rikete mÔju.
Miinus nr 4. Rohkem sammude automaatne skaleerimine
Kubernetes'is töötab automaatne klastrite skaleerimise sĂŒsteem pilveinfrastruktuuris, mis vĂ”imaldab automaatselt lisada vĂ”i eemaldada sĂ”lmi vastavalt hetke vajadustele. Suuremate sĂ”lmede puhul muutub skaleerimine jĂ€rsemaks ja kohmakamaks. NĂ€iteks kahe sĂ”lmega, lisades ĂŒhe lisasĂ”lme, suurendatakse klastrimahtu kohe 50% vĂ”rra. Ja peate nende ressursside eest maksma, isegi kui need teile ei ole vajalikud.
Seega, kui plaanite kasutada klastrite automaatset skaleerimist, siis mida vÀiksemad on sÔlmed, seda paindlikum ja ökonoomsem skaleerimine te saavutate.
NĂŒĂŒd vaatame ĂŒles vĂ€ikeste sĂ”lmede arvu eeliseid ja puudusi.
Teine variant: hulk vÀikeseid sÔlmi
Selle lÀhenemise eelised tulenevad pÔhimÔtteliselt vastupidise variandi, st vÀheste suurte sÔlmede, puudustest.
Plussid
Plusspunkt â 1. VĂ€hem katkestamise tagajĂ€rgi
Mida rohkem on sĂ”lmi, seda vĂ€hem pod'e on igas sĂ”lmes. NĂ€iteks, kui teil on sada moodulit kĂŒmnes sĂ”lmes, siis keskmiselt on igas sĂ”lmes kĂŒmme moodulit.
Seega, kui ĂŒks sĂ”lm ebaĂ”nnestub, kaotate vaid 10% töökoormusest. On tĂ”enĂ€oline, et mĂ”jutatud on vaid vĂ€ike arv replikaate ja rakendused jÀÀvad ĂŒldiselt töökindlaks.
Lisaks on tĂ”enĂ€oliselt ĂŒlejÀÀnud sĂ”lmedes piisavalt vabu ressursse katkise sĂ”lme töökoormuse jaoks, nii et Kubernetes vĂ”ib vabalt ĂŒmber planeerida podâe ja teie rakendused naasevad suhteliselt kiiresti funktsionaalsesse olekusse.
Plusspunkt â 2. Hea replikatsioon
Kui on piisavalt sĂ”lmi, siis Kubernetes'i ajakava saab mÀÀrata kĂ”igile replikatele erinevad sĂ”lmed. Seega, kui sĂ”lm ebaĂ”nnestub, mĂ”jutatakse vaid ĂŒht replikat ja rakendus jÀÀb kergesti kĂ€tte saadavaks.
Miinused
Miinuspunkt â 1. Raskem juhtimine
Suure hulga sÔlmede haldamine on keerulisem. NÀiteks peab iga Kubernetes'i sÔlm suhtlema kÔigi teistega, seega kasvab seoste arv ruudus ja kÔik need seosed tuleb jÀlgida.
SĂ”lme kontrollija Kubernetes'i kontrollijate halduris kontrollib regulaarselt kĂ”iki klastris oleva sĂ”lmi nende toimivuse kontrollimiseks â mida rohkem sĂ”lmi, seda suurem on koormus kontrollijale.
Koormus suurendab ka andmebaasi etcd â iga kubelet ja kube-proxy kutsub etcd (API kaudu), millele etcd peab objekti vĂ€rskendusi edastama.
Ăldiselt koormab iga töönode sĂŒsteemikomponente peamistel nodidel.

Ametlikult toetab Kubernetes klastreid, millel on Praktiliselt vÔivad aga juba 500 nodi .
Suurte töönode arvu haldamiseks tuleks valida vÔimekamad peanodid. NÀiteks kube-up Ôige VM suuruse peanodile sÔltuvalt töönode arvust. See tÀhendab, et mida rohkem on töönode, seda vÔimekamad peanodid peavad olema.
Nende spetsiifiliste probleemide lahendamiseks on olemas spetsiaalsed lahendused, nagu See sĂŒsteem vĂ”imaldab mööda minna piirangutest ja luua klastreid, millel on tohutu hulk töönode.
Miinus nr 2. Suurem ĂŒlekandeteenus.
Igal töönode'l kĂ€ivitab Kubernetes komplekti sĂŒsteemideemoone - nende hulka kuuluvad konteinerite töötluskeskkond (nt Docker), kube-proxy ja kubelet, sealhulgas cAdvisor. Koos tarbivad nad teatud fikseeritud hulga ressursse.
Kui teil on palju vĂ€ikeseid node, on iga nodi ĂŒlekandeteenuse osakaal suurem. NĂ€iteks kujutage ette, et kĂ”ik ĂŒhe nodi sĂŒsteemi demonid koos kasutavad 0,1 CPU tuumat ja 0,1 GB mĂ€lu. Kui teil on ĂŒks kĂŒmne tuumaga node, millel on 10 GB mĂ€lu, siis demonid tarbivad 1% klastri mahust. Teisest kĂŒljest, kĂŒmnel ĂŒhe tuumaga nodil, millel on 1 GB mĂ€lu, vĂ”tavad demonid 10% klastri mahust.
Seega, mida vÀhem nodi, seda tÔhusamalt kasutatakse infrastruktuuri.
Miinus nr 3. Ebaefektiivne ressursside kasutamine.
VÀikestes node'ides vÔib tekkida olukord, kus allesjÀÀnud ressursifragmendid on liiga vÀikesed, et neile mingit koormust mÀÀrata, seega jÀÀvad nad kasutamata.
NĂ€iteks, iga pod vajab 0,75 GB mĂ€lu. Kui teil on kĂŒmme nodi ja igal on 1 GB mĂ€lu, saab kĂ€ivitada kĂŒmme pod'i - tulemuseks jÀÀb igasse nodi 0,25 GB kasutamata mĂ€lu.
See tÀhendab, et 25% kogu klastri mÀlust lÀheb raisku.
Suuril nodil, millel on 10 GB mĂ€lu, saate kĂ€ivitada 13 sellist moodulit - ja jÀÀb alles vaid ĂŒks 0,25 GB kasutamata fragment.
Sel juhul kulu on ainult 2,5% mÀlu.
Seega, suurte sÔlmede puhul jaotatakse ressursse optimaalsemalt.
MÔned suured sÔlmed vÔi palju vÀikeseid?
Nii et mis on parem: mitu suurt sĂ”lme klastris vĂ”i palju vĂ€ikeseid? Nagu alati, ĂŒheselt vastust ei ole. Palju sĂ”ltub rakenduse tĂŒĂŒbist.
NĂ€iteks, kui rakendusel on vaja 10 GB mĂ€lu, on selge valik suurte sĂ”lmede kasuks. Kui aga rakendus vajab kĂŒmnekordset kopeerimist kĂ”rge kĂ€ttesaadavuse tagamiseks, oleks riskantne paigutada koopiad vaid kahele sĂ”lmele â klastries peab olema vĂ€hemalt kĂŒmme sĂ”lme.
Vahepealsetes olukordades tehke valik, lÀhtudes iga variandi eelistest ja puudustest. VÔib-olla on mÔned argumendid teie olukorra jaoks aktuaalsemad kui teised.
Ja pole sugugi kohustuslik, et kÔik sÔlmed oleksid sama suurusega. Miski ei takista teil alguses eksperimenteerida sÔlmedega, mis on sama suurusega, seejÀrel lisada neile erineva suurusega sÔlmed, kombineerides neid klastris. Kubernetes'e tööks mÔeldud sÔlmed vÔivad olla tÀiesti heterogeensed. Seega, vÔite proovida mÔlema lÀhenemise eeliseid.
Ăhtegi kindlat retsepti ei ole, iga olukord on unikaalne ning ainult tootmisprotsess nĂ€itab tĂ”de.
TÔlge on koostanud pilveteenuse meeskond .
Veel Kubernetes'est: .
Allikas: habr.com
