Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Mbinu bora za Kubernetes. Kutengeneza vyombo vidogo
Mbinu bora za Kubernetes. Shirika la Kubernetes lenye nafasi ya majina
Mbinu bora za Kubernetes. Kuthibitisha Uhai wa Kubernetes kwa Majaribio ya Utayari na Uhai

Kwa kila rasilimali ya Kubernetes, unaweza kusanidi aina mbili za mahitaji - Maombi na Mipaka. Ya kwanza inaelezea mahitaji ya chini ya upatikanaji wa rasilimali za nodi za bure zinazohitajika kuendesha chombo au ganda, la pili linaweka mipaka ya rasilimali zinazopatikana kwenye chombo.

Wakati Kubernetes inapanga maganda, ni muhimu sana kwamba kontena ziwe na rasilimali za kutosha kufanya kazi vizuri. Ikiwa unapanga kupeleka programu kubwa kwenye nodi iliyozuiwa na rasilimali, inawezekana kwamba haitafanya kazi kwa sababu nodi inaishia kwenye kumbukumbu au inaishiwa na nguvu ya CPU. Katika makala hii, tutaangalia jinsi unaweza kutatua uhaba wa nguvu za kompyuta kwa kutumia maombi ya rasilimali na mipaka.

Maombi na Mipaka ni njia ambazo Kubernetes hutumia kudhibiti rasilimali kama vile CPU na kumbukumbu. Maombi ndio yanahakikisha kontena linapokea rasilimali iliyoombwa. Ikiwa kontena itaomba rasilimali, Kubernetes itaipanga tu kwenye nodi inayoweza kuitoa. Mipaka hudhibiti kwamba rasilimali zinazoombwa na kontena hazitawahi kuzidi thamani fulani.

Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Chombo kinaweza tu kuongeza nguvu zake za kompyuta hadi kikomo fulani, baada ya hapo kitapunguzwa. Hebu tuone jinsi inavyofanya kazi. Kwa hiyo, kuna aina mbili za rasilimali - processor na kumbukumbu. Kipanga ratiba cha Kubernetes hutumia data kuhusu nyenzo hizi kubaini mahali pa kuendesha maganda yako. Uainishaji wa kawaida wa rasilimali kwa ganda inaonekana kama hii.

Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Kila chombo kwenye ganda kinaweza kuweka maswali na mipaka yake, yote ni nyongeza. Rasilimali za processor zinafafanuliwa katika millicores. Ikiwa kontena lako linahitaji cores mbili kamili ili kukimbia, unaweka thamani hadi 2000m. Ikiwa chombo kinahitaji tu nguvu ya 1/4 ya msingi, thamani itakuwa 250m. Kumbuka kwamba ukiweka thamani ya rasilimali ya CPU zaidi ya idadi ya core za nodi kubwa zaidi, ganda lako halitaratibiwa kuanza hata kidogo. Hali kama hiyo itatokea ikiwa una Pod ambayo inahitaji cores nne, na nguzo ya Kubernetes ina mashine kuu mbili tu za mtandaoni.

Isipokuwa programu yako imeundwa mahususi ili kunufaika na misimbo mingi (mipango kama vile kompyuta changamano ya kisayansi na uendeshaji wa hifadhidata hukumbukwa), basi mbinu bora ni kuweka Maombi ya CPU kuwa 1 au chini kisha kuendesha nakala zaidi kwa uboreshaji. Suluhisho hili litatoa mfumo kubadilika zaidi na kuegemea.

Linapokuja suala la mapungufu ya CPU, mambo yanapendeza zaidi kwani inachukuliwa kuwa rasilimali inayoweza kubana. Ikiwa programu yako itaanza kukaribia kikomo cha nguvu za kichakataji, Kubernetes itaanza kupunguza kasi ya chombo chako kwa kutumia CPU Throttling - kupunguza kasi ya kichakataji. Hii ina maana kwamba CPU itabanwa kwa njia isiyo halali, na hivyo kutoa programu uwezekano wa utendakazi mbaya zaidi, lakini mchakato hautakatishwa au kuondolewa.

Rasilimali za kumbukumbu zinafafanuliwa kwa baiti. Kawaida thamani katika mipangilio hupimwa katika mebibytes Mib, lakini unaweza kuweka thamani yoyote, kutoka kwa ka hadi petabytes. Hali hiyo hiyo inatumika hapa kama ilivyo kwa CPU - ikiwa utaweka ombi la kumbukumbu kubwa kuliko kumbukumbu kwenye nodi zako, pod hiyo haitaratibiwa kutekelezwa. Lakini tofauti na rasilimali za CPU, kumbukumbu haijabanwa kwa sababu hakuna njia ya kupunguza matumizi yake. Kwa hiyo, utekelezaji wa chombo utasimamishwa mara tu unapoenda zaidi ya kumbukumbu iliyotengwa kwake.

Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Ni muhimu kukumbuka kuwa huwezi kusanidi maombi ambayo yanazidi rasilimali ambazo nodi zako zinaweza kutoa. Uainishaji wa rasilimali zinazoshirikiwa za mashine pepe za GKE zinaweza kupatikana kwenye viungo vilivyo chini ya video hii.

Katika ulimwengu bora, mipangilio chaguo-msingi ya kontena ingetosha kuweka mtiririko wa kazi ukiendelea vizuri. Lakini ulimwengu wa kweli hauko hivyo, watu wanaweza kusahau kwa urahisi kusanidi matumizi ya rasilimali, au wadukuzi wataweka maombi na vikwazo vinavyozidi uwezo halisi wa miundombinu. Ili kuzuia hali kama hizi kutokea, unaweza kusanidi ugavi wa rasilimali ya ResourceQuota na LimitRange.

Mara tu nafasi ya majina imeundwa, inaweza kuzuiwa kwa kutumia upendeleo. Kwa mfano, ikiwa una nafasi za majina za prod na dev, muundo ni kwamba hakuna viwango vya uzalishaji hata kidogo na viwango vikali sana vya ukuzaji. Hii inaruhusu prod, katika tukio la kuongezeka kwa kasi kwa trafiki, kuchukua rasilimali yote inayopatikana, kuzuia kabisa dev.

Kiasi cha rasilimali kinaweza kuonekana kama hiki. Katika mfano huu kuna sehemu 4 - hizi ni mistari 4 ya chini ya kanuni.

Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Hebu tuangalie kila mmoja wao. Requests.cpu ndio idadi ya juu zaidi ya maombi ya CPU yaliyounganishwa ambayo yanaweza kutoka kwa vyombo vyote kwenye nafasi ya majina. Katika mfano huu, unaweza kuwa na kontena 50 zenye maombi ya mita 10, kontena tano zenye ombi la mita 100, au kontena moja tu yenye ombi la 500m. Ilimradi jumla ya idadi ya requests.cpu ya nafasi ya jina iliyopewa iwe chini ya 500m, kila kitu kitakuwa sawa.

Kumbukumbu iliyoombwa requests.memory ni kiwango cha juu zaidi cha maombi ya kumbukumbu ya pamoja ambayo vyombo vyote kwenye nafasi ya majina vinaweza kuwa. Kama ilivyokuwa hapo awali, unaweza kuwa na kontena 50 za mib 2, kontena tano za mib 20, au kontena moja ya mib 100 mradi tu jumla ya kumbukumbu inayoombwa katika nafasi ya majina iwe chini ya mebibytes 100.

Limits.cpu ndio kiwango cha juu kabisa cha nishati ya CPU kwa pamoja ambacho vyombo vyote kwenye nafasi ya majina vinaweza kutumia. Tunaweza kuzingatia hii kuwa kikomo cha maombi ya nguvu ya kichakataji.

Hatimaye, limits.memory ni kiwango cha juu zaidi cha kumbukumbu iliyoshirikiwa ambayo vyombo vyote kwenye nafasi ya majina vinaweza kutumia. Hiki ni kikomo kwa jumla ya maombi ya kumbukumbu.
Kwa hivyo, kwa chaguo-msingi, vyombo kwenye nguzo ya Kubernetes huendeshwa na rasilimali zisizo na kikomo za kukokotoa. Kwa upendeleo wa rasilimali, wasimamizi wa nguzo wanaweza kupunguza matumizi ya rasilimali na kuunda rasilimali kulingana na nafasi ya majina. Katika nafasi ya majina, ganda au kontena inaweza kutumia nguvu na kumbukumbu nyingi za CPU kama inavyobainishwa na mgao wa rasilimali ya nafasi ya majina. Hata hivyo, kuna wasiwasi kwamba ganda moja au chombo kinaweza kuhodhi rasilimali zote zilizopo. Ili kuzuia hali hii, upeo wa kikomo hutumiwa - sera ya kupunguza ugawaji wa rasilimali (kwa maganda au vyombo) katika nafasi ya majina.

Kiwango cha kikomo hutoa vikwazo vinavyoweza:

  • Hakikisha matumizi ya chini na ya juu zaidi ya rasilimali za kompyuta kwa kila moduli au kontena kwenye nafasi ya majina;
  • kutekeleza maombi ya hifadhi ya kiwango cha chini na cha juu kabisa cha Starage kwa kila PersistentVolumeClaim katika nafasi ya majina;
  • kutekeleza uhusiano kati ya Ombi na Kikomo cha rasilimali katika nafasi ya majina;
  • weka Maombi/Mipaka chaguomsingi ya kukokotoa rasilimali katika nafasi ya majina na uziingize kiotomatiki kwenye vyombo wakati wa utekelezaji.

Kwa njia hii unaweza kuunda masafa ya kikomo katika nafasi yako ya majina. Tofauti na mgao, ambao unatumika kwa nafasi nzima ya majina, Masafa ya Kikomo hutumiwa kwa kontena mahususi. Hii inaweza kuzuia watumiaji kuunda vyombo vidogo sana au, kinyume chake, vyombo vikubwa ndani ya nafasi ya majina. Safu ya Kikomo inaweza kuonekana kama hii.

Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Kama katika kesi iliyopita, sehemu 4 zinaweza kutofautishwa hapa. Hebu tuangalie kila mmoja.
Sehemu ya chaguo-msingi huweka vikomo chaguo-msingi vya kontena kwenye ganda. Ukiweka thamani hizi kwa masafa ya kupita kiasi, basi vyombo vyovyote ambavyo thamani hizi hazijawekwa kwa uwazi vitafuata thamani chaguomsingi.

Sehemu ya ombi chaguo-msingi ya Ombi la chaguo-msingi husanidi maombi chaguomsingi ya kontena kwenye ganda. Tena, ukiweka thamani hizi kwa masafa ya kupita kiasi, basi kontena zozote ambazo hazijaweka chaguo hizi zitakuwa chaguomsingi kwa thamani hizi.

Sehemu ya juu zaidi inabainisha vikomo vya juu zaidi vinavyoweza kuwekwa kwa chombo kwenye ganda. Thamani katika sehemu ya chaguo-msingi na vikomo vya kontena haziwezi kuwekwa juu ya kikomo hiki. Ni muhimu kutambua kwamba ikiwa thamani imewekwa kwa max na hakuna sehemu ya msingi, basi thamani ya juu inakuwa thamani ya msingi.

Sehemu ya min inabainisha maombi ya chini zaidi yanayoweza kuwekwa kwa kontena kwenye ganda. Hata hivyo, thamani katika sehemu ya chaguo-msingi na hoja za kontena haziwezi kuwekwa chini ya kikomo hiki.

Tena, ni muhimu kutambua kwamba ikiwa thamani hii imewekwa, chaguo-msingi sivyo, basi thamani ya chini inakuwa pendekezo la msingi.

Maombi haya ya rasilimali hatimaye hutumiwa na kipanga ratiba cha Kubernetes kutekeleza mzigo wako wa kazi. Ili uweze kusanidi vyombo vyako kwa usahihi, ni muhimu sana kuelewa jinsi inavyofanya kazi. Wacha tuseme unataka kuendesha maganda mengi kwenye nguzo yako. Ikizingatiwa kuwa vipimo vya ganda ni halali, ratiba ya Kubernetes itatumia kusawazisha kwa robin ya pande zote ili kuchagua nodi ya kuendesha mzigo wa kazi.

Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Kubernetes itaangalia ikiwa Node 1 ina rasilimali za kutosha kutimiza maombi kutoka kwa vyombo vya ganda, na ikiwa haifanyi hivyo, itasonga kwenye nodi inayofuata. Ikiwa hakuna nodi katika mfumo inayoweza kukidhi maombi, maganda yataingia katika hali ya kusubiri. Kwa kutumia vipengele vya injini ya Google Kubernetes kama vile kuongeza nodi kiotomatiki, GKE inaweza kutambua kiotomatiki hali ya kusubiri na kuunda nodi kadhaa za ziada.

Iwapo utaishiwa na uwezo wa nodi baadaye, kuongeza otomatiki kutapunguza idadi ya nodi ili kuokoa pesa. Hii ndiyo sababu Kubernetes hupanga maganda kulingana na maombi. Walakini, kikomo kinaweza kuwa cha juu kuliko maombi, na katika hali zingine nodi inaweza kukosa rasilimali. Tunaita hali hii ya kujitolea kupita kiasi.

Mbinu bora za Kubernetes. Kuweka maombi ya rasilimali na mipaka

Kama nilivyosema, linapokuja suala la CPU, Kubernetes itaanza kupunguza maganda. Kila ganda litapokea kadiri ilivyoomba, lakini ikiwa halitafikia kikomo, kusukuma kutaanza kutumika.

Linapokuja suala la rasilimali za kumbukumbu, Kubernetes analazimika kufanya maamuzi kuhusu ni maganda gani ya kufuta na yale ya kubaki hadi ufungue rasilimali za mfumo au mfumo mzima utaanguka.

Wacha tufikirie hali ambapo una mashine inayoishiwa na kumbukumbu - Kubernetes angeshughulikiaje hilo?

Kubernetes itatafuta maganda ambayo yanatumia rasilimali zaidi kuliko ilivyoomba. Kwa hivyo ikiwa makontena yako hayana Maombi kabisa, hiyo inamaanisha kuwa wanashindwa kutumia zaidi ya walivyoomba, kwa sababu hawakuuliza chochote! Vyombo kama hivyo vinakuwa wagombea wakuu wa kuzima. Wagombea wanaofuata ni kontena ambazo zimekidhi maombi yao yote lakini bado ziko chini ya kiwango cha juu zaidi.

Kwa hivyo ikiwa Kubernetes itapata maganda kadhaa ambayo yamepita vigezo vya ombi lao, itapanga kwa kipaumbele na kisha kuondoa maganda ya kipaumbele cha chini zaidi. Ikiwa maganda yote yana kipaumbele sawa, basi Kubernetes itamaliza maganda hayo ambayo yanazidi maombi yao zaidi ya maganda mengine.

Katika hali nadra sana, Kubernetes wanaweza kutoa maganda ambayo bado yako ndani ya wigo wa maombi yao. Hili linaweza kutokea wakati vijenzi muhimu vya mfumo kama vile wakala wa Kubelet au Docker vinapoanza kutumia rasilimali zaidi ya zile zilizowekwa kwa ajili yao.
Kwa hiyo, katika hatua za mwanzo za makampuni madogo, kikundi cha Kubernetes kinaweza kufanya kazi vizuri bila kuweka maombi ya rasilimali na vikwazo, lakini timu na miradi yako inapoanza kukua kwa ukubwa, unakuwa na hatari ya kupata matatizo katika eneo hili. Kuongeza maswali na vikwazo kwenye moduli na nafasi za majina kunahitaji juhudi kidogo sana na kunaweza kuokoa usumbufu mwingi.

Mbinu bora za Kubernetes. Kuzima kwa usahihi Komesha

Baadhi ya matangazo πŸ™‚

Asante kwa kukaa nasi. Je, unapenda makala zetu? Je, ungependa kuona maudhui ya kuvutia zaidi? Tuunge mkono kwa kuweka agizo au kupendekeza kwa marafiki, VPS ya wingu kwa watengenezaji kutoka $4.99, analogi ya kipekee ya seva za kiwango cha kuingia, ambayo ilivumbuliwa na sisi kwa ajili yako: Ukweli wote kuhusu VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kutoka $19 au jinsi ya kushiriki seva? (inapatikana kwa RAID1 na RAID10, hadi cores 24 na hadi 40GB DDR4).

Dell R730xd 2x nafuu katika kituo cha data cha Equinix Tier IV huko Amsterdam? Hapa tu 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kutoka $199 nchini Uholanzi! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kutoka $99! Soma kuhusu Jinsi ya kujenga miundombinu ya Corp. darasa na matumizi ya seva za Dell R730xd E5-2650 v4 zenye thamani ya euro 9000 kwa senti?

Chanzo: mapenzi.com

Kuongeza maoni