Kubernetes

Pieteikumi pret bezvalstniekiem Kubernetes

Pieteikumi pret bezvalstniekiem Kubernetes
Svarīgi kritēriji, kas jāņem vērā pirms jaunas lietojumprogrammas palaišanas ražošanā, ir lietotnes pamatā esošā arhitektūra. Šajā kontekstā bieži lieto terminu, ka lietojumprogramma ir “bezvalstnieks” vai lietojumprogramma ir “statusa”. Abiem tipiem ir savi plusi un mīnusi. Kad runāsim par lietojumprogrammu vai pakalpojumu, kas darbojas ražošanā, mums domās būs Kubernetes kopa. Jūs varat instalēt savu Kubernetes kopu mākonī vai arī palaist to savā datorā kā vienu mezglu, lai ar to iegūtu praksi.

Sāksim ar naivu “bezvalstniecības” definīciju un tad lēnām virzīsimies uz stingrāku un reālāku skatījumu.

Bezvalstnieka lietojumprogramma ir atkarīga no pastāvīgas glabāšanas. Vienīgais, par ko atbild jūsu kopa, ir kods un cits statiskais saturs, kas tajā mitināts. Tas ir viss, nemainot datubāzes, bez rakstīšanas un bez failiem, kad pāksts tiek izdzēsts.

Savukārt valstiskai lietojumprogrammai ir vairāki citi parametri, par kuriem tai vajadzētu rūpēties klasterī. Ir dinamiskas datu bāzes, kas pat tad, ja lietotne ir bezsaistē vai izdzēsta, saglabājas diskā. Sadalītā sistēmā, piemēram, Kubernetes, tas rada vairākus jautājumus. Mēs tos detalizēti aplūkosim, bet vispirms noskaidrosim dažus nepareizus uzskatus.

Bezvalstnieku pakalpojumi faktiski nav “bezvalstnieki”

Ko tas nozīmē, kad mēs sakām sistēmas stāvokli? Nu, ņemsim vērā šādu vienkāršu automātisko durvju piemēru.

Durvis tiek atvērtas, kad sensors atklāj, ka kāds tuvojas, un tās aizveras, tiklīdz sensors nesaņem atbilstošu ievadi.

Praksē jūsu bezvalstnieka lietotne ir līdzīga šim iepriekš minētajam mehānismam. Tam var būt daudz vairāk stāvokļu nekā tikai slēgts vai atvērts, un daudz dažādu ievades veidu, kā arī padarot to sarežģītāku, bet būtībā to pašu.

Tas var atrisināt sarežģītas problēmas, vienkārši saņemot ievadi un veicot darbības, kas atkarīgas gan no ievadītā, gan no stāvokļa, kurā tā atrodas. Iespējamo stāvokļu skaits ir iepriekš noteikts.

Tātad bezvalstniecība ir nepareizs nosaukums.

Bezvalstnieku lietojumprogrammas praksē var arī nedaudz krāpties, saglabājot informāciju par, piemēram, klienta sesijām pašā klientā (HTTP sīkfaili ir lielisks piemērs), un tām joprojām ir jauka bezvalstniecība, kas liktu tām nevainojami darboties kopā.

Piemēram, klienta sesijas detaļas, piemēram, kādi produkti tika saglabāti grozā un nav izrakstīti, var glabāt klientā, un nākamajā reizē, kad sākas sesija, tiek atmiņā arī šī attiecīgā informācija.

Kubernetes kopā bezvalstnieces lietojumprogrammai nav pastāvīgas krātuves vai ar to saistītā apjoma. No operācijas viedokļa tā ir lieliska ziņa. Dažādas pākstis visā klasterī var darboties neatkarīgi, vienlaikus saņemot vairākus pieprasījumus. Ja kaut kas noiet greizi, varat vienkārši restartēt lietojumprogrammu, un tā atgriezīsies sākotnējā stāvoklī ar nelielu dīkstāvi.

Valsts nozīmes pakalpojumi un KLP teorēma

No otras puses, valsts nozīmes dienestiem būs jāuztraucas par daudzām un visdažādākajām lietām un dīvainiem jautājumiem. Pod ir pievienots vismaz ar vienu sējumu, un, ja dati šajā sējumā ir bojāti, tas saglabājas pat tad, ja visa kopa tiek restartēta.

Piemēram, ja datu bāzi lietojat Kubernetes kopā, visām pākstīm jābūt vietējam sējumam datu bāzes glabāšanai. Visiem datiem jābūt perfektā sinhronizācijā.

Tātad, ja kāds modificē ierakstu datu bāzē, un tas tika izdarīts uz A podiņa, un uz B pogas parādās lasīšanas pieprasījums, lai redzētu šos modificētos datus, tad B pod ir jāparāda šie jaunākie dati vai jāsniedz kļūdas ziņojums. To sauc par konsekvenci.

Konsekvence, Kubernetes kopas kontekstā nozīmē katrs lasījums saņem jaunāko rakstīšanas vai kļūdas ziņojumu.

Bet tas samazina pieejamība, viens no vissvarīgākajiem izplatītās sistēmas izmantošanas iemesliem. Pieejamība nozīmē, ka jūsu lietojumprogramma visu diennakti darbojas tikpat tuvu pilnībai kā iespējama, ka pēc iespējas mazāk kļūdu.

Var apgalvot, ka no tā visa var izvairīties, ja jums ir tikai viena centralizēta datu bāze, kas ir atbildīga par visu pastāvīgo krātuves vajadzību apstrādi. Tagad mēs esam atgriezušies pie viena neveiksmes punkta, kas ir vēl viena problēma, kuru Kubernetes kopām vajadzētu vispirms atrisināt.

Jums ir jābūt decentralizētam pastāvīgu datu glabāšanas veidam. Parasti sauc par tīkla sadalīšanu. Turklāt jūsu kopai jāspēj izdzīvot to mezglu kļūmē, kuri darbojas ar valstisko lietojumprogrammu. Tas ir pazīstams kā nodalījuma tolerance.

Jebkuram valstiskam pakalpojumam (vai lietojumprogrammai), kas tiek palaists Kubernetes kopā, ir jābūt līdzsvaram starp šiem trim parametriem. Nozarē tā ir pazīstama kā KLP teorēma, kurā kompromisi starp konsekvenci un pieejamību tiek izskatīti tīkla sadalīšanas klātbūtnē.

Turpmākās atsauces

Lai iegūtu papildu ieskatu KLP teorēmā, varat apskatīt šo lielisko runu, ko teica Bryan Cantrill, kurš daudz tuvāk aplūko izplatīto sistēmu darbību ražošanā.

Kā instalēt un spēlēt Doom uz Linux
Ievads liktenī Doom sērija radās 90. gados pēc sākotnējā Doom izlaišanas. Tas bija tūlītējs hīts, un kopš tā laika spēļu sērija ir saņēmusi daudzas ba...
Vulkan Linux lietotājiem
Ar katru jauno grafisko karšu paaudzi mēs redzam, kā spēļu izstrādātāji pārspēj grafiskās uzticamības robežas un tuvojas fotoreālismam. Neskatoties uz...
OpenTTD vs Simutrans
Transporta simulācijas izveide var būt jautra, relaksējoša un ārkārtīgi vilinoša. Tāpēc jums jāpārliecinās, ka izmēģināt pēc iespējas vairāk spēļu, la...