Кубернетес раднички чворови: много малих или неколико великих?

Кубернетес раднички чворови: много малих или неколико великих?
Када креирате Кубернетес кластер, могу се појавити питања: колико радних чворова да конфигуришете и који тип? Шта је боље за локални кластер: купите неколико моћних сервера или користите десетак старих машина у свом дата центру? Да ли је боље узети осам једнојезгарних или две четворојезгарне инстанце у облаку?

Одговори на ова питања су у чланку. Даниел Веибел, софтверски инжењер и наставник образовног пројекта Леарнк8с у преводу команде Кубернетес ааС са Маил.ру.

Капацитет кластера

Уопштено говорећи, Кубернетес кластер се може сматрати великим „суперчвором“. Његова укупна рачунарска снага је збир снага свих његових саставних чворова.

Постоји неколико начина да постигнете жељени циљ капацитета кластера. На пример, потребан нам је кластер са укупним капацитетом од 8 процесорских језгара и 32 ГБ РАМ-а јер скуп апликација захтева толико ресурса. Затим можете инсталирати два чвора са 16 ГБ меморије или четири чвора са 8 ГБ меморије, два четворојезгарна процесора или четири двојезгарна.

Ево само два могућа начина да направите кластер:

Кубернетес раднички чворови: много малих или неколико великих?
Обе опције производе кластер са истим капацитетом, али доња конфигурација има четири мања чвора, а горња конфигурација има два већа чвора.

Која је опција боља?

Да бисмо одговорили на ово питање, погледајмо предности обе опције. Сажели смо их у табели.

Неколико великих чворова

Много малих чворова

Лакше управљање кластером (ако је локално)

Глатко аутоматско скалирање

Јефтиније (ако је локално)

Цена је мало другачија (у облаку)

Може да покреће апликације које захтевају велике ресурсе

Потпуна репликација

Ресурси се користе ефикасније (мање трошкова за системске демоне
Већа толеранција грешака кластера

Имајте на уму да говоримо само о радничким чворовима. Одабир броја и величине главних чворова је сасвим друга тема.

Дакле, хајде да детаљније размотримо сваку тачку из табеле.

Прва опција: неколико великих чворова

Најекстремнија опција је један радни чвор за цео капацитет кластера. У горњем примеру, ово би био један радни чвор са 16 ЦПУ језгара и 16 ГБ РАМ-а.

Прозодија

Плус бр. 1. Лакше управљање
Лакше је управљати неколико машина него читавом флотом. Брже је увођење ажурирања и поправки и лакше је синхронизовати. Број кварова у апсолутним бројевима је такође мањи.

Имајте на уму да се све горе наведено односи на ваш хардвер, ваше сервере, а не на инстанце у облаку.

Другачија је ситуација у облаку. Тамо управљање обавља провајдер услуга у облаку. Стога се управљање десет чворова у облаку не разликује много од управљања једним чвором.

Рутирање саобраћаја и расподела оптерећења између модула у облаку врши се аутоматски: саобраћај који долази са Интернета шаље се главном балансеру оптерећења, који прослеђује саобраћај на порт једног од чворова (услуга НодеПорт поставља порт у опсегу 30000-32767 у сваком чвору кластера). Правила која поставља кубе-проки преусмеравају саобраћај са чвора на под. Ево како то изгледа за десет махуна на два чвора:

Кубернетес раднички чворови: много малих или неколико великих?
Про #2: Мање цене по чвору
Снажан аутомобил је скупљи, али повећање цене није нужно линеарно. Другим речима, један десет-језгарни сервер са 10 ГБ меморије обично је јефтинији од десет сервера са једним језгром са истом количином меморије.

Али имајте на уму да ово правило обично не функционише у услугама у облаку. У тренутним шемама цена свих главних провајдера у облаку, цене расте линеарно са капацитетом.

Дакле, у облаку обично не можете да уштедите на моћнијим серверима.

Про #3: Можете покренути апликације које захтевају велике ресурсе
Неке апликације захтевају моћне сервере у кластеру. На пример, ако систем машинског учења захтева 8 ГБ меморије, нећете моћи да га покренете на чворовима од 1 ГБ, већ само са најмање једним великим радним чвором.

Против

Недостатак бр. 1. Много махуна по чвору
Ако се исти задатак изврши на мање чворова, онда ће сваки од њих природно имати више махуна.

Ово би могао бити проблем.

Разлог је тај што сваки модул уводи неке додатне трошкове у време извођења контејнера (нпр. Доцкер), као и кубелет и цАдвисор.

На пример, кубелет редовно испитује све контејнере на чвору ради преживљавања — што је више контејнера, то више посла мора да обави кубелет.

ЦАДвисор прикупља статистику коришћења ресурса за све контејнере на чвору, а кубелет редовно испитује ове информације и пружа их преко АПИ-ја. Опет, више контејнера значи више посла и за цАдвисор и за кубелет.

Ако се број модула повећа, то може успорити систем, па чак и поткопати његову поузданост.

Кубернетес раднички чворови: много малих или неколико великих?
У Кубернетес спремишту неке жалио седа чворови скачу између статуса Реади/НотРеади јер редовне кубелет провере свих контејнера на чвору трају предуго.
Из тог разлога Кубернетес препоручује постављање не више од 110 махуна по чвору. У зависности од перформанси чвора, можете покренути више подова по чвору, али је тешко предвидети да ли ће бити проблема или ће све радити добро. Вреди тестирати рад унапред.

Недостатак бр. 2. Ограничење репликације
Премало чворова ограничава ефективни обим репликације апликације. На пример, ако имате апликацију високе доступности са пет реплика, али само са два чвора, онда се ефективни степен репликације апликације смањује на два.

Пет реплика се може дистрибуирати само на два чвора, а ако једна од њих не успе, уклониће више реплика одједном.

Ако имате пет или више чворова, свака реплика ће радити на посебном чвору, а неуспјех једног чвора ће уклонити највише једну реплику.

Дакле, захтеви високе доступности могу захтевати одређени минимални број чворова у кластеру.

Недостатак број 3. Горе последице неуспеха
Са малим бројем чворова, сваки квар има озбиљније последице. На пример, ако имате само два чвора и један од њих поквари, половина ваших модула одмах нестаје.

Наравно, Кубернетес ће пренети радно оптерећење са неуспелог чвора на друге. Али ако их је мало, онда можда неће бити довољно слободног капацитета. Као резултат тога, неке од ваших апликација ће бити недоступне док не прикажете неуспели чвор.

Дакле, што је више чворова, то је мањи утицај кварова на хардверу.

Недостатак #4: Више корака за аутоматско скалирање
Кубернетес има систем за аутоматско скалирање кластера за инфраструктуру облака, који вам омогућава да аутоматски додајете или уклањате чворове у зависности од ваших тренутних потреба. Са већим чворовима, аутоматско скалирање постаје нагло и незграпније. На пример, на два чвора, додавање додатног чвора ће одмах повећати капацитет кластера за 50%. И мораћете да платите за те ресурсе, чак и ако вам нису потребни.

Стога, ако планирате да користите аутоматско скалирање кластера, што су чворови мањи, то ћете добити флексибилније и исплативије скалирање.

Сада погледајмо предности и недостатке великог броја малих чворова.

Друга опција: много малих чворова

Предности овог приступа суштински произилазе из недостатака супротне опције са неколико великих чворова.

Прозодија

Про #1: Мањи утицај неуспеха
Што више чворова, то је мање махуна на сваком чвору. На пример, ако имате сто модула на десет чворова, онда ће сваки чвор имати у просеку десет модула.

На овај начин, ако један од чворова поквари, губите само 10% радног оптерећења. Шансе су да ће само мали број реплика бити погођен и да ће целокупна апликација остати оперативна.

Поред тога, преостали чворови ће вероватно имати довољно слободних ресурса да се носе са радним оптерећењем неуспелог чвора, тако да Кубернетес може слободно да репрограмира подове и ваше апликације ће се релативно брзо вратити у функционално стање.

Про #2: Добра репликација
Ако има довољно чворова, Кубернетес планер може доделити различите чворове свим репликама. На овај начин, ако чвор не успе, само једна реплика ће бити погођена и апликација ће остати доступна.

Против

Недостатак бр. 1. Тешко је контролисати
Великим бројем чворова је теже управљати. На пример, сваки Кубернетес чвор мора да комуницира са свим осталима, то јест, број веза расте квадратно, а све те везе треба пратити.

Контролер чворова у Кубернетес Цонтроллер Манагер-у редовно пролази кроз све чворове у кластеру да би проверио здравље – што је више чворова, то је веће оптерећење на контролеру.

Оптерећење етцд базе података такође расте - сваки кубелет и кубе-проки позива посматрач за етцд (преко АПИ-ја), на који етцд треба да емитује ажурирања објеката.

Генерално, сваки радни чвор намеће додатно оптерећење системским компонентама главних чворова.

Кубернетес раднички чворови: много малих или неколико великих?
Кубернетес званично подржава кластере са број чворова до 5000. Међутим, у пракси већ постоји 500 чворова може изазвати нетривијалне проблеме.

Да бисте управљали великим бројем радних чворова, требало би да изаберете моћније главне чворове. На пример, кубе-уп аутоматски се инсталира тачну величину ВМ за главни чвор у зависности од броја радних чворова. То јест, што је више радних чворова, то би главни чворови требало да буду продуктивнији.

За решавање ових специфичних проблема постоје посебни развоји, као нпр Виртуелни Кубелет. Овај систем вам омогућава да заобиђете ограничења и изградите кластере са огромним бројем радних чворова.

Недостатак #2: Више режијских трошкова.
На сваком радном чвору, Кубернетес покреће скуп системских демона - они укључују време извођења контејнера (као што је Доцкер), кубе-проки и кубелет, укључујући цАдвисор. Заједно троше одређену фиксну количину ресурса.

Ако имате много малих чворова, удео овог надметања на сваком чвору је већи. На пример, замислите да сви системски демони на једном чвору заједно користе 0,1 ЦПУ језгра и 0,1 ГБ меморије. Ако имате један десет-језгарни чвор са 10 ГБ меморије, онда демони троше 1% капацитета кластера. С друге стране, на десет једнојезгрених чворова са 1 ГБ меморије, демони ће заузети 10% капацитета кластера.

Дакле, што је мање чворова, то се инфраструктура ефикасније користи.

Недостатак број 3. Неефикасно коришћење ресурса
На малим чворовима може бити да су преостали делови ресурса премали да би им се доделило било какво радно оптерећење, па остају неискоришћени.

На пример, свака капсула захтева 0,75 ГБ меморије. Ако имате десет чворова, сваки са 1 ГБ меморије, можете покренути десет подова, остављајући сваки чвор са 0,25 ГБ неискоришћене меморије.

То значи да је 25% меморије читавог кластера изгубљено.

На великом чвору са 10 ГБ меморије можете покренути 13 ових модула - и биће само један неискоришћен фрагмент од 0,25 ГБ.

У овом случају, само 2,5% меморије је изгубљено.

Дакле, ресурси се оптималније користе на већим чворовима.

Неколико великих чворова или много малих?

Дакле, шта је боље: неколико великих чворова у кластеру или много малих? Као и увек, нема јасног одговора. Много зависи од врсте апликације.

На пример, ако апликација захтева 10 ГБ меморије, већи чворови су очигледан избор. А ако апликација захтева десетоструку репликацију за високу доступност, тешко да је вредно ризика постављања реплика на само два чвора – мора постојати најмање десет чворова у кластеру.

У средњим ситуацијама, направите избор на основу предности и мана сваке опције. Можда су неки аргументи релевантнији за вашу ситуацију од других.

И уопште није неопходно да сви чворови буду исте величине. Ништа вас не спречава да прво експериментишете са чворовима исте величине, а затим им додате чворове различите величине, комбинујући их у кластер. Раднички чворови у Кубернетес кластеру могу бити потпуно хетерогени. Дакле, можете покушати да комбинујете предности оба приступа.

Не постоји јединствен рецепт, а свака ситуација има своје нијансе, а само производња ће показати истину.

Превод припремио тим за клауд платформу Маил.ру Цлоуд Солутионс.

Више о Кубернетесу: 25 корисних алата за управљање и примену кластера.

Извор: ввв.хабр.цом

Додај коментар