Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Таҷрибаҳои беҳтарини Kubernetes. Эҷоди контейнерҳои хурд
Таҷрибаҳои беҳтарини Kubernetes. Ташкилоти Кубернетес бо фазои ном
Таҷрибаҳои беҳтарини Kubernetes. Тасдиқи зиндагонии Кубернетес бо санҷишҳои омодагӣ ва зинда

Барои ҳар як манбаи Kubernetes, шумо метавонед ду намуди талаботро танзим кунед - Дархостҳо ва Маҳдудиятҳо. Якум талаботи ҳадди ақалро барои мавҷудияти захираҳои гиреҳи ройгон, ки барои идора кардани контейнер ё поддон заруранд, тавсиф мекунад, дуюмӣ захираҳои мавҷударо барои контейнер ба таври қатъӣ маҳдуд мекунад.

Вақте ки Kubernetes pods-ро ҷадвал мекунад, хеле муҳим аст, ки контейнерҳо барои дуруст кор кардан захираҳои кофӣ дошта бошанд. Агар шумо нақшаи ҷойгиркунии замимаи калонро дар гиреҳи маҳдуди захиравӣ дошта бошед, эҳтимол он аст, ки он кор накунад, зеро гиреҳ аз хотираи худ кам мешавад ё қувваи CPU тамом мешавад. Дар ин мақола, мо дида мебароем, ки чӣ тавр шумо метавонед норасоии қувваи компютериро бо истифода аз дархостҳо ва маҳдудиятҳои захираҳо ҳал кунед.

Дархостҳо ва маҳдудиятҳо механизмҳое мебошанд, ки Kubernetes барои идоракунии захираҳо ба монанди CPU ва хотира истифода мебарад. Дархостҳо он чизест, ки контейнер захираи дархостшударо қабул мекунад. Агар контейнер манбаро дархост кунад, Кубернетес онро танҳо дар гиреҳе, ки метавонад онро таъмин кунад, ба нақша мегирад. Назоратро маҳдуд мекунад, ки захираҳои аз ҷониби контейнер дархостшуда ҳеҷ гоҳ аз арзиши муайян зиёд нахоҳанд шуд.

Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Контейнер метавонад танҳо қудрати ҳисоббарории худро то ҳадди муайян афзоиш диҳад, ки пас аз он маҳдуд мешавад. Биёед бубинем, ки он чӣ гуна кор мекунад. Ҳамин тариқ, ду намуди захираҳо мавҷуданд - протсессори ва хотира. Нақшасози Kubernetes маълумотро дар бораи ин захираҳо истифода мебарад, то бифаҳмад, ки қуттиҳои худро дар куҷо идора кунед. Мушаххасоти маъмулии манбаъ барои pod чунин менамояд.

Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Ҳар як контейнер дар як паҳлӯ метавонад дархостҳо ва маҳдудиятҳои худро муқаррар кунад, ин ҳама изофӣ аст. Захираҳои протсессор дар милликорҳо муайян карда мешаванд. Агар контейнери шумо барои кор кардан ду ядрои пурра лозим бошад, шумо арзишро ба 2000 м муқаррар мекунед. Агар контейнер танҳо ба қувваи 1/4 ядро ​​ниёз дошта бошад, арзиши он 250 м хоҳад буд. Дар хотир доред, ки агар шумо арзиши захираҳои CPU-ро аз шумораи ядроҳои калонтарин гиреҳ таъин кунед, pod-и шумо умуман оғоз карда намешавад. Вазъияти ба ин монанд рӯй медиҳад, агар шумо як Pod дошта бошед, ки ба чор ядро ​​​​дода мешавад ва кластери Kubernetes танҳо аз ду мошини асосии виртуалӣ иборат аст.

Агар барномаи шумо махсус барои истифодаи якчанд ядроҳо тарҳрезӣ нашуда бошад (барномаҳо ба монанди компютерҳои мураккаби илмӣ ва амалиёти пойгоҳи додаҳо ба хотир меоянд), пас таҷрибаи беҳтарин ин аст, ки дархостҳои CPU-ро ба 1 ё пасттар гузоред ва сипас нусхаҳои бештарро ба миқёспазирӣ иҷро кунед. Ин ҳалли система чандирӣ ва эътимоднокии бештар медиҳад.

Вақте ки сухан дар бораи маҳдудиятҳои CPU меравад, чизҳо ҷолибтар мешаванд, зеро он манбаи фишурдашуда ҳисобида мешавад. Агар аризаи шумо ба маҳдудияти қудрати протсессор наздик шавад, Kubernetes бо истифода аз CPU Throttling контейнери шуморо суст мекунад - басомади протсессоро коҳиш медиҳад. Ин маънои онро дорад, ки CPU ба таври сунъӣ пахш карда мешавад, ки ба барнома кор эҳтимолан бадтар мешавад, аммо ин раванд қатъ карда намешавад ё хориҷ карда намешавад.

Захираҳои хотира бо байт муайян карда мешаванд. Одатан, арзиш дар танзимот бо мебибайт Миб чен карда мешавад, аммо шумо метавонед ҳама гуна арзишро аз байт то петабайт муқаррар кунед. Дар ин ҷо низ вазъият мисли CPU кор мекунад - агар шумо барои миқдори хотираи зиёдтар аз миқдори хотираи гиреҳҳои худ дархост гузоред, он подкаст барои иҷроиш ба нақша гирифта намешавад. Аммо бар хилофи захираҳои CPU, хотира фишурда намешавад, зеро роҳи маҳдуд кардани истифодаи он вуҷуд надорад. Аз ин рӯ, иҷрои контейнер вақте ки он аз доираи хотираи ба он ҷудошуда берун меравад, қатъ карда мешавад.

Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Дар хотир доштан муҳим аст, ки шумо дархостҳоеро танзим карда наметавонед, ки аз захираҳои гиреҳҳои шумо таъмин карда метавонанд. Мушаххасоти захираҳои муштарак барои мошинҳои виртуалии GKE-ро дар истиноди зер ин видео пайдо кардан мумкин аст.

Дар ҷаҳони идеалӣ, танзимоти пешфарзии контейнер барои ба таври мӯътадил кор кардани ҷараёнҳои корӣ кофӣ хоҳанд буд. Аммо ҷаҳони воқеӣ чунин нест, одамон метавонанд ба осонӣ танзим кардани истифодаи захираҳоро фаромӯш кунанд, ё ҳакерҳо дархостҳо ва маҳдудиятҳоеро муқаррар мекунанд, ки аз имконоти воқеии инфрасохтор зиёдтаранд. Барои пешгирии чунин сенарияҳо, шумо метавонед квотаҳои захираҳои ResourceQuota ва LimitRange -ро танзим кунед.

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

Квота захиравӣ метавонад чунин бошад. Дар ин мисол 4 бахш вуҷуд дорад - инҳо 4 сатри поёни код мебошанд.

Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Биёед ба ҳар яки онҳо назар кунем. Requests.cpu шумораи максималии дархостҳои якҷояи CPU мебошад, ки метавонанд аз ҳама контейнерҳо дар фазои ном ворид шаванд. Дар ин мисол, шумо метавонед 50 контейнер бо дархостҳои 10м, панҷ контейнер бо дархостҳои 100м ё танҳо як контейнер бо дархостҳои 500м дошта бошед. То он даме, ки шумораи умумии дархостҳо.cpu-и фазои номҳои додашуда камтар аз 500 м бошад, ҳама чиз хуб хоҳад буд.

Хотираи дархостшуда дархостҳо.хотира миқдори максималии дархостҳои хотираи омехта мебошад, ки ҳамаи контейнерҳо дар фазои ном дошта метавонанд. Тавре ки дар ҳолати қаблӣ, шумо метавонед 50 контейнери 2 миб, панҷ контейнери 20 миб ё як контейнери 100 миб дошта бошед, ба шарте ки ҳаҷми умумии хотираи дархостшуда дар фазои ном камтар аз 100 мебибайт бошад.

Limits.cpu ҳадди ниҳоии маҷмӯи қувваи CPU мебошад, ки ҳама контейнерҳо дар фазои номҳо метавонанд истифода баранд. Мо метавонем инро маҳдудияти дархостҳои қувваи протсессор ҳисоб кунем.

Ниҳоят, limits.memory ҳаҷми максималии хотираи муштаракест, ки ҳамаи контейнерҳо дар фазои номҳо метавонанд истифода баранд. Ин маҳдудияти дархостҳои умумии хотира аст.
Ҳамин тавр, ба таври нобаёнӣ, контейнерҳо дар кластери Kubernetes бо захираҳои ҳисоббарории номаҳдуд кор мекунанд. Бо квотаҳои захираҳо, маъмурони кластер метавонанд истеъмоли захираҳо ва эҷоди захираҳоро дар асоси фазои ном маҳдуд кунанд. Дар фазои номҳо, поддон ё контейнер метавонад ҳамон қадар қудрати CPU ва хотираро, ки аз рӯи квотаи манбаи фазои ном муайян шудааст, истеъмол кунад. Бо вуҷуди ин, нигаронӣ вуҷуд дорад, ки як контейнер ё контейнер метавонад тамоми захираҳои мавҷударо монополия кунад. Барои пешгирии ин вазъият, диапазони маҳдуд истифода мешавад - сиёсат барои маҳдуд кардани тақсимоти захираҳо (барои подҳо ё контейнерҳо) дар фазои ном.

Диапазони маҳдуд маҳдудиятҳоеро фароҳам меорад, ки метавонанд:

  • Истифодаи ҳадди ақал ва ҳадди аксар захираҳои компютериро барои ҳар як модул ё контейнер дар фазои ном таъмин кунед;
  • иҷрои ҳадди ақал ва ҳадди аксар дархостҳои нигаҳдории Starage Request барои ҳар як PersistentVolumeClaim дар фазои ном;
  • таъмини робитаи байни дархост ва маҳдудият барои захира дар фазои ном;
  • Дар фазои ном дархостҳо/Маҳдудиятҳои пешфарзро барои захираҳои ҳисоббарорӣ таъин кунед ва дар вақти кор онҳоро ба таври худкор ба контейнерҳо ворид кунед.

Бо ин роҳ шумо метавонед дар фазои номи худ доираи маҳдуд эҷод кунед. Баръакси квота, ки ба тамоми фазои ном дахл дорад, Диапазони Маҳдуд барои контейнерҳои инфиродӣ истифода мешавад. Ин метавонад ба корбарон аз эҷоди контейнерҳои хеле хурд ё баръакс, дар фазои ном монеъ шавад. Диапазони маҳдуд метавонад чунин бошад.

Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Мисли ҳолати қаблӣ, дар ин ҷо 4 бахшро ҷудо кардан мумкин аст. Биёед ҳар якеро дида бароем.
Қисмати пешфарз маҳдудиятҳои пешфарзро барои контейнер дар pod муқаррар мекунад. Агар шумо ин арзишҳоро ба диапазони шадид таъин кунед, пас ҳама контейнерҳое, ки барои онҳо ин арзишҳо ба таври возеҳ муқаррар карда нашудаанд, арзишҳои пешфарзро риоя мекунанд.

Бахши дархости пешфарз defaultRequest дархостҳои пешфарзро барои контейнер дар pod танзим мекунад. Боз ҳам, агар шумо ин арзишҳоро ба диапазони шадид таъин кунед, пас ҳама контейнерҳое, ки ин параметрҳоро ба таври возеҳ муқаррар накардаанд, ба ин арзишҳо пешфарз мешаванд.

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

Қисмати min ҳадди ақал дархостҳоеро муайян мекунад, ки метавонанд барои як контейнер дар як контейнер муқаррар карда шаванд. Аммо, арзишҳо дар бахши пешфарз ва дархостҳо барои контейнер наметавонанд аз ин маҳдудият муқаррар карда шаванд.

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

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

Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Кубернетес тафтиш мекунад, ки оё гиреҳи 1 барои иҷрои дархостҳо аз контейнерҳои подкӣ захираҳои кофӣ дорад ва агар ин тавр набошад, он ба гиреҳи навбатӣ мегузарад. Агар ҳеҷ яке аз гиреҳҳои система дархостҳоро қонеъ карда натавонанд, поддонҳо ба ҳолати интизорӣ мегузаранд. Бо истифода аз хусусиятҳои муҳаррики Google Kubernetes, ба монанди автоматикунонии гиреҳ, GKE метавонад ҳолати интизориро ба таври худкор муайян кунад ва боз якчанд гиреҳҳои иловагӣ эҷод кунад.

Агар шумо баъдан иқтидори гиреҳ тамом шавад, автоматизатсия шумораи гиреҳҳоро кам мекунад, то пулро сарфа кунед. Ин аст, ки Kubernetes подкҳоро дар асоси дархостҳо ҷадвал мекунад. Аммо, маҳдудият метавонад аз дархостҳо баландтар бошад ва дар баъзе мавридҳо гиреҳ воқеан аз захираҳо тамом мешавад. Мо ин ухдадории давлатиро долати барзиёд ичро мекунем.

Таҷрибаҳои беҳтарини Kubernetes. Муқаррар кардани дархостҳо ва маҳдудиятҳои захираҳо

Тавре ки ман гуфтам, вақте ки сухан дар бораи CPU меравад, Kubernetes ба маҳдуд кардани қуттиҳо шурӯъ мекунад. Ҳар як поддон ҳамон қадаре, ки дархост кардааст, мегирад, аммо агар он ба ҳадди ниҳоӣ нарасад, дросселкунӣ ба кор шурӯъ мекунад.

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

Биёед як сенарияеро тасаввур кунем, ки дар он мошини хотираи шумо тамом мешавад - Кубернетес ин корро чӣ гуна ҳал мекунад?

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

Ҳамин тавр, агар Кубернетес якчанд подкҳоро пайдо кунад, ки аз параметрҳои дархости онҳо зиёдтаранд, он онҳоро аз рӯи афзалият ҷудо мекунад ва пас аз ҳама подкастҳои афзалиятноки пасттаринро нест мекунад. Агар ҳамаи подкҳо афзалияти якхела дошта бошанд, пас Kubernetes он подкҳоро қатъ мекунад, ки аз дархостҳои онҳо нисбат ба дигар поддонҳо зиёдтаранд.

Дар ҳолатҳои хеле кам, Kubernetes метавонад подделҳоро қатъ кунад, ки то ҳол дар доираи дархостҳои онҳо қарор доранд. Ин метавонад вақте рӯй диҳад, ки ҷузъҳои муҳими система ба монанди агенти Kubelet ё Docker ба истеъмол кардани захираҳои бештар аз он чизе, ки барои онҳо ҷудо карда шудааст, оғоз мекунанд.
Ҳамин тавр, дар марҳилаҳои аввали ширкатҳои хурд, кластери Кубернетес метавонад бидуни муқаррар кардани дархостҳои захираҳо ва маҳдудиятҳо хуб кор кунад, аммо вақте ки дастаҳо ва лоиҳаҳои шумо ба афзоиш оғоз мекунанд, шумо хатари дучор шудан ба мушкилот дар ин соҳаро доред. Илова кардани дархостҳо ва маҳдудиятҳо ба модулҳо ва фазоҳои номҳои шумо кӯшиши хеле ками иловагиро талаб мекунад ва метавонад душвориҳои зиёдеро сарфа кунад.

Таҷрибаҳои беҳтарини Kubernetes. Хомӯшии дуруст Қатъ кунед

Баъзе рекламаҳо 🙂

Ташаккур ба шумо барои бо мо мондан. Мақолаҳои мо ба шумо маъқуланд? Мехоҳед мундариҷаи ҷолибтарро бубинед? Бо фармоиш додан ё тавсия додан ба дӯстон моро дастгирӣ кунед, абр VPS барои таҳиягарон аз $4.99, аналоги беназири серверҳои сатҳи ибтидоӣ, ки аз ҷониби мо барои шумо ихтироъ шудааст: Тамоми ҳақиқат дар бораи VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps аз $19 ё чӣ гуна мубодила кардани сервер? (бо RAID1 ва RAID10, то 24 ядро ​​ва то 40 ГБ DDR4 дастрас аст).

Dell R730xd дар маркази додаҳои Equinix Tier IV дар Амстердам 2 маротиба арзонтар аст? Танҳо дар ин ҷо 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ аз $199 дар Нидерландия! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - аз $99! Дар бораи хондан Корпоратсияи инфраструктураро чӣ гуна бояд сохт. синф бо истифодаи серверҳои Dell R730xd E5-2650 v4 ба маблағи 9000 XNUMX евро барои як динор?

Манбаъ: will.com

Илова Эзоҳ