Kubernetes: open source kundër atij me markë

Përshëndetje, unë quhem Dmitry Krasnov. Tani e më shumë se pesë vjet merrem me administrimin e klastereve Kubernetes dhe ndërtimin e arkitekturave të komplikuara mikroshërbimesh. Në fillim të këtij viti lançuam një shërbim për menaxhimin e klastereve Kubernetes mbi Containerum. Duke e shfrytëzuar rastin, do të tregoj se çfarë është ky Kubernetes dhe si ndryshon integrimi me një ofrues në krahasim me open source.

Për të filluar, çfarë është Kubernetes. Kjo është një sistem për menaxhimin e konteinerëve në një numër të madh hostesh. Nga greqishtja, përndryshe, përkthehet si "pilot" ose "përgjegjës". Fillimisht është zhvilluar nga Google, dhe më pas është dhënë si një kontribut teknologjik në Cloud Native Computing Foundation, një organizatë ndërkombëtare jo fitimprurëse që bashkon zhvilluesit kryesorë të botës, përdoruesit përfundimtarë dhe ofruesit e teknologjive të konteinerëve.

Kubernetes: open source kundër atij me markë

Për të menaxhuar një numër të madh konteinerësh

Tani tĂ« marrim vesh se çfarĂ« janĂ« kĂ«ta konteinerĂ«. KĂ«ta janĂ« aplikacione me tĂ« gjithĂ« mjedisin e tyre – kryesisht, bibliotekat nga tĂ« cilat varet funksionimi i programit. TĂ« gjitha kĂ«to janĂ« paketuar nĂ« arkiva dhe paraqiten si imazhe, qĂ« mund tĂ« ekzekutohen pavarĂ«sisht nga sistemi operativ, tĂ« testohen dhe jo vetĂ«m. Por ka njĂ« problem – tĂ« menaxhosh konteinerĂ«t nĂ« njĂ« numĂ«r tĂ« madh hostesh Ă«shtĂ« shumĂ« e komplikuar. Prandaj, Kubernetes u krijua.

Imazhi i konteinerit përbën aplikacionin plus varësitë e tij. Aplikacioni, varësitë e tij dhe imazhi i sistemit të skedarëve të OS janë të vendosura në pjesë të ndryshme të imazhit, të ashtuquajturat shtresa. Shtresat mund të riciklohen për konteinerë të ndryshëm. Për shembull, një shtresë bazë Ubuntu mund të përdoret për të gjitha aplikacionet në kompani. Gjatë ekzekutimit të konteinerëve nuk ka nevojë për të ruajtur në host shumë kopje të një shtrese bazë. Kjo lejon optimizimin e ruajtjes dhe shpërndarjes së imazheve.

Kur ne duam të shkarkojmë një aplikacion nga një kontejner, shtresat e nevojshme vendosen njëra mbi tjetrën dhe formojnë një sistem të skedarëve të mbivendosur. Një shtresë për shkrim vendoset mbi të, e cila, kur kontejneri ndalet, fshihet. Kjo garanton që kur kontejneri hapet, aplikacioni gjithmonë ka një mjedis të njëjtë, i cili nuk mund të ndryshohet. Kjo siguron riprodhueshmërinë e mjedisit në sisteme të ndryshme operative të hostit. Pa marrë parasysh nëse është Ubuntu apo CentOS, mjedisi gjithmonë do të jetë i njëjtë. Për më tepër, kontejneri është i izoluar nga hosti përmes mekanizmave të inkorporuar në kernelin Linux. Aplikacionet në kontejner nuk shohin skedarët, proceset e hostit dhe kontejnerët e tjerë. Kjo izolim i aplikacioneve nga sistemi operativ i hostit ofron një shtesë të sigurisë.

Për menaxhimin e konteinerëve në host, ka shumë mjete. Mjeti më i njohur është Docker. Ai ofron një cikël të plotë jetësor për konteinerët. Megjithatë, ai funksionon vetëm në një host. Kur është e nevojshme të menaxhohen konteinerët në shumë hoste, Docker mund ta kthejë jetën e inxhinierëve në një ferr. Prandaj, Kubernetes u krijua.

Kërkesa për Kubernetes është pikërisht për shkak të mundësisë për të menaxhuar grupe kontejnerësh në shumë hoste si entitete të vetme. Popullariteti i sistemit siguron mundësinë e ndërtimit të DevOps ose Operacioneve të Zhvillimit, ku Kubernetes përdoret për të nisur proceset e këtij DevOps.

Kubernetes: open source kundër atij me markë

Figura 1. Një diagramë e thjeshtë e funksionimit të Kubernetes

Automatizimi i plotë

DevOps, nĂ« parim, Ă«shtĂ« automatizimi i procesit tĂ« zhvillimit. Thjesht, zhvilluesit shkruajnĂ« kodin, i cili ngarkohet nĂ« njĂ« depo. MĂ« pas, ky kod mund tĂ« ndĂ«rtohet automatikisht menjĂ«herĂ« nĂ« njĂ« kontejner me tĂ« gjitha bibliotekat, tĂ« testohet dhe "tĂ« pĂ«rfundojĂ«" nĂ« fazĂ«n tjetĂ«r – Staging, dhe mĂ« pas menjĂ«herĂ« nĂ« Production.

SĂ« bashku me Kubernetes, DevOps lejon automatizimin e kĂ«tij procesi, nĂ« mĂ«nyrĂ« qĂ« ai tĂ« zhvillohet praktikisht pa pjesĂ«marrjen e vetĂ« zhvilluesve. Si rezultat, ndodhin pĂ«rshpejtimet e ndjeshme nĂ« ndĂ«rtim, pĂ«r shkak se zhvilluesit nuk e kanĂ« kĂ«tĂ« detyrĂ« nĂ« kompjuterin e tyre — ata thjesht shkruajnĂ« njĂ« pjesĂ« tĂ« kodit, e shtyjnĂ« kodin nĂ« depo, pas sĂ« cilĂ«s fillon pipeline-i, i cili mund tĂ« pĂ«rfshijĂ« procesin e ndĂ«rtimit, testimit dhe implementimit. KĂ«shtu ndodh me çdo komit, prandaj testimi Ă«shtĂ« i vazhdueshĂ«m.

NĂ« tĂ« njĂ«jtĂ«n kohĂ«, pĂ«rdorimi i kontejnerĂ«ve siguron qĂ« e gjithĂ« ambienti i kĂ«saj programi tĂ« dalĂ« nĂ« prodhim nĂ« tĂ« njĂ«jtĂ«n formĂ« siç Ă«shtĂ« testuar. Pra, nuk do tĂ« ndodhin probleme si «nĂ« test ishin versionet njĂ«, nĂ« prodhim – tĂ« tjera, dhe kur u vendos – gjithçka ra». Dhe pasi sot kemi njĂ« tendencĂ« drejt arkitekturĂ«s mikroshĂ«rbimeve, kur nĂ« vend tĂ« njĂ« aplikacioni tĂ« madh ka qindra tĂ« vogla, atĂ«herĂ« pĂ«r ta administruar ato manualisht, do tĂ« kĂ«rkohet njĂ« staf i madh punonjĂ«sish. Prandaj ne pĂ«rdorim Kubernetes.

Përfitimet, përfitimet, përfitimet


Nëse flasim për avantazhet e Kubernetes si platformë, ajo ka përfitime të konsiderueshme në aspektin e menaxhimit të arkitekturës mikroshërbimeve.

  • Menaxhimi i shumĂ« replikave. E rĂ«ndĂ«sishmja — Ă«shtĂ« menaxhimi i kontejnerĂ«ve nĂ« shumĂ« hoste. Dhe çfarĂ« Ă«shtĂ« mĂ« e rĂ«ndĂ«sishmja, — menaxhimi i shumĂ« replikave tĂ« aplikacioneve nĂ« kontejnerĂ« si njĂ« njĂ«si tĂ« vetme. FalĂ« kĂ«tij fakti, inxhinierĂ«t nuk duhet tĂ« kujdesen pĂ«r çdo kontejner individual. NĂ«se njĂ« nga kontejnerĂ«t dĂ«shton, atĂ«herĂ« Kubernetes e sheh kĂ«tĂ« dhe e rinis atĂ« pĂ«rsĂ«ri.
  • Rrjeti klasterik. Gjithashtu, Kubernetes ka njĂ« rrjet klasterik tĂ« quajtur me hapĂ«sirĂ«n e vet adresore. FalĂ« kĂ«tij fakti, çdo pod ka adresĂ«n e vet. Pod-i nĂ«nkupton njĂ«sinĂ« minimale strukturale tĂ« klasterit, nĂ« tĂ« cilĂ«n drejtohen pĂ«rveç kontejnerĂ«ve. PĂ«r mĂ« tepĂ«r, Kubernetes ka funksionalitet qĂ« kombinon nĂ« vetvete balancuesin e ngarkesĂ«s dhe Zbulimin e ShĂ«rbimit. Kjo lejon eliminimin e menaxhimit manual tĂ« IP-adresave dhe delegimin e kĂ«saj detyre te Kubernetes. Dhe kontrolli automatik mbi shĂ«ndetin do tĂ« ndihmojĂ« nĂ« zbulimin e problemeve dhe nĂ« ridrejtimin e trafikut nĂ« podet funksionale.
  • Menaxhimi i konfigurimeve. Kur menaxhimi i njĂ« sĂ«rĂ« tĂ« madhe aplikacionesh bĂ«het e vĂ«shtirĂ« tĂ« menaxhosh konfigurimin e aplikacioneve. PĂ«r kĂ«tĂ«, Kubernetes ka burime speciale ConfigMap. Ato lejojnĂ« ruajtjen nĂ« mĂ«nyrĂ« qendrore tĂ« konfigurimeve dhe t'i vendosin ato nĂ« pods gjatĂ« nisjes sĂ« aplikacioneve. Ky mekanizĂ«m garanton konsistencĂ«n e konfigurimit, pavarĂ«sisht nĂ«se ka dhjetĂ« ose njĂ«qind replika aplikacionesh.
  • VĂ«llime tĂ« PĂ«rshtatshme. KontejnerĂ«t nĂ« thelb janĂ« imutabĂ«l dhe nĂ« momentin e ndalimit tĂ« njĂ« konteineri, tĂ« dhĂ«nat e shkruara nĂ« sistemin e skedarĂ«ve do tĂ« shkatĂ«rrohen. Por disa aplikacione ruajnĂ« tĂ« dhĂ«na direkt nĂ« disk. PĂ«r tĂ« zgjidhur kĂ«tĂ« problem, Kubernetes ka funksionalitet pĂ«r menaxhimin e ruajtjes sĂ« disqeve — VĂ«llime tĂ« PĂ«rshtatshme. Ky mekanizĂ«m pĂ«rdor njĂ« ruajtje tĂ« jashtme pĂ«r tĂ« dhĂ«nat, mund tĂ« ofrojĂ« ruajtje tĂ« pĂ«rhershme, tĂ« bllokuar ose tĂ« skedarit nĂ« konteinerĂ«t. Ky zgjidhje lejon ruajtjen e tĂ« dhĂ«nave ndaras nga punĂ«torĂ«t, duke i shpĂ«tuar ata nĂ« rastin e dĂ«shtimit tĂ« kĂ«tyre punĂ«torĂ«ve.
  • Balancues Ngarkese. PavarĂ«sisht se nĂ« Kubernetes ne menaxhojmĂ« entitete abstrakte si Deployment, StatefulSet etj., nĂ« fund tĂ« fundit konteinerĂ«t fillojnĂ« nĂ« servera tĂ« zakonshĂ«m makina virtuale apo harduerĂ«. Ato nuk janĂ« perfekte dhe mund tĂ« bien nĂ« çdo moment. Kubernetes do ta vĂ«rejĂ« kĂ«tĂ« dhe do tĂ« drejtojĂ« trafikun e brendshĂ«m nĂ« replika tĂ« tjera. Por çfarĂ« tĂ« bĂ«jmĂ« me trafikun qĂ« vjen nga jashtĂ«? NĂ«se thjesht drejtojmĂ« trafikun nĂ« njĂ« nga punĂ«torĂ«t, çfarĂ« ndodh nĂ« rastin e dĂ«shtimit tĂ« tij, shĂ«rbimi do tĂ« bĂ«het i paqĂ«ndrueshĂ«m. PĂ«r tĂ« zgjidhur kĂ«tĂ« problem, Kubernetes ka shĂ«rbime si Balancues Ngarkese. Ato janĂ« tĂ« destinuara pĂ«r konfigurimin automatik tĂ« njĂ« balancuesi tĂ« jashtĂ«m tĂ« trafikut nĂ« tĂ« gjithĂ« punĂ«torĂ«t nĂ« grumbull. Ky balancues i jashtĂ«m drejton trafikun e jashtĂ«m nĂ« punĂ«torĂ« dhe vetĂ« monitoron statusin e tyre. NĂ«se njĂ« ose mĂ« shumĂ« punĂ«torĂ« bĂ«hen tĂ« paarritshĂ«m, atĂ«herĂ« trafiku drejtohet nĂ« tĂ« tjerĂ«t. Kjo lejon krijimin e shĂ«rbimeve me disponueshmĂ«ri tĂ« lartĂ« pĂ«rmes Kubernetes.

Kubernetes tregon më së miri potencialin e tij kur fillon arkitekturat mikroshërbimore. Të implementosh sistemin në një arkitekturë klasike është e mundur, por pa kuptim. Nëse një aplikacion nuk mund të funksionojë në disa replika, çfarë rëndësie ka, nëse është në Kubernetes apo jo?

Kubernetes me burim të hapur


Kubernetes me burim tĂ« hapur – gjĂ« e shkĂ«lqyer: e vendos dhe funksionon. Mund tĂ« instalohet nĂ« serverat e tu, nĂ« infrastrukturĂ«n tuaj, tĂ« vendosni master dhe workere, mbi tĂ« cilat do tĂ« ekzekutohen tĂ« gjitha aplikacionet. Dhe mĂ« e rĂ«ndĂ«sishmja – e gjithĂ« kjo Ă«shtĂ« falas. MegjithatĂ«, ka nuanca.

  • E para – kĂ«rkesat pĂ«r njohuritĂ« dhe pĂ«rvojĂ«n e administratorĂ«ve dhe inxhinierĂ«ve qĂ« do tĂ« instalojnĂ« dhe mbĂ«shtesin gjithçka. Duke qenĂ« se klienti merr lirinĂ« e plotĂ« tĂ« veprimit nĂ« klaster, ai mban pĂ«rgjegjĂ«sinĂ« pĂ«r funksionimin e klasterit vetĂ«. Dhe Ă«shtĂ« shumĂ« e lehtĂ« tĂ« dĂ«shtosh kĂ«tu.
  • E dyta – mungesa e integrimeve. NĂ«se e filloni Kubernetes pa pasur ndonjĂ« platformĂ« virtualizimi tĂ« njohur, atĂ«herĂ« nuk do tĂ« merrni tĂ« gjithĂ« pĂ«rfitimet e programit. Siç janĂ« pĂ«rdorimi i Volume-ve tĂ« qĂ«ndrueshme dhe shĂ«rbimeve Load balancer.

Kubernetes: open source kundër atij me markë

Figura 2. Arkitektura k8s

Kubernetes nga nje ofrues


Integrimi me ofruesin e cloud-it ofron dy mundësi:

  • SĂ« pari, njĂ« person mund thjesht tĂ« klikojĂ« butonin «krijo klaster» dhe tĂ« marrĂ« njĂ« klaster tĂ« konfiguruar dhe gati pĂ«r punĂ«.
  • SĂ« dyti, ofruesi e vendos vet klasterin dhe konfigurimin e integrimit me cloud-in.

Si ndodh kjo me ne. Inxhinieri që nis klasterin tregon se sa workera i duhen dhe me cilat parametra (p.sh., 5 workera, çdo një me 10 CPU, 16 GB RAM dhe, le të themi, 100 GB disk). Pas kësaj, ai merr qasje në klasterin e formuar tashmë. Në këtë mënyrë, worker-at mbi të cilët ngarkohet puna, i dorëzohen plotësisht klientit, por e gjithë plani i menaxhimit mbetet përgjegjësi e ofruesit (në rast se shërbimi ofrohet sipas modelit të shërbimeve të menaxhuara).

Megjithatë, kjo skemë ka mangësi. Për shkak se plani i menaxhimit mbetet te ofruesi, ai nuk i jep klientit qasje të plotë, dhe kjo redukton fleksibilitetin në punën me Kubernetes. Nsometimes ndodh që klienti dëshiron të shtojë një funksionalitet specifik te Kubernetes, për shembull, autentifikim përmes LDAP, por konfigurimi i planit të menaxhimit nuk e lejon këtë.

Kubernetes: open source kundër atij me markë

Figura 3. Shembulli i klasterit Kubernetes nga ofruesi i cloud-it

ÇfarĂ« tĂ« zgjidhni: burim tĂ« hapur apo nga ofruesi


Pra, Kubernetes me burim të hapur apo nga një furnizues? Po të marrim Kubernetes me burim të hapur, përdoruesi mund të bëjë çfarëdo që dëshiron me të. Por ka një shans të madh të qëllojë vetë në këmbë. Me furnizuesin, kjo është më e komplikuar, sepse për kompaninë gjithçka është menduar dhe e konfiguruar. Mangësia më e madhe e Kubernetes me burim të hapur është kërkesa për specialistë. Me furnizuesin, kompanitë janë të shpëtuara nga kjo dhimbje koke, por do t'u duhet të vendosin: të paguajnë specialistët e tyre ose furnizuesin.

Kubernetes: open source kundër atij me markë

Kubernetes: open source kundër atij me markë

Mirë, përfitimet janë të dukshme, të disavantazhet gjithashtu janë të njohura. Një gjë është e pashqyrtueshme: Kubernetes zgjidh shumë probleme, duke automatizuar menaxhimin e shumë konteinerëve. Dhe cila të zgjidhet, me burim të hapur apo nga një furnizues, - secili e merr vendimin vet.

Artikullin e përgatiti Dmitri Krasnov, arkitekt kryesor i shërbimit Containerum të ofruesit #CloudMTS

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster