Kubernetes - pieradināt mākoni

Ja vēlaties izmantot Linux, lai sniegtu pakalpojumus uzņēmumam, šiem pakalpojumiem jābūt drošiem, izturīgiem un pielāgojamiem. Jauki vārdi, bet ko mēs ar tiem saprotam?

“Drošs” nozīmē, ka lietotāji var piekļūt vajadzīgajiem datiem, piemēram, tikai lasīšanas vai rakstīšanas piekļuvei. Tajā pašā laikā dati netiek atklāti nevienai pusei, kas nav pilnvarota tos skatīt. Drošība ir maldinoša: jūs varat domāt, ka jums viss ir aizsargāts tikai tāpēc, lai vēlāk uzzinātu, ka ir caurumi. Projektēšana drošībā jau no paša projekta sākuma ir daudz vienkāršāka nekā mēģinājums vēlāk to pārveidot.

“Elastīgs” nozīmē, ka jūsu pakalpojumi pieļauj neveiksmes infrastruktūrā. Kļūme var būt servera diska kontrolleris, kurš vairs nevar piekļūt diskiem, padarot datus nesasniedzamus. Vai arī kļūme var būt tīkla slēdzis, kas vairs neļauj divām vai vairākām sistēmām sazināties. Šajā kontekstā “viens atteices punkts” jeb SPOF ir kļūme, kas negatīvi ietekmē pakalpojumu pieejamību. Elastīga infrastruktūra ir tāda, kurā nav SPOF.

“Mērogojams” raksturo sistēmu spēju graciozi rīkoties ar pieprasījuma kāpumu. Tas arī nosaka, cik viegli sistēmā var veikt izmaiņas. Piemēram, pievienojot jaunu lietotāju, palielinot atmiņas ietilpību vai pārvietojot infrastruktūru no Amazon Web Services uz Google Cloud - vai pat pārvietojot to uz vietas.

Tiklīdz jūsu infrastruktūra paplašinās ārpus viena servera, ir daudz iespēju palielināt drošību, elastību un mērogojamību. Mēs apskatīsim, kā šīs problēmas ir atrisinātas tradicionāli, un kāda ir pieejama jauna tehnoloģija, kas maina lielo lietojumprogrammu skaitļošanu.

Iegūstiet vairāk Linux!

Patīk tas, ko lasāt? Vai vēlaties vairāk Linux un atvērtā koda? Mēs varam piegādāt burtiski! Abonējiet Linux formātu šodien par izdevīgu cenu. Jūs varat saņemt drukas izdevumus, digitālos izdevumus vai kāpēc ne abus? Mēs piegādājam jūsu durvis visā pasaulē par vienkāršu gada maksu. Padariet savu dzīvi labāku un vieglāku, abonējiet tūlīt!

Lai saprastu, kas šodien ir iespējams, ir noderīgi aplūkot, kā tradicionāli tiek īstenoti tehnoloģiju projekti. Vēl senākos laikos - tas ir, pirms vairāk nekā 10 gadiem - uzņēmumi pirktu vai nomātu aparatūru, lai palaistu visas lietojumprogrammu sastāvdaļas. Pat salīdzinoši vienkāršām lietojumprogrammām, piemēram, vietnei WordPress, ir vairāki komponenti. WordPress gadījumā ir nepieciešama MySQL datu bāze kopā ar tīmekļa serveri, piemēram, Apache, un veids, kā rīkoties ar PHP kodu. Tātad viņi izveido serveri, izveido Apache, PHP un MySQL, instalē WordPress un dodas prom.

Kopumā tas izdevās. Tas darbojās pietiekami labi, ka šodien joprojām ir milzīgs skaits serveru, kas ir konfigurēti tieši tādā veidā. Bet tas nebija ideāls, un divas no lielākajām problēmām bija izturība un mērogojamība.

Elastības trūkums nozīmēja, ka jebkura nozīmīga problēma serverī izraisīs pakalpojuma zaudēšanu. Skaidrs, ka katastrofāla kļūme nenozīmē, ka nav vietnes, taču nebija arī vietas, lai veiktu plānveida apkopi, neietekmējot vietni. Pat instalējot un aktivizējot Apache parasto drošības atjauninājumu, vietnei būtu jāpārtrauc dažas sekundes.

Elastības problēma lielā mērā tika atrisināta, izveidojot “augstas pieejamības kopas”. Princips bija tāds, ka diviem serveriem, kas vada vietni, jābūt konfigurētiem tā, lai neviena no tiem kļūmes rezultātā vietne netiktu pārtraukta. Sniegtais pakalpojums bija izturīgs, pat ja atsevišķie serveri to nedarīja.

Abstrakti mākoņi

Daļa no Kubernetes spēka ir tā piedāvātā abstrakcija. No izstrādātāja viedokļa viņi izstrādā lietojumprogrammu darbībai Docker konteinerā. Docker ir vienalga, vai tas darbojas operētājsistēmā Windows, Linux vai kādā citā operētājsistēmā. To pašu Docker konteineru var paņemt no izstrādātāja MacBook un palaist zem Kubernetes bez jebkādām izmaiņām.

Pati Kubernetes instalācija var būt viena mašīna. Protams, daudzas Kubernetes priekšrocības nebūs pieejamas: nebūs automātiska mērogošana; ir acīmredzams viens neveiksmes punkts utt. Tomēr kā pierādījums koncepcijai testa vidē tas darbojas.

Kad esat gatavs ražošanai, varat palaist iekšpusē vai mākoņa nodrošinātājā, piemēram, AWS vai Google Cloud. Mākoņa nodrošinātājiem ir daži iebūvēti pakalpojumi, kas palīdz palaist Kubernetes, taču neviens no tiem nav stingras prasības. Ja vēlaties pārvietoties starp Google, Amazon un savu infrastruktūru, jūs iestatāt Kubernetes un pārvietojaties pāri. Neviena no jūsu lietojumprogrammām nekādā veidā nav jāmaina.

Un kur ir Linux? Kubernetes darbojas uz Linux, bet operētājsistēma lietojumprogrammām nav redzama. Tas ir nozīmīgs solis IT infrastruktūru briedumā un izmantojamībā.

Slashdot efekts

Mērogojamības problēma ir nedaudz sarežģītāka. Pieņemsim, ka jūsu WordPress vietne mēnesī apmeklē 1000 apmeklētāju. Kādu dienu jūsu bizness tiek minēts radio 4 vai brokastu TV. Pēkšņi jūs saņemat vairāk nekā mēneša apmeklētāju 20 minūšu laikā. Mēs visi esam dzirdējuši stāstus par vietņu “avārijām”, un tas parasti ir iemesls: mērogojamības trūkums.

Divi serveri, kas palīdzēja izturēties, varēja pārvaldīt lielāku slodzi nekā viens serveris atsevišķi, taču tas joprojām ir ierobežots. Jūs maksājat par diviem serveriem 100 procentus laika, un lielāko daļu laika abi darbojās nevainojami. Visticamāk, ka tikai viens varētu vadīt jūsu vietni. Tad Džons Hemfriss piemin jūsu biznesu vietnē Today, un slodzes apstrādei jums būs nepieciešami 10 serveri, taču tikai dažas stundas.

Labāks elastības un mērogojamības problēmas risinājums bija mākoņdatošana. Iestatiet servera instanci vai divus - mazos serverus, kas darbojas jūsu lietojumprogrammās - Amazon Web Services (AWS) vai Google Cloud, un, ja kāda no instancēm kāda iemesla dēļ neizdevās, tā automātiski tiks restartēta. Pareizi iestatiet automātisko mērogošanu un, kad Mr Humphrys liek strauji pieaugt jūsu tīmekļa servera instanču darba slodzei, papildu servera instances tiek automātiski sāktas, lai koplietotu darba slodzi. Vēlāk, samazinoties procentiem, šīs papildu instances tiek apturētas, un jūs maksājat tikai par to, ko izmantojat. Ideāli … vai tā ir?

Lai gan mākoņa risinājums ir daudz elastīgāks nekā tradicionālais atsevišķais serveris, joprojām ir problēmas. Visu darbojas mākoņa gadījumu atjaunināšana nav vienkārša. Arī mākoņa izstrādei ir problēmas: klēpjdators, kuru izmantojat izstrādātāji, var būt līdzīgs mākoņa instancei, taču tas nav tas pats. Ja apņematies izmantot AWS, migrēšana uz Google Cloud ir sarežģīts uzdevums. Un pieņemsim, ka kāda iemesla dēļ jūs vienkārši nevēlaties nodot savu skaitļošanu Amazon, Google vai Microsoft?

Konteineri ir parādījušies kā veids, kā aplauzt lietojumprogrammas ar visām atkarībām vienā paketē, kuru var palaist jebkur. Konteineri, piemēram, Docker, var darboties jūsu izstrādātāju klēpjdatoros tāpat kā tie darbojas jūsu mākoņa instancēs, taču konteineru flotes pārvaldība kļūst arvien grūtāka, jo konteineru skaits pieaug.

Atbilde ir konteineru orķestrēšana. Tā ir ievērojama uzmanības maiņa. Iepriekš mēs pārliecinājāmies, ka mums ir pietiekami daudz serveru, neatkarīgi no tā, vai tie ir fiziski vai virtuāli, lai nodrošinātu, ka mēs varam apkalpot darba slodzi. Mākoņpakalpojumu sniedzēju automātiskā mērogošana palīdzēja, taču mēs joprojām nodarbojāmies ar gadījumiem. Mums bija manuāli jākonfigurē slodzes līdzsvarotāji, ugunsmūri, datu glabāšana un vēl vairāk. Ar konteineru orķestrēšanu viss tas (un vēl daudz kas cits) tiek rūpēts. Mēs norādām nepieciešamos rezultātus, un mūsu konteineru orķestrēšanas rīki atbilst mūsu prasībām. Mēs precizējam, ko mēs vēlamies paveikt, nevis to, kā mēs to vēlamies paveikt.

Nepārtraukta integrācija un nepārtraukta izvietošana var labi darboties ar Kubernetes. Šeit ir sniegts pārskats par Jenkins izmantošanu Java lietojumprogrammas izveidē un izvietošanā

Kļūsti par Kubernete

Kubernetes (ku-ber-net-eez) ir vadošais konteineru orķestrēšanas rīks mūsdienās, un to nāca no Google. Ja kāds zina, kā vadīt milzīga mēroga IT infrastruktūras, Google to dara. Kubernetes izcelsme ir Borg, iekšējs Google projekts, kas joprojām tiek izmantots, lai palaistu lielāko daļu Google lietojumprogrammu, tostarp tās meklētājprogrammu, Gmail, Google Maps un citu. Borgs bija noslēpums, līdz Google 2015. gadā par to publicēja dokumentu, taču tas ļoti skaidri parādīja, ka Borgs bija Kubernetes galvenais iedvesmas avots.

Borg ir sistēma, kas pārvalda skaitļošanas resursus Google datu centros un uztur Google lietojumprogrammas gan ražošanā, gan citur, neskatoties uz aparatūras kļūmi, resursu izsmelšanu vai citām problēmām, kas citādi varētu izraisīt pārtraukumu. Tas tiek darīts, rūpīgi uzraugot tūkstošiem mezglu, kas veido Borga “šūnu”, un uz tiem darbojošos konteinerus, kā arī iedarbinot vai apturot konteinerus, kā nepieciešams, reaģējot uz problēmām vai slodzes svārstībām.

Pats Kubernetes ir dzimis, pateicoties Google iniciatīvai GIFEE (‘Google’s Infrastructure for Everyone Else’), un tā tika izstrādāta kā draudzīgāka Borg versija, kas varētu būt noderīga ārpus Google. Tas tika ziedots Linux fondam 2015. gadā, izveidojot Cloud Native Computing Foundation (CNCF).

Kubernetes nodrošina sistēmu, kurā jūs “deklarējat” savas konteinerizētās lietojumprogrammas un pakalpojumus, un tā nodrošina, ka jūsu lietojumprogrammas darbojas atbilstoši šīm deklarācijām. Ja jūsu programmām nepieciešami ārēji resursi, piemēram, krātuve vai slodzes līdzsvarotāji, Kubernetes tos var nodrošināt automātiski. Tas var mērogot jūsu lietojumprogrammas uz augšu vai uz leju, lai neatpaliktu no slodzes izmaiņām, un vajadzības gadījumā var pat mērogot visu jūsu kopu. Jūsu programmas komponentiem pat nav jāzina, kur tie darbojas: Kubernetes nodrošina iekšējos nosaukumpakalpojumus lietojumprogrammām, lai tās varētu izveidot savienojumu ar “wp_mysql” un automātiski pieslēgties pareizajam resursam. ”

Galarezultāts ir platforma, kuru var izmantot, lai palaistu lietojumprogrammas jebkurā infrastruktūrā, sākot no vienas mašīnas līdz pat vietējai sistēmu plauktiņai un beidzot ar mākoņa bāzes virtuālo mašīnu flotēm, kas darbojas jebkurā lielākajā mākoņa nodrošinātājā, un tās visas izmanto tos pašus konteinerus. un konfigurācija. Kubernetes ir nodrošinātājs-agnostiķis: palaidiet to visur, kur vēlaties.

Kubernetes ir spēcīgs rīks, kas noteikti ir sarežģīts. Pirms mēs nonākam pārskatā, mums jāievieš daži Kubernetes lietotie termini. Konteineros darbojas atsevišķas lietojumprogrammas, kā iepriekš minēts, un tie ir sagrupēti pākstīs. Pod ir cieši saistītu konteineru grupa, kas tiek izvietoti kopā vienā resursdatorā un koplieto dažus resursus. Tvertnē esošie konteineri darbojas kā komanda: viņi veiks saistītās funkcijas, piemēram, lietojumprogrammas konteineru un reģistrēšanas konteineru ar īpašiem lietojumprogrammas iestatījumiem.

Kubernetes pārskats, kurā redzams, ka meistars palaiž galvenos komponentus un divus mezglus. Ņemiet vērā, ka praksē galvenos komponentus var sadalīt vairākās sistēmās

Četri galvenie Kubernetes komponenti ir API serveris, plānotājs, kontroliera pārvaldnieks un izplatīta konfigurācijas datu bāze ar nosaukumu etcd. API serveris ir Kubernetes centrā, un tas darbojas kā galvenais pārvaldības pieprasījums visiem pārvaldības pieprasījumiem. Tos var ģenerēt dažādi avoti, tostarp citi Kubernetes komponenti, piemēram, plānotājs, administratori, izmantojot komandrindas vai tīmekļa paneļus, un pašas konteinerizētas lietojumprogrammas. Tas apstiprina pieprasījumus un atjaunina datus, kas saglabāti utt.

Plānotājs nosaka, kuros mezglos darbosies dažādas pākstis, ņemot vērā tādus ierobežojumus kā resursu prasības, visus aparatūras vai programmatūras ierobežojumus, darba slodzi, termiņus un daudz ko citu.

Controller Manager uzrauga klastera stāvokli un mēģinās palaist vai apturēt pākšaugus, izmantojot API serveri, obligāti, lai klasteris nonāktu vēlamajā stāvoklī. Tas arī pārvalda dažus iekšējos savienojumus un drošības elementus.

Katrs mezgls palaiž Kubelet procesu, kas sazinās ar API serveri un pārvalda konteinerus - parasti izmantojot Docker - un Kube-Proxy, kas klastera ietvaros veic tīkla starpniekserveri un slodzes līdzsvarošanu.

Sadalītās datu bāzes etcd nosaukums ir iegūts no / utt mape Linux sistēmās, ko izmanto sistēmas konfigurācijas informācijas glabāšanai, kā arī sufiksu “d”, ko bieži lieto dēmona procesa apzīmēšanai. Etcd mērķi ir galvenās vērtības datu uzglabāšana sadalītā, konsekventā un kļūdu tolerantā veidā.

API serveris visus savus stāvokļa datus saglabā failā etcd un vienlaikus var palaist daudzus gadījumus. Plānotāja un kontroliera pārvaldniekam var būt tikai viens aktīvs gadījums, taču viņi izmanto nomas sistēmu, lai noteiktu, kura darbojošā instance ir galvenā. Tas viss nozīmē, ka Kubernetes var darboties kā ļoti pieejama sistēma bez atsevišķiem kļūmes punktiem.

Saliekot to visu kopā

Tātad, kā mēs šos komponentus izmantojam praksē? Tālāk sniegts WordPress vietnes iestatīšanas piemērs, izmantojot Kubernetes. Ja vēlaties to izdarīt pa īstam, tad, iespējams, izmantosiet iepriekš noteiktu recepti, ko sauc par stūres diagrammu. Tie ir pieejami vairākām izplatītām lietojumprogrammām, taču šeit mēs aplūkosim dažas darbības, kas nepieciešamas, lai WordPress vietne palaistu un darbotos Kubernetes.

Pirmais uzdevums ir noteikt MySQL paroli:

 kubectl izveidot slepenu vispārīgu mysql-pass - from-literal = password = JŪSU_PASSWORD 

kubectl runās ar API serveri, kas pārbaudīs komandu un pēc tam saglabās paroli etcd. Mūsu pakalpojumi ir definēti YAML failos, un tagad mums ir nepieciešama pastāvīga krātuve MySQL datu bāzei.

 apiVersion: v1 veids: PersistentVolumeClaim metadati: nosaukums: mysql-pv-pretenzijas: lietotne: wordpress spec: accessModes: - ReadWriteKad resursi: pieprasījumi: krātuve: 20Gi 

Specifikācijai jābūt galvenokārt pašsaprotamai. Nosaukuma un etiķešu lauki tiek izmantoti, lai atsauktos uz šo krātuvi no citām Kubernetes daļām, šajā gadījumā - uz mūsu WordPress konteineru.

Kad esam definējuši krātuvi, mēs varam definēt MySQL gadījumu, norādot to uz iepriekš definēto krātuvi. Pēc tam tiek definēta pati datu bāze. Mēs piešķiram šai datu bāzei nosaukumu un etiķeti, lai to varētu viegli atrast Kubernetes.

Tagad mums ir nepieciešams vēl viens konteiners, lai palaistu WordPress. Konteinera izvietošanas specifikācijas daļa ir:

 veids: Izvietošanas metadati: nosaukums: WordPress uzlīmes: lietotne: WordPress spec: stratēģija: tips: Atjaunot 

Stratēģijas tips “Atjaunot” nozīmē, ka, ja mainās kāds no lietojumprogrammu saturošajiem kodiem, darbojošie gadījumi tiks izdzēsti un atjaunoti. Citas iespējas ietver iespēju pa vienam pārvietot jaunus gadījumus un noņemt esošos gadījumus, ļaujot pakalpojumam turpināt darboties atjauninājuma izvietošanas laikā. Visbeidzot, mēs pasludinām par pakalpojumu WordPress, kas sastāv no PHP koda un Apache. Daļa YAML faila, kas to deklarē, ir:

 metadati: nosaukums: WordPress uzlīmes: lietotne: WordPress spec: porti: - ports: 80 selektors: lietotne: WordPress līmenis: frontend tips: LoadBalancer 

Atzīmējiet pēdējo rindu, pakalpojuma veidu definējot kā LoadBalancer. Tas uzdod Kubernetes padarīt pakalpojumu pieejamu ārpus Kubernetes. Bez šīs līnijas tas būtu tikai iekšējs pakalpojums “Tikai Kubernetes”. Un viss. Kubernetes tagad izmantos šos YAML failus kā deklarāciju par nepieciešamo, kā arī iestatīs pākstis, savienojumus, krātuvi un tā tālāk, lai klasteris nonāktu “vēlamajā” stāvoklī.

Izmantojiet informācijas paneļa skatu, lai vienā mirklī iegūtu Kubernetes darbības kopsavilkumu

Tas noteikti ir bijis tikai Kubernetes augsta līmeņa pārskats, un daudzas sistēmas detaļas un funkcijas ir izlaistas. Mēs esam pārdomājuši automātisko mērogošanu (gan pākstis, gan mezglus, kas veido kopu), cron darbus (konteineru palaišana pēc grafika), Ingress (HTTP slodzes līdzsvarošana, pārrakstīšana un SSL izkraušana), RBAC (piekļuves vadība uz lomām) , tīkla politikas (ugunsmūris) un daudz ko citu. Kubernetes ir ārkārtīgi elastīgs un ārkārtīgi spēcīgs: jebkurai jaunai IT infrastruktūrai tai jābūt nopietnam konkurentam.

Resursi

Ja neesat pazīstams ar Docker, sāciet šeit: https://docs.docker.com/get-started.

Šeit ir interaktīva apmācība par lietotnes izvietošanu un mērogošanu: https://kubernetes.io/docs/tutorials/kubernetes-basics.

Skatiet https://kubernetes.io/docs/setup/scratch, lai izveidotu kopu.

Jūs varat spēlēt ar bezmaksas Kubernetes kopu vietnē https://tryk8s.com.

Visbeidzot, jūs varat izpētīt garu, tehnisku dokumentu ar lielisku pārskatu par to, kā Google izmanto Borg un kā tas ietekmēja Kubernetes dizainu šeit: https://storage.googleapis.com/pub-tools-public-publication-data/ pdf / 43438.pdf.

Uzziniet vairāk par Tiger Computing.

  • Labākā 2022-2023. gada mākoņkrātuve tiešsaistē: bezmaksas, maksas un biznesa iespējas
Iegūstiet vairāk Linux!

Patīk tas, ko lasāt? Vai vēlaties vairāk Linux un atvērtā koda? Mēs varam piegādāt burtiski! Abonējiet Linux formātu šodien par izdevīgu cenu. Jūs varat saņemt drukas izdevumus, digitālos izdevumus vai kāpēc ne abus? Mēs piegādājam jūsu durvis visā pasaulē par vienkāršu gada maksu. Padariet savu dzīvi labāku un vieglāku, abonējiet tūlīt!

Interesanti raksti...