Гиреҳҳои коргарии Kubernetes: бисёр хурд ё якчанд калон?

Гиреҳҳои коргарии Kubernetes: бисёр хурд ё якчанд калон?
Ҳангоми сохтани кластери Kubernetes, саволҳо метавонанд ба миён оянд: чанд гиреҳи коргариро танзим кардан лозим аст ва кадом намуд? Барои кластери дохилӣ чӣ беҳтар аст: якчанд серверҳои пурқувват харед ё дар маркази додаҳои худ даҳҳо мошини кӯҳнаро истифода баред? Оё беҳтар аст, ки ҳашт як-аслӣ ё ду мисоли чор-аслӣ дар абр?

Ҷавобҳо ба ин саволҳо дар мақола мебошанд. Даниел Вайбел, муҳандиси нармафзор ва муаллими лоиҳаи таълимии Learnk8s дар тарҷумаи фармон Kubernetes aaS аз Mail.ru.

Иқтидори кластер

Умуман, кластери Кубернетесро метавон ҳамчун "суперноде"-и калон баррасӣ кард. Иқтидори умумии ҳисоббарории он маҷмӯи ваколатҳои ҳамаи гиреҳҳои таркибии он мебошад.

Якчанд роҳҳо барои ноил шудан ба ҳадафи иқтидори кластери дилхоҳатон мавҷуданд. Масалан, ба мо кластер лозим аст, ки иқтидори умумии 8 ядрои протсессор ва 32 ГБ хотираи оперативӣ дорад, зеро маҷмӯи барномаҳо захираҳои зиёдро талаб мекунанд. Пас шумо метавонед ду гиреҳи дорои хотираи 16 ГБ ё чаҳор гиреҳи дорои 8 ГБ хотира, ду протсессори чоргона ё чаҳор дугонаи дугона насб кунед.

Инҳоянд танҳо ду роҳи имконпазири сохтани кластер:

Гиреҳҳои коргарии Kubernetes: бисёр хурд ё якчанд калон?
Ҳарду вариант кластерро бо иқтидори якхела истеҳсол мекунанд, аммо конфигуратсияи поён чор гиреҳи хурдтар ва конфигуратсияи боло ду гиреҳи калонтар дорад.

Кадом вариант беҳтар аст?

Барои ҷавоб додан ба ин савол, биёед бартариҳои ҳарду вариантро дида бароем. Мо онҳоро дар ҷадвал ҷамъбаст кардем.

Якчанд гиреҳҳои калон

Бисёр гиреҳҳои хурд

Идоракунии кластер осонтар (агар он дар маҳал бошад)

Миқёси автоматии ҳамвор

Арзонтар (агар дар бино бошад)

Нарх каме фарқ мекунад (дар абр)

Барномаҳои серталабро иҷро карда метавонад

Репликатсияи пурра

Захираҳо самараноктар истифода мешаванд (ҳароҷоти изофӣ барои демонҳои система камтар
Таҳаммулпазирии баландтар ба хатогиҳои кластер

Лутфан қайд кунед, ки мо танҳо дар бораи гиреҳҳои коргарӣ сухан меронем. Интихоби шумора ва андозаи гиреҳҳои асосӣ мавзӯи тамоман дигар аст.

Пас, биёед ҳар як нуктаро аз ҷадвал муфассалтар баррасӣ кунем.

Варианти аввал: якчанд гиреҳҳои калон

Варианти шадидтарин як гиреҳи коргарӣ барои тамоми иқтидори кластер мебошад. Дар мисоли дар боло овардашуда, ин як гиреҳи ягонаи корӣ бо 16 ядрои CPU ва 16 ГБ хотираи оперативӣ хоҳад буд.

Плюсы

Плюс № 1. Идоракунии осонтар
Идора кардани якчанд мошин назар ба тамоми парк осонтар аст. Интишори навсозиҳо ва ислоҳҳо тезтар аст ва ҳамоҳангсозӣ осонтар аст. Шумораи нобарориҳо дар рақамҳои мутлақ низ камтар аст.

Лутфан қайд кунед, ки ҳамаи гуфтаҳои боло ба сахтафзори шумо, серверҳои шумо дахл доранд, на ба мисолҳои абрӣ.

Дар абр вазъият дигар аст. Дар он ҷо идоракунӣ аз ҷониби провайдери хидматрасонии абрӣ идора карда мешавад. Ҳамин тариқ, идоракунии даҳ гиреҳ дар абр аз идоракунии як гиреҳ чандон фарқ надорад.

Масири трафик ва тақсимоти сарборӣ байни подкҳо дар абр ба таври автоматӣ иҷро карда мешавад: трафике, ки аз Интернет меояд, ба баланси асосии сарборӣ фиристода мешавад, ки трафикро ба бандари яке аз гиреҳҳо интиқол медиҳад (хидмати NodePort портро дар диапазони 30000-32767 дар ҳар як гиреҳи кластер муқаррар мекунад). Қоидаҳои муқарраркардаи kube-proxy трафикро аз гиреҳ ба подк равона мекунанд. Ин аст он чизест, ки барои даҳ дона дар ду гиреҳ чунин менамояд:

Гиреҳҳои коргарии Kubernetes: бисёр хурд ё якчанд калон?
Pro №2: Хароҷоти камтар барои як гиреҳ
Мошини пурқувват гаронтар аст, аммо афзоиши нарх ҳатман хаттӣ нест. Ба ибораи дигар, як сервери даҳ-аслӣ бо хотираи 10 ГБ одатан аз даҳ сервери якаслӣ бо миқдори якхелаи хотира арзонтар аст.

Аммо дар хотир доред, ки ин қоида одатан дар хидматҳои абрӣ кор намекунад. Дар схемаҳои ҷории нархгузории ҳамаи провайдерҳои асосии абр, нархҳо бо иқтидор ба таври хаттӣ афзоиш меёбанд.

Ҳамин тариқ, дар абр шумо одатан дар серверҳои пурқувваттар захира карда наметавонед.

Pro №3: Шумо метавонед замимаҳои серталабро иҷро кунед
Баъзе барномаҳо серверҳои пурқувватро дар кластер талаб мекунанд. Масалан, агар системаи омӯзиши мошинсозӣ 8 ГБ хотираро талаб кунад, шумо наметавонед онро дар гиреҳҳои 1 ГБ иҷро кунед, аммо танҳо бо ҳадди аққал як гиреҳи калони коргар.

Минусы

Камбудии раками 1. Дар як гирех донаи бисьёр
Агар ҳамон як вазифа дар гиреҳҳои камтар иҷро карда шавад, он гоҳ ҳар кадоми онҳо табиатан қуттиҳои бештар доранд.

Ин метавонад мушкилот бошад.

Сабаб дар он аст, ки ҳар як модул каме сарборӣ ба вақти кори контейнер (масалан, Docker), инчунин kubelet ва cAdvisor ворид мекунад.

Масалан, кубелет ҳама контейнерҳоро дар гиреҳ барои зинда мондан мунтазам месанҷад - ҳар қадар контейнер бештар бошад, кубелет ҳамон қадар кореро анҷом медиҳад.

CAdvisor омори истифодаи захираҳоро барои ҳама контейнерҳо дар гиреҳ ҷамъоварӣ мекунад ва kubelet ин маълумотро мунтазам дархост мекунад ва тавассути API таъмин мекунад. Боз ҳам, контейнерҳои бештар маънои кори бештарро ҳам барои cAdvisor ва ҳам kubelet доранд.

Агар шумораи модулҳо зиёд шавад, он метавонад системаро суст кунад ва ҳатто эътимоднокии онро коҳиш диҳад.

Гиреҳҳои коргарии Kubernetes: бисёр хурд ё якчанд калон?
Дар анбори Кубернетес баъзеҳо шикоят кардки гиреҳҳо дар байни ҳолати Ready/NotReady мегузаранд, зеро тафтиши мунтазами кубелетии ҳама контейнерҳо дар гиреҳ хеле тӯлонӣ мегирад.
Аз ин сабаб Кубернетес Тавсия мекунад, ки дар як гиреҳ на бештар аз 110 дона ҷойгир карда шавад. Вобаста аз иҷрои гиреҳ, шумо метавонед дар як гиреҳ подкҳои бештарро иҷро кунед, аммо пешгӯӣ кардан душвор аст, ки оё мушкилот вуҷуд доранд ё ҳама чиз хуб кор мекунад. Корро пешакй санчидан меарзад.

Камбудии № 2. Маҳдудият дар такрорӣ
Шумораи хеле ками гиреҳҳо дараҷаи самараноки такрори барномаҳоро маҳдуд мекунад. Масалан, агар шумо як барномаи дастрасии баланд бо панҷ нусхабардорӣ дошта бошед, аммо танҳо ду гиреҳ, он гоҳ дараҷаи самараноки такрории барнома ба ду кам карда мешавад.

Панҷ репликаро танҳо дар ду гиреҳ тақсим кардан мумкин аст ва агар яке аз онҳо ноком шавад, он як маротиба такрори сершуморро нест мекунад.

Агар шумо панҷ гиреҳ ё бештар аз он дошта бошед, ҳар як реплика дар гиреҳи алоҳида кор мекунад ва нокомии як гиреҳ ҳадди аксар як нусхаро нест мекунад.

Ҳамин тариқ, талаботҳои дастрасии баланд метавонанд шумораи ҳадди ақали гиреҳҳоро дар кластер талаб кунанд.

Камбудии № 3. Оқибатҳои бадтарини нокомӣ
Бо шумораи ками гиреҳҳо, ҳар як нокомӣ оқибатҳои ҷиддитар дорад. Масалан, агар шумо танҳо ду гиреҳ дошта бошед ва яке аз онҳо ноком шавад, нисфи модулҳои шумо фавран нопадид мешаванд.

Албатта, Кубернетес сарбории корро аз гиреҳи ноком ба дигарон интиқол медиҳад. Аммо агар шумораи онҳо кам бошад, пас иқтидори ройгон кофӣ нест. Дар натиҷа, баъзе аз барномаҳои шумо то он даме, ки гиреҳи нокомро наоваред, дастнорас хоҳанд буд.

Ҳамин тариқ, ҳар қадар гиреҳҳо зиёд бошанд, таъсири нокомии сахтафзор ҳамон қадар камтар мешавад.

Камбудии №4: Қадамҳои бештари миқёси худкор
Kubernetes дорои системаи автоматии миқёси кластерӣ барои инфрасохтори абр мебошад, ки ба шумо имкон медиҳад, ки вобаста ба эҳтиёҷоти ҷории шумо гиреҳҳоро ба таври худкор илова ё нест кунед. Бо гиреҳҳои калонтар, миқёси автоматӣ ногаҳонӣ ва печидатар мешавад. Масалан, дар ду гиреҳ, илова кардани гиреҳи иловагӣ фавран қобилияти кластерро 50% зиёд мекунад. Ва шумо бояд барои ин захираҳо пардохт кунед, ҳатто агар шумо ба онҳо ниёз надоред.

Ҳамин тариқ, агар шумо нақшаи истифодаи миқёси кластерии автоматиро дошта бошед, ҳар қадар гиреҳҳо хурдтар бошанд, миқёси фасеҳтар ва камхарҷ ба даст меоред.

Акнун биёед ба афзалиятҳо ва нуқсонҳои шумораи зиёди гиреҳҳои хурд назар андозем.

Варианти дуюм: бисёр гиреҳҳои хурд

Афзалиятҳои ин равиш аслан аз нуқсонҳои варианти муқобил бо якчанд гиреҳҳои калон бармеоянд.

Плюсы

Pro №1: Таъсири камтари нокомӣ
Чӣ қадаре ки гиреҳҳо зиёд бошанд, дар ҳар як гиреҳ ҳамон қадар қуттҳо камтар мешаванд. Масалан, агар шумо дар як даҳ гиреҳ сад модул дошта бошед, пас ҳар як гиреҳ ба ҳисоби миёна даҳ модул дорад.

Бо ин роҳ, агар яке аз гиреҳҳо ноком шавад, шумо танҳо 10% сарбории корро аз даст медиҳед. Эҳтимол аст, ки танҳо шумораи ками репликаҳо таъсир мерасонанд ва барномаи умумӣ фаъол боқӣ мемонад.

Илова бар ин, гиреҳҳои боқимонда эҳтимолан барои коркарди сарбории гиреҳи ноком дорои захираҳои кофии ройгон хоҳанд буд, аз ин рӯ Кубернетес метавонад ба таври ройгон ба ҷадвали ҷойгиршавӣ иваз кунад ва замимаҳои шумо нисбатан зуд ба ҳолати функсионалӣ бармегарданд.

Pro # 2: такрори хуб
Агар гиреҳҳои кофӣ мавҷуд бошанд, нақшаи Kubernetes метавонад ба ҳама репликаҳо гиреҳҳои гуногун таъин кунад. Ҳамин тавр, агар гиреҳ ноком шавад, танҳо як реплика таъсир мерасонад ва барнома дастрас боқӣ мемонад.

Минусы

Камбудии № 1. Назорати мушкил
Шумораи зиёди гиреҳҳоро идора кардан душвортар аст. Масалан, ҳар як гиреҳи Kubernetes бояд бо ҳамаи дигарон муошират кунад, яъне шумораи пайвастҳо ба таври квадратӣ меафзояд ва ҳамаи ин пайвастҳоро пайгирӣ кардан лозим аст.

Назоратчии гиреҳ дар Manager Controller Kubernetes мунтазам аз тамоми гиреҳҳои кластер мегузарад, то саломатиро тафтиш кунад - ҳар қадар гиреҳҳо бештар бошанд, ҳамон қадар сарборӣ ба контроллер зиёдтар аст.

Сарборӣ дар базаи etcd низ меафзояд - ҳар як занги kubelet ва kube-proxy посбон for etcd (тавассути API), ки ба он etcd бояд навсозиҳои объектро пахш кунад.

Умуман, ҳар як гиреҳи коргарӣ ба ҷузъҳои системаи гиреҳҳои асосӣ бори иловагӣ мегузорад.

Гиреҳҳои коргарии Kubernetes: бисёр хурд ё якчанд калон?
Kubernetes расман кластерҳоро бо шумораи гиреҳҳо то 5000. Аммо дар амал аллакай 500 узел мавчуд аст метавонад боиси мушкилоти ғайримуқаррарӣ гардад.

Барои идоракунии шумораи зиёди гиреҳҳои коргарӣ, шумо бояд гиреҳҳои устои пурқувватро интихоб кунед. Масалан, kube-up ба таври худкор насб мекунад андозаи дурусти VM барои гиреҳи усто вобаста ба шумораи гиреҳҳои коргар. Яъне, ҳар қадар гиреҳҳои коргарӣ зиёд бошанд, гиреҳҳои усто бояд ҳамон қадар ҳосилноктар бошанд.

Барои халли ин проблемахои конкретй пешравихои махсус, монанди Кубелет виртуалӣ. Ин система ба шумо имкон медиҳад, ки маҳдудиятҳоро паси сар кунед ва кластерҳоро бо шумораи зиёди гиреҳҳои корӣ созед.

Камбудии №2: Хароҷоти бештари хароҷот.
Дар ҳар як гиреҳи корӣ, Кубернетес маҷмӯи демонҳои системаро иҷро мекунад - ба онҳо вақти кори контейнер (ба монанди Docker), kube-proxy ва kubelet, аз ҷумла cAdvisor дохил мешаванд. Якҷоя онҳо миқдори муайяни захираҳоро истеъмол мекунанд.

Агар шумо гиреҳҳои хурди зиёде дошта бошед, таносуби ин сарборӣ дар ҳар як гиреҳ калонтар аст. Масалан, тасаввур кунед, ки ҳамаи демонҳои система дар як гиреҳ якҷоя 0,1 ядрои CPU ва 0,1 ГБ хотираро истифода мебаранд. Агар шумо як гиреҳи даҳ ядроӣ бо хотираи 10 ГБ дошта бошед, пас демонҳо 1% иқтидори кластерро истеъмол мекунанд. Аз тарафи дигар, дар даҳ гиреҳи як ядроӣ бо хотираи 1 ГБ, демонҳо 10% иқтидори кластерро мегиранд.

Ҳамин тариқ, ҳар қадар гиреҳҳо камтар бошанд, инфрасохтор ҳамон қадар самараноктар истифода мешавад.

Камбудии № 3. Истифодаи самараноки захираҳо
Дар гиреҳҳои хурд шояд қисмҳои боқимондаи захираҳо барои таъин кардани ягон сарбории корӣ хеле хурд бошанд, бинобар ин онҳо истифоданашуда боқӣ мемонанд.

Масалан, ҳар як подк 0,75 ГБ хотираро талаб мекунад. Агар шумо даҳ гиреҳ дошта бошед, ки ҳар яки онҳо 1 ГБ хотира доранд, шумо метавонед даҳ подкаро иҷро кунед ва ҳар як гиреҳ бо 0,25 ГБ хотираи истифоданашуда боқӣ монад.

Ин маънои онро дорад, ки 25% тамоми хотираи кластер беҳуда сарф мешавад.

Дар гиреҳи калон бо хотираи 10 ГБ, шумо метавонед 13-тои ин модулҳоро иҷро кунед - ва танҳо як порчаи истифоданашудаи 0,25 ГБ мавҷуд аст.

Дар ин сурат хамагй 2,5 фоизи хотира бехуда сарф мешавад.

Ҳамин тариқ, захираҳо дар гиреҳҳои калонтар беҳтар истифода мешаванд.

Якчанд гиреҳҳои калон ё бисёр гиреҳҳои хурд?

Пас, кадомаш беҳтар аст: якчанд гиреҳҳои калон дар кластер ё бисёр гиреҳҳои хурд? Чун ҳамеша, ҷавоби равшан нест. Бисёр чиз аз намуди барнома вобаста аст.

Масалан, агар барнома 10 ГБ хотираро талаб кунад, гиреҳҳои калонтар интихоби возеҳ мебошанд. Ва агар барнома барои дастрасии баланд такрори даҳкаратаро талаб кунад, он ба хатари ҷойгир кардани репликаҳо дар ду гиреҳ базӯр нест - дар кластер ҳадди аққал даҳ гиреҳ мавҷуд бошад.

Дар ҳолатҳои миёна, дар асоси афзалиятҳо ва нуқсонҳои ҳар як интихоб интихоб кунед. Шояд баъзе далелҳо нисбат ба дигарон ба вазъияти шумо бештар мувофиқанд.

Ва ба андозаи якхела кардани ҳамаи гиреҳҳо тамоман лозим нест. Ҳеҷ чиз ба шумо имкон намедиҳад, ки аввал бо гиреҳҳои андозаашон якхела таҷриба кунед ва сипас ба онҳо гиреҳҳои андозаи дигар илова кунед ва онҳоро дар кластер якҷоя кунед. Гиреҳҳои коргарӣ дар кластери Kubernetes метавонанд комилан гетерогенӣ бошанд. Ҳамин тавр, шумо метавонед кӯшиш кунед, ки бартариҳои ҳарду равишро якҷоя кунед.

Ягон рецепти ягона вуҷуд надорад ва ҳар як вазъият нозукиҳои худро дорад ва танҳо истеҳсолот ҳақиқатро нишон медиҳад.

Тарҷума аз ҷониби дастаи платформаи абрӣ омода шудааст Mail.ru ҳалли абрӣ.

Бештар дар бораи Kubernetes: 25 Воситаҳои муфид барои идоракунӣ ва ҷойгиркунии кластерҳо.

Манбаъ: will.com

Илова Эзоҳ