Kubernetes: chanzo wazi dhidi ya muuzaji mahususi

Halo, jina langu ni Dmitry Krasnov. Kwa zaidi ya miaka mitano nimekuwa nikisimamia vikundi vya Kubernetes na kujenga usanifu tata wa huduma ndogo ndogo. Mwanzoni mwa mwaka huu, tulizindua huduma ya kudhibiti vikundi vya Kubernetes kulingana na Containerum. Kuchukua fursa hii, nitakuambia Kubernetes ni nini na jinsi ushirikiano na muuzaji hutofautiana na chanzo wazi.

Kuanza na, ni nini Mabernet. Huu ni mfumo wa kudhibiti vyombo kwenye idadi kubwa ya wapangishi. Kutoka kwa Kigiriki, kwa njia, inatafsiriwa kama "rubani" au "helmsman." Iliundwa awali na Google na kisha ikatolewa kama mchango wa teknolojia kwa Cloud Native Computing Foundation, shirika lisilo la faida la kimataifa ambalo huwaleta pamoja wasanidi programu wakuu duniani, watumiaji wa hatima na watoa huduma za teknolojia ya makontena.

Kubernetes: chanzo wazi dhidi ya muuzaji mahususi

Dhibiti idadi kubwa ya vyombo

Sasa hebu tuone ni aina gani ya vyombo hivi. Hii ni programu na mazingira yake yote - haswa maktaba ambayo programu inategemea. Yote hii imefungwa kwenye kumbukumbu na imewasilishwa kwa namna ya picha ambayo inaweza kuendeshwa bila kujali mfumo wa uendeshaji, uliojaribiwa na zaidi. Lakini kuna tatizo - kusimamia vyombo kwenye idadi kubwa ya majeshi ni vigumu sana. Ndio maana Kubernetes iliundwa.

Picha ya chombo inawakilisha programu pamoja na vitegemezi vyake. Programu, utegemezi wake, na picha ya mfumo wa faili ya OS iko katika sehemu tofauti za picha, tabaka zinazojulikana. Tabaka zinaweza kutumika tena kwa vyombo tofauti. Kwa mfano, programu zote kwenye kampuni zinaweza kutumia safu ya msingi ya Ubuntu. Wakati wa kuendesha vyombo, hakuna haja ya kuhifadhi nakala nyingi za safu moja ya msingi kwenye seva pangishi. Hii hukuruhusu kuboresha uhifadhi wa picha na uwasilishaji.

Tunapotaka kuendesha programu kutoka kwa chombo, tabaka zinazohitajika zimewekwa juu ya kila mmoja na mfumo wa faili unaowekwa unaundwa. Safu ya kurekodi imewekwa juu, ambayo huondolewa wakati chombo kinasimama. Hii inahakikisha kwamba wakati chombo kinapoendesha, programu daima itakuwa na mazingira sawa, ambayo hayawezi kubadilishwa. Hii inahakikisha uzalishwaji wa mazingira kwenye OS tofauti za mwenyeji. Iwe ni Ubuntu au CentOS, mazingira yatakuwa sawa kila wakati. Kwa kuongeza, kontena imetengwa kutoka kwa seva pangishi kwa kutumia mifumo iliyojengwa kwenye kinu cha Linux. Maombi kwenye chombo hayaoni faili, michakato ya mwenyeji na vyombo vya jirani. Kutengwa huku kwa programu kutoka kwa OS mwenyeji hutoa safu ya ziada ya usalama.

Kuna zana nyingi zinazopatikana za kudhibiti vyombo kwenye seva pangishi. Maarufu zaidi kati yao ni Docker. Inakuruhusu kutoa mzunguko kamili wa maisha ya vyombo. Walakini, inafanya kazi kwa mwenyeji mmoja tu. Ikiwa unahitaji kudhibiti vyombo kwenye wapangishaji wengi, Docker inaweza kufanya maisha kuwa ya kuzimu kwa wahandisi. Ndio maana Kubernetes iliundwa.

Mahitaji ya Kubernetes yanatokana haswa na uwezo wa kudhibiti vikundi vya kontena kwenye seva pangishi nyingi kama aina fulani ya huluki moja. Umaarufu wa mfumo hutoa fursa ya kuunda DevOps au Operesheni za Maendeleo, ambapo Kubernetes hutumiwa kuendesha michakato ya DevOps hii.

Kubernetes: chanzo wazi dhidi ya muuzaji mahususi

Kielelezo 1. Uwakilishi wa kimkakati wa jinsi Kubernetes inavyofanya kazi

Otomatiki kamili

DevOps kimsingi ni otomatiki ya mchakato wa ukuzaji. Kwa kusema, wasanidi huandika msimbo ambao hupakiwa kwenye hazina. Kisha msimbo huu unaweza kukusanywa kiotomatiki mara moja kwenye chombo chenye maktaba zote, kujaribiwa na "kutolewa" hadi hatua inayofuata - Kuweka, na kisha mara moja kwenye Uzalishaji.

Pamoja na Kubernetes, DevOps hukuruhusu kuhariri mchakato huu kiotomatiki ili ufanyike bila ushiriki wowote kutoka kwa watengenezaji wenyewe. Kwa sababu ya hii, ujenzi ni haraka sana, kwani msanidi sio lazima afanye hivi kwenye kompyuta yake - anaandika tu kipande cha nambari, anasukuma nambari kwenye hazina, baada ya hapo bomba limezinduliwa, ambalo linaweza kujumuisha mchakato. ya kujenga, kupima na kusambaza. Na hii hufanyika kwa kila ahadi, kwa hivyo majaribio hufanyika mfululizo.

Wakati huo huo, kutumia chombo hukuwezesha kuwa na uhakika kwamba mazingira yote ya programu hii yatatolewa katika uzalishaji hasa katika fomu ambayo ilijaribiwa. Hiyo ni, hakutakuwa na shida kama "kulikuwa na matoleo kadhaa kwenye jaribio, mengine katika toleo la umma, lakini tulipoyasakinisha, kila kitu kilianguka." Na kwa kuwa leo tuna mwelekeo kuelekea usanifu wa microservice, wakati badala ya maombi moja kubwa kuna mamia ya wadogo, ili kuwasimamia kwa mikono, wafanyakazi wakubwa wa wafanyakazi watahitajika. Ndio maana tunatumia Kubernetes.

Faida, faida, faida


Ikiwa tunazungumza juu ya faida za Kubernetes kama jukwaa, basi ina faida kubwa kutoka kwa mtazamo wa kusimamia usanifu wa huduma ndogo.

  • Kusimamia nakala nyingi. Jambo muhimu zaidi ni kudhibiti vyombo kwenye seva nyingi. Muhimu zaidi, dhibiti nakala za programu nyingi kwenye vyombo kama huluki moja. Shukrani kwa hili, wahandisi hawana wasiwasi kuhusu kila chombo cha mtu binafsi. Ikiwa moja ya kontena itaanguka, Kubernetes itaona hii na kuiwasha tena.
  • Mtandao wa nguzo. Kubernetes pia ina kinachojulikana kama mtandao wa nguzo na nafasi yake ya anwani. Shukrani kwa hili, kila pod ina anwani yake mwenyewe. Subpod inaeleweka kama kitengo cha chini cha muundo cha nguzo ambayo makontena huzinduliwa moja kwa moja. Kwa kuongeza, Kubernetes ina utendakazi unaochanganya kisawazisha mzigo na Ugunduzi wa Huduma. Hii hukuruhusu kuondoa usimamizi wa anwani ya IP na kukabidhi kazi hii kwa Kubernetes. Na ukaguzi wa afya otomatiki utasaidia kugundua shida na kuelekeza trafiki kwenye maganda ya kufanya kazi.
  • Usimamizi wa usanidi. Wakati wa kusimamia idadi kubwa ya programu, inakuwa vigumu kusimamia usanidi wa programu. Kwa madhumuni haya, Kubernetes ina rasilimali maalum za ConfigMap. Zinakuruhusu kuhifadhi usanidi wa serikali kuu na kuziweka wazi kwa maganda wakati wa kuendesha programu. Utaratibu huu unaturuhusu kuhakikisha uthabiti wa usanidi katika angalau nakala kumi au mia moja za programu.
  • Kiasi cha Kudumu. Vyombo vya asili havibadiliki na wakati kontena imesimamishwa, data yote iliyoandikwa kwa mfumo wa faili itaharibiwa. Lakini programu zingine huhifadhi data moja kwa moja kwenye diski. Ili kutatua tatizo hili, Kubernetes ina utendaji wa usimamizi wa hifadhi ya disk - Kiasi cha Kudumu. Utaratibu huu hutumia hifadhi ya nje kwa data na inaweza kuhamisha hifadhi, kizuizi au faili, kwenye vyombo. Suluhisho hili hukuruhusu kuhifadhi data kando na wafanyikazi, ambayo huwaokoa ikiwa wafanyikazi hawa hawa wataharibika.
  • Sawazisha mzigo. Ingawa katika Kubernetes tunadhibiti huluki dhahania kama vile Deployment, StatefulSet, n.k., hatimaye makontena huendeshwa kwa mashine pepe za kawaida au seva za maunzi. Wao si kamili na wanaweza kuanguka wakati wowote. Kubernetes wataona hili na kuelekeza trafiki ya ndani kwa nakala zingine. Lakini nini cha kufanya na trafiki inayotoka nje? Ikiwa utaelekeza trafiki kwa mmoja wa wafanyikazi, ikiwa itaanguka, huduma haitapatikana. Ili kutatua tatizo hili, Kubernetes ina huduma kama vile Load Balancer. Zimeundwa ili kusanidi kiotomatiki kisawazisha cha wingu cha nje kwa wafanyikazi wote kwenye nguzo. Kisawazisha hiki cha nje huelekeza trafiki ya nje kwa wafanyikazi na hufuatilia hali yao yenyewe. Ikiwa mfanyakazi mmoja au zaidi hawapatikani, trafiki itaelekezwa kwa wengine. Hii hukuruhusu kuunda huduma zinazopatikana sana kwa kutumia Kubernetes.

Kubernetes hufanya kazi vizuri zaidi wakati wa kuendesha usanifu wa huduma ndogo. Inawezekana kutekeleza mfumo katika usanifu wa classical, lakini hauna maana. Ikiwa programu haiwezi kufanya kazi kwenye nakala nyingi, basi inafanya tofauti gani - katika Kubernetes au la?

Chanzo wazi Kubernetes


Chanzo wazi Kubernetes ni jambo nzuri: Niliisakinisha na inafanya kazi. Unaweza kuipeleka kwenye seva zako za vifaa, kwenye miundombinu yako mwenyewe, kusakinisha mabwana na wafanyakazi ambao maombi yote yataendesha. Na muhimu zaidi, yote haya ni bure. Walakini, kuna nuances.

  • Ya kwanza ni mahitaji ya ujuzi na uzoefu wa wasimamizi na wahandisi ambao watapeleka na kuunga mkono haya yote. Kwa kuwa mteja hupokea uhuru kamili wa kutenda katika nguzo, anabeba jukumu la utendaji wa nguzo mwenyewe. Na ni rahisi sana kuvunja kila kitu hapa.
  • Ya pili ni ukosefu wa miunganisho. Ukiendesha Kubernetes bila jukwaa maarufu la uboreshaji, hutapata manufaa yote ya programu. Kama vile kutumia Kiasi Kinachoendelea na huduma za kusawazisha Mizigo.

Kubernetes: chanzo wazi dhidi ya muuzaji mahususi

Kielelezo 2. usanifu wa k8s

Kubernetes kutoka kwa muuzaji


Kuunganishwa na mtoaji wa wingu hutoa chaguzi mbili:

  • Kwanza, mtu anaweza kubofya kitufe cha "unda nguzo" na kupata nguzo tayari imesanidiwa na tayari kutumika.
  • Pili, muuzaji mwenyewe husakinisha nguzo na kuanzisha ushirikiano na wingu.

Jinsi inavyotokea hapa. Mhandisi anayeanzisha nguzo anabainisha ni wafanyikazi wangapi anahitaji na kwa vigezo gani (kwa mfano, wafanyikazi 5, kila mmoja na CPU 10, 16 GB ya RAM na, sema, 100 GB ya diski). Baada ya hapo inapata ufikiaji wa nguzo tayari iliyoundwa. Katika kesi hiyo, wafanyakazi ambao mzigo umezinduliwa huhamishiwa kabisa kwa mteja, lakini ndege nzima ya usimamizi inabaki chini ya wajibu wa muuzaji (ikiwa huduma hutolewa kulingana na mfano wa huduma iliyosimamiwa).

Hata hivyo, mpango huu una vikwazo vyake. Kutokana na ukweli kwamba ndege ya usimamizi inabaki na muuzaji, muuzaji haitoi ufikiaji kamili kwa mteja, na hii inapunguza kubadilika kwa kufanya kazi na Kubernetes. Wakati mwingine hutokea kwamba mteja anataka kuongeza utendaji maalum kwa Kubernetes, kwa mfano, uthibitishaji kupitia LDAP, lakini usanidi wa ndege ya usimamizi hauruhusu hili.

Kubernetes: chanzo wazi dhidi ya muuzaji mahususi

Kielelezo cha 3. Mfano wa nguzo ya Kubernetes kutoka kwa mtoaji huduma za wingu

Nini cha kuchagua: chanzo wazi au muuzaji


Kwa hivyo, Kubernetes ni chanzo wazi au muuzaji maalum? Ikiwa tutachukua chanzo wazi Kubernetes, basi mtumiaji hufanya anachotaka nacho. Lakini kuna nafasi kubwa ya kujipiga risasi kwenye mguu. Kwa muuzaji ni vigumu zaidi, kwa sababu kila kitu kinafikiriwa na kusanidiwa kwa kampuni. Hasara kubwa ya chanzo wazi cha Kubernetes ni hitaji la wataalamu. Kwa chaguo la muuzaji, kampuni imeachiliwa kutoka kwa maumivu ya kichwa, lakini italazimika kuamua kulipa wataalam wake au muuzaji.

Kubernetes: chanzo wazi dhidi ya muuzaji mahususi

Kubernetes: chanzo wazi dhidi ya muuzaji mahususi

Naam, faida ni dhahiri, hasara pia zinajulikana. Jambo moja ni la mara kwa mara: Kubernetes hutatua matatizo mengi kwa kuendesha usimamizi wa vyombo vingi kiotomatiki. Na ni ipi ya kuchagua, chanzo wazi au muuzaji - kila mtu hufanya uamuzi wake mwenyewe.

Nakala hiyo iliandaliwa na Dmitry Krasnov, mbunifu mkuu wa huduma ya Containerum ya mtoaji wa #CloudMTS.

Chanzo: mapenzi.com

Kuongeza maoni