Programmēšana

Kas ir Kubernetes? Jūsu nākamā lietojumprogrammu platforma

Kubernetes ir populāra atvērtā koda platforma konteineru orķestrēšana - tas ir, tādu lietojumprogrammu pārvaldībai, kas veidotas no vairākiem, galvenokārt pašpietiekamiem izpildlaika izsaukumiem konteineri. Kopš Docker konteinerizēšanas projekta, kas tika uzsākts 2013. gadā, konteineri ir kļuvuši arvien populārāki, taču lielas, izplatītas konteinerizētas lietojumprogrammas var kļūt arvien grūtāk koordinēt. Padarot konteinerizētās lietojumprogrammas dramatiski vieglāk pārvaldāmas mērogā, Kubernetes ir kļuvusi par galveno konteineru revolūcijas sastāvdaļu.

Kas ir konteineru orķestrēšana?

Konteineri atbalsta VM līdzīgu problēmu nodalīšanu, bet ar daudz mazākām izmaksām un daudz lielāku elastību. Rezultātā konteineri ir pārveidojuši veidu, kā cilvēki domā par programmatūras izstrādi, izvietošanu un uzturēšanu. Konteinerizētā arhitektūrā dažādi pakalpojumi, kas veido lietojumprogrammu, tiek iepakoti atsevišķos konteineros un izvietoti pa fizisko vai virtuālo mašīnu kopu. Bet tas rada nepieciešamību pēc konteineru orķestrēšana—Rīks, kas automatizē konteineru lietojumprogrammu izvietošanu, pārvaldību, mērogošanu, tīklu veidošanu un pieejamību.

Kas ir Kubernetes?

Kubernetes ir atvērtā koda projekts, kas ir kļuvis par vienu no populārākajiem konteineru orķestrēšanas rīkiem apkārt; tas ļauj plaši izvietot un pārvaldīt vairāku konteineru lietojumprogrammas. Lai gan praksē Kubernetes visbiežāk izmanto kopā ar populārāko konteineru platformu Docker, tā var darboties arī ar jebkuru konteineru sistēmu, kas atbilst konteineru attēlu formātu un izpildlaiku Open Container Initiative (OCI) standartiem. Tā kā Kubernetes ir atvērta pirmkoda un ar salīdzinoši maz ierobežojumu attiecībā uz tā izmantošanu, to var brīvi izmantot ikviens, kurš vēlas palaist konteinerus, visvairāk visur, kur vēlas tos palaist - uz vietas, publiskajā mākonī vai abos .

Google un Kubernetes

Kubernetes sāka dzīvi kā projektu Google. Tas ir Google Borg, kas ir agrāks konteineru pārvaldības rīks, kuru Google izmantoja iekšēji, pēctecis. Google 2014. gadā atklāja Kubernetes, daļēji tāpēc, ka izplatītās mikropakalpojumu arhitektūras, kuras Kubernetes atvieglo, atvieglo lietojumprogrammu palaišanu mākonī. Google uzskata, ka konteineru, mikropakalpojumu un Kubernetes pieņemšana potenciāli piesaista klientus saviem mākoņpakalpojumiem (lai gan Kubernetes noteikti darbojas arī ar Azure un AWS). Kubernetes patlaban uztur Cloud Native Computing Foundation, kas pats atrodas Linux Foundation paspārnē.

Kubernetes pret Docker un Kubernetes pret Docker Swarm

Kubernetes neaizstāj Docker, bet to papildina. Tomēr Kubernetes dara aizstāt dažas no augstākā līmeņa tehnoloģijām, kas parādījušās ap Docker.

Viena no šādām tehnoloģijām ir orķestra vadītājs Docker Swarm, kas komplektā ar Docker. Joprojām ir iespējams izmantot Docker Swarm, nevis Kubernetes, taču Docker Inc. ir izvēlējusies turpināt Kubernetes iekļaušanu Docker Community un Docker Enterprise izdevumos.

Ne tas, ka Kubernetes ir Docker Swarm aizstājējs. Kubernetes ir ievērojami sarežģītāks nekā Swarm, un tā izvietošanai nepieciešams vairāk darba. Bet atkal darbs ir paredzēts, lai ilgtermiņā nodrošinātu lielu atdevi - vieglāk pārvaldāmu, izturīgāku lietojumprogrammu infrastruktūru. Izstrādes darbiem un mazākām konteineru kopām Docker Swarm piedāvā vienkāršāku izvēli.

Kubernetes pret Mesos

Vēl viens projekts, par kuru jūs, iespējams, dzirdējāt kā Kubernetes konkurents Mesos. Mesos ir Apache projekts, kuru sākotnēji izstrādāja Twitter izstrādātāji; tas faktiski tika uztverts kā atbilde uz Google Borg projektu.

Mesos faktiski piedāvā konteineru orķestrēšanas pakalpojumus, taču tā ambīcijas pārsniedz to: tās mērķis ir būt sava veida mākoņu operētājsistēma, kas var koordinēt gan konteineros, gan bez konteineriem komponentus. Šajā nolūkā Mesos var darboties daudz dažādu platformu, tostarp pati Kubernetes.

Kubernetes arhitektūra: Kā Kubernetes darbojas

Kubernetes arhitektūrā tiek izmantoti dažādi jēdzieni un abstrakcijas. Daži no tiem ir esošo, pazīstamo priekšstatu variācijas, bet citi ir raksturīgi tikai Kubernetes.

Kubernetes kopas

Augstākā līmeņa Kubernetes abstrakcija kopa, attiecas uz mašīnu grupu, kurā darbojas Kubernetes (tā ir klasterizēta lietojumprogramma), un tās pārvaldītos konteinerus. Kubernetes kopai ir jābūt meistars, sistēma, kas komandē un kontrolē visas pārējās klastera Kubernetes mašīnas. Augsti pieejamais Kubernetes kopa atkārto kapteiņa iespējas vairākās mašīnās. Bet tikai viens kapteinis vienlaikus vada darba plānotāju un kontrolieri-vadītāju.

Kubernetes mezgli un pākstis

Katrā klasterī ir Kubernetes mezgli. Mezgli var būt fiziskas mašīnas vai VM. Atkal ideja ir abstrakcija: Neatkarīgi no lietotnes darbības, Kubernetes veic izvietošanu šajā substrātā. Kubernetes pat ļauj nodrošināt, ka noteikti konteineri darbojas tikai ar VM vai tikai uz tukša metāla.

Mezgli darbojas pākstis, visvienkāršākie Kubernetes objekti, kurus var izveidot vai pārvaldīt. Katrs pāksts attēlo vienu lietojumprogrammas vai darbības procesa gadījumu Kubernetes un sastāv no viena vai vairākiem konteineriem. Kubernetes sāk, apstājas un kopē visus konteinerus podā kā grupu. Pākstis piesaista lietotāja uzmanību lietojumprogrammai, nevis pašiem konteineriem. Tiek glabāta informācija par to, kā jākonfigurē Kubernetes, sākot no pākšu stāvokļa uz augšu Utt, izplatīts atslēgu vērtību krājums.

Pākļi tiek izveidoti un iznīcināti mezglos pēc vajadzības, lai tie atbilstu vēlamajam stāvoklim, ko lietotājs norādījis pākšu definīcijā. Kubernetes nodrošina abstrakciju, ko sauc par a kontrolieris lai risinātu loģistiku par to, kā pākstis tiek vērptas, izrullētas un vērptas uz leju. Kontrolieriem ir dažāda garša atkarībā no pārvaldītā lietojuma veida. Piemēram, nesen ieviestais “StatefulSet” kontrolieris tiek izmantots, lai risinātu lietojumprogrammas, kurām nepieciešams pastāvīgs stāvoklis. Cita veida kontrolieris izvietošana, tiek izmantots, lai mērogotu lietotni uz augšu vai uz leju, atjauninātu lietotni uz jaunu versiju vai, ja rodas problēma, atgrieztu lietotni uz labi zināmu versiju.

Kubernetes pakalpojumi

Tā kā pākstis dzīvo un mirst pēc vajadzības, mums ir nepieciešama atšķirīga abstrakcija, lai risinātu lietojumprogrammas dzīves ciklu. Lietojumprogrammai ir jābūt pastāvīgai entītijai, pat ja pākstis, kas vada konteinerus, kas veido lietojumprogrammu, pašas nav noturīgas. Šajā nolūkā Kubernetes nodrošina abstrakciju, ko sauc par a apkalpošana.

Pakalpojums Kubernetes apraksta, kā noteiktai pākšu grupai (vai citiem Kubernetes objektiem) var piekļūt, izmantojot tīklu. Kā teikts Kubernetes dokumentācijā, pākstis, kas veido lietojumprogrammas aizmuguri, var mainīties, taču priekšpusē par to nav jāzina vai jāizseko. Pakalpojumi to ļauj.

Attēlu noapaļo vēl daži Kubernetes iekšējie gabali. The plānotājs parcels mezgliem noslodzi, lai tie būtu līdzsvaroti starp resursiem un lai izvietošana atbilstu lietojumprogrammu definīciju prasībām. The kontroliera menedžeris nodrošina, ka sistēmas stāvoklis - lietojumprogrammas, slodzes utt. - atbilst vēlamajam stāvoklim, kas noteikts Etcd konfigurācijas iestatījumos.

Ir svarīgi paturēt prātā, ka neviens no konteineru izmantotajiem zema līmeņa mehānismiem, piemēram, pats Docker, nav aizstāts autore Kubernetes. Drīzāk Kubernetes nodrošina lielāku abstrakciju kopu šo mehānismu izmantošanai, lai lietotnes darbotos mērogā.

Kubernetes Ingress

Tiek uzskatīts, ka Kubernetes pakalpojumi darbojas ietvaros kopu. Bet jūs vēlaties piekļūt šiem pakalpojumiem no ārpasaules. Kubernetes ir vairāki komponenti, kas to atvieglo ar dažādu vienkāršību un izturību, tostarp NodePort un LoadBalancer, taču vislielākā elastība ir Ingress. Ingress ir API, kas pārvalda ārēju piekļuvi klastera pakalpojumiem, parasti izmantojot HTTP.

Lai pareizi iestatītu, Ingress prasa nelielu konfigurāciju - Metjū Palmers, kurš uzrakstīja grāmatu par Kubernetes attīstību, iepazīstina jūs ar procesu savā vietnē.

Kubernetes informācijas panelis

Viens Kubernetes komponents, kas palīdz jums sekot līdzi visiem šiem citiem komponentiem, ir Dashboard, tīmekļa lietotāja interfeiss, ar kuru jūs varat izvietot un novērst programmas un pārvaldīt kopu resursus. Informācijas panelis pēc noklusējuma nav instalēts, taču tā pievienošana nav pārāk daudz problēmu.

Saistītais video: kas ir Kubernetes?

Šajā 90 sekunžu ilgajā videoklipā uzziniet par Kubernetes, atvērtā pirmkoda sistēmu konteinerizētu lietojumprogrammu automatizēšanai, ko ieguvis viens no tehnoloģijas izgudrotājiem, Džo Beda, Heptio dibinātājs un CTO.

Kubernetes priekšrocības

Tā kā Kubernetes ievieš jaunas abstrakcijas un jēdzienus un tā kā Kubernetes mācīšanās līkne ir augsta, ir tikai normāli jautāt, kādi ir Kubernetes izmantošanas ilgtermiņa ieguvumi. Šeit ir aprakstīti daži no īpašajiem veidiem, kā vieglāk palaist lietotnes Kubernetes.

Kubernetes pārvalda lietotņu veselību, replikāciju, slodzes līdzsvarošanu un aparatūras resursu piešķiršanu

Viens no galvenajiem pienākumiem, ko Kubernetes noņem no rokām, ir aizņemts darbs, kas saistīts ar lietojumprogrammas uzturēšanu, palaišanu un reaģēšanu uz lietotāju prasībām. Lietotnes, kas kļūst “neveselīgas” vai neatbilst jūsu aprakstītajai veselības definīcijai, var automātiski izārstēt.

Vēl viens Kubernetes sniegtais ieguvums ir aparatūras resursu maksimāla izmantošana, ieskaitot atmiņu, atmiņas I / O un tīkla joslas platumu. Lietojumprogrammām to resursu izmantošanai var būt noteikti un mazi ierobežojumi. Daudzas lietotnes, kas izmanto minimālus resursus, var iepakot vienā aparatūrā; lietotnes, kurām jāizstiepjas, var ievietot sistēmās, kur tām ir kur augt. Un atkal var automatizēt atjauninājumu izlaišanu visā klasterī vai atsaukšanu, ja atjauninājumi pārtrauc.

Kubernetes atvieglo iepriekš konfigurētu lietojumprogrammu izvietošanu, izmantojot Helm diagrammas

Tādi pakešu pārvaldnieki kā Debian Linux APT un Python's Pip ietaupa lietotājus ar grūtībām manuāli instalēt un konfigurēt lietojumprogrammu. Tas ir īpaši ērti, ja lietojumprogrammai ir vairākas ārējās atkarības.

Helm būtībā ir Kubernetes pakotņu pārvaldnieks. Daudzām populārām programmatūras lietojumprogrammām Kubernetes jādarbojas kā savstarpēji atkarīgu konteineru grupai. Helm nodrošina definīcijas mehānismu, “diagrammu”, kas apraksta, kā lietojumprogrammu vai pakalpojumu var palaist kā konteineru grupu Kubernetes iekšpusē.

Jūs varat izveidot savas Helm diagrammas no jauna, un tas var būt nepieciešams, ja veidojat pielāgotu lietotni, kas jāizvieto iekšēji. Bet, ja jūs izmantojat populāru lietojumprogrammu, kurai ir kopīgs izvietošanas modelis, ir liela iespēja, ka kāds tai jau ir izveidojis Helm diagrammu un publicējis to oficiālajā Helm charts krātuvē. Vēl viena vieta, kur meklēt oficiālās Helm diagrammas, ir katalogs Kubeapps.com.

Kubernetes vienkāršo krātuves, noslēpumu un citu ar lietojumprogrammām saistītu resursu pārvaldību

Konteineri ir domāti nemaināmi; viss, ko jūs tajos ievietojat, nav jāmaina. Bet lietojumprogrammām ir nepieciešams stāvoklis, kas nozīmē, ka tām ir nepieciešams uzticams veids, kā tikt galā ar ārējās atmiņas apjomiem. To vēl vairāk sarežģī tas, kā konteineri dzīvo, mirst un atdzimst lietotnes darbības laikā.

Kubernetes nodrošina abstrakcijas, lai konteineri un lietotnes varētu rīkoties ar krātuvi tādā pašā atsaistītā veidā kā citi resursi. Daudziem parastajiem krātuves veidiem, sākot no Amazon EBS apjomiem līdz vienkāršām vecām NFS akcijām, var piekļūt, izmantojot Kubernetes krātuves draiverus, ko sauc par sējumiem. Parasti sējumi ir saistīti ar noteiktu pogu, bet sējumu apakštipu, ko sauc par “Noturīgo sējumu”, var izmantot datiem, kuriem jādzīvo neatkarīgi no jebkura poga.

Konteineriem bieži ir jāstrādā ar “noslēpumiem” - akreditācijas datiem, piemēram, API atslēgām vai pakalpojumu parolēm, kuras nevēlaties cietā kodā ievietot konteinerā vai atklātā veidā ievietot diskā. Kaut arī tam ir pieejami trešo pušu risinājumi, piemēram, Docker noslēpumi un HashiCorp Vault, Kubernetes ir savs mehānisms, lai dabiski apstrādātu noslēpumus, lai gan tas ir jākonfigurē uzmanīgi. Piemēram, Etcd ir jākonfigurē tā, lai sūtot noslēpumus starp mezgliem, nevis tikai teksta veidā, tiktu izmantots SSL / TLS.

Kubernetes lietojumprogrammas var darboties hibrīdās un vairāku mākoņu vidēs

Viens no seniem sapņiem par mākoņdatošanu ir iespēja darbināt jebkuru lietotni jebkurā mākonī vai publiskā vai privātā mākoņu sajaukumā. Tas nav tikai tāpēc, lai izvairītos no pārdevēja bloķēšanas, bet arī lai izmantotu atsevišķiem mākoņiem raksturīgās funkcijas.

Kubernetes nodrošina primitīvu kopumu, kas kopīgi tiek dēvēts par federāciju, lai saglabātu vairākas kopas sinhronizētas viena ar otru vairākos reģionos un mākoņos. Piemēram, konkrētu lietotnes izvietojumu var konsekventi uzturēt vairākās kopās, un dažādas kopas var kopīgot pakalpojumu atklāšanu, lai back-end resursam varētu piekļūt no jebkura klastera. Federāciju var izmantot arī, lai izveidotu augsti pieejamus vai kļūdām izturīgus Kubernetes izvietojumus neatkarīgi no tā, vai jūs aptverat vairākas mākoņu vides.

Federācija Kubernetes joprojām ir salīdzinoši jauna. Apvienotajos gadījumos vēl netiek atbalstīti visi API resursi, un jauninājumiem vēl nav automātiskas testēšanas infrastruktūras. Bet šie trūkumi ir paredzēts novērst nākamajās Kubernetes versijās.

Kur dabūt Kubernetes