Kubernetes - prisijaukinti debesį

Turinys:

Anonim

Kai norite naudoti „Linux“ paslaugoms teikti verslui, šios paslaugos turės būti saugios, atsparios ir keičiamos. Gražūs žodžiai, bet ką mes jiems sakome?

„Saugi“ reiškia, kad vartotojai gali pasiekti reikiamus duomenis, ty skaitymo ar rašymo prieigą. Tuo pačiu metu duomenys nėra atskleisti nė vienai šaliai, kuri nėra įgaliota jų matyti. Saugumas yra apgaulingas: galite galvoti, kad turite viską, kas saugoma, kad vėliau sužinotumėte, jog yra skylių. Projektavimas saugumo srityje nuo pat projekto pradžios yra daug lengvesnis nei bandymas vėliau jį modifikuoti.

„Elastingas“ reiškia, kad jūsų paslaugos toleruoja gedimus infrastruktūroje. Gedimas gali būti serverio disko valdiklis, kuris nebegali pasiekti jokių diskų, todėl duomenys nepasiekiami. Arba gedimas gali būti tinklo jungiklis, kuris nebeleidžia bendrauti dviem ar daugiau sistemų. Šiame kontekste „vienas gedimo taškas“ arba SPOF yra gedimas, neigiamai veikiantis paslaugų prieinamumą. Patvari infrastruktūra yra ta, kurioje nėra SPOF.

„Scalable“ apibūdina sistemų gebėjimą gracingai tvarkyti paklausos šuolius. Tai taip pat nurodo, kaip lengvai galima pakeisti sistemas. Pavyzdžiui, pridedant naują vartotoją, padidinant saugyklos talpą ar perkeliant infrastruktūrą iš „Amazon Web Services“ į „Google Cloud“ - ar net perkeliant jį namuose.

Kai tik jūsų infrastruktūra išsiplės už vieno serverio ribų, yra daugybė galimybių padidinti saugumą, atsparumą ir mastelį. Mes pažvelgsime į tai, kaip šios problemos buvo sprendžiamos tradiciškai, ir kokia yra nauja technologija, pakeičianti didelių programų skaičiavimą.

Gaukite daugiau „Linux“!

Mėgaukitės tuo, ką skaitote? Norite daugiau „Linux“ ir atvirojo kodo? Mes galime pristatyti pažodžiui! Prenumeruokite „Linux“ formatą šiandien už mažesnę kainą. Galite gauti spaudos leidinius, skaitmeninius leidimus ar kodėl ne abu? Mes pristatome jūsų duris visame pasaulyje už paprastą metinį mokestį. Padarykite savo gyvenimą geresnį ir lengvesnį, užsiprenumeruokite dabar!

Norint suprasti, kas šiandien įmanoma, naudinga pažvelgti į tai, kaip tradiciškai buvo įgyvendinami technologijų projektai. Ankstesniais laikais, ty daugiau nei prieš 10 metų, įmonės pirkdavo ar nuomodavo aparatinę įrangą, kad galėtų paleisti visus savo programų komponentus. Net palyginti paprastos programos, tokios kaip „WordPress“ svetainė, turi kelis komponentus. „WordPress“ atveju reikalinga „MySQL“ duomenų bazė kartu su žiniatinklio serveriu, pvz., „Apache“, ir PHP kodo tvarkymo būdas. Taigi, jie sukurs serverį, sukurs „Apache“, PHP ir „MySQL“, įdiegs „WordPress“ ir išeis.

Apskritai tai pavyko. Tai veikė pakankamai gerai, kad vis dar yra didžiulis skaičius serverių, sukonfigūruotų būtent taip. Bet tai nebuvo tobula, o dvi didesnės problemos buvo atsparumas ir mastelis.

Trūkus atsparumo reiškė, kad dėl bet kokių reikšmingų problemų serveryje prarandama paslauga. Aišku, kad katastrofiškas gedimas nereiškia, kad nėra jokios svetainės, tačiau taip pat nebuvo vietos atlikti planinę techninę priežiūrą, nepaveikiant svetainės. Net įdiegus ir suaktyvinus įprastą „Apache“ saugos naujinimą, reikėtų kelias sekundes pertraukti svetainę.

Atsparumo problema daugiausia buvo išspręsta kuriant „didelio prieinamumo grupes“. Principas buvo tas, kad du serveriai valdytų svetainę, sukonfigūruoti taip, kad dėl vieno iš jų gedimo svetainė neveiktų. Teikiama paslauga buvo tvirta, net jei atskiri serveriai nebuvo.

Abstraktūs debesys

Dalis Kubernetes galios yra jos siūloma abstrakcija. Kūrėjo požiūriu, jie kuria programą, kad ji veiktų „Docker“ talpykloje. „Docker“ nesvarbu, ar jis veikia „Windows“, „Linux“ ar kitoje operacinėje sistemoje. Tą patį „Docker“ konteinerį galima paimti iš kūrėjo „MacBook“ ir paleisti pagal „Kubernetes“ be jokių modifikacijų.

Pati „Kubernetes“ instaliacija gali būti viena mašina. Žinoma, daugelio „Kubernetes“ pranašumų nebus galima naudoti: nebus automatinio mastelio keitimo; yra akivaizdus vienintelis nesėkmės taškas ir pan. Tačiau kaip koncepcijos įrodymas bandymo aplinkoje jis veikia.

Kai būsite pasirengę gamybai, galėsite veikti savo namuose arba naudodamiesi debesies paslaugų teikėju, pvz., AWS ar „Google Cloud“. „Cloud“ paslaugų teikėjai turi keletą įmontuotų paslaugų, kurios padeda vykdyti „Kubernetes“, tačiau nė vienas iš jų nėra griežtas. Jei norite pereiti tarp „Google“, „Amazon“ ir savo infrastruktūros, nustatykite „Kubernetes“ ir pereikite. Nei viena jūsų programa neturi jokiu būdu keistis.

O kur yra „Linux“? „Kubernetes“ veikia naudojant „Linux“, tačiau operacinė sistema programoms nematoma. Tai yra reikšmingas žingsnis IT infrastruktūrų brandos ir naudojimo atžvilgiu.

„Slashdot“ efektas

Mastelio problema yra šiek tiek sudėtingesnė. Tarkime, kad jūsų „WordPress“ svetainė sulaukia 1 000 lankytojų per mėnesį. Vieną dieną jūsų verslas minimas per „Radio 4“ ar pusryčių televiziją. Staiga per 20 minučių sulauksite daugiau nei mėnesio lankytojų. Mes visi girdėjome istorijas apie svetainių „griūtį“, ir tai paprastai yra priežastis: mastelio trūkumas.

Du serveriai, kurie padėjo atlaikyti atsparumą, galėjo valdyti didesnį darbo krūvį nei vienas serveris, tačiau tai vis dar ribota. Mokėtumėte už du serverius 100 procentų laiko ir dažniausiai abu veikė puikiai. Tikėtina, kad tik vienas galėtų valdyti jūsų svetainę. Tada Johnas Humphrysas paminėjo jūsų verslą „Today“ ir jums reikės 10 serverių, kad galėtumėte tvarkyti apkrovą, bet tik kelioms valandoms.

Geresnis atsparumo ir mastelio problemos sprendimas buvo debesų kompiuterija. „Amazon Web Services“ (AWS) arba „Google Cloud“ nustatykite serverio egzempliorių ar du - mažus serverius, kurie paleidžia jūsų programas - ir jei vienas iš egzempliorių dėl kokių nors priežasčių nepavyks, jis bus automatiškai paleistas iš naujo. Teisingai nustatykite automatinį mastelį ir kai ponas Humphrys greitai padidins jūsų žiniatinklio serverio egzempliorių darbo krūvį, papildomos serverio egzemplioriai bus automatiškai pradedami dalytis darbo krūviu. Vėliau, palūkanoms mažėjant, tie papildomi atvejai sustabdomi ir mokate tik už tai, ką naudojate. Tobula … ar taip?

Nors debesų sprendimas yra daug lankstesnis nei tradicinis atskiras serveris, vis dar yra problemų. Visų veikiančių debesies egzempliorių atnaujinimas nėra paprastas. Kuriant debesį taip pat kyla problemų: nešiojamas kompiuteris, kurį naudoja kūrėjai, gali būti panašus į debesies egzempliorių, tačiau jis nėra tas pats. Jei įsipareigojate naudotis AWS, perėjimas prie „Google Cloud“ yra sudėtinga užduotis. Ir tarkime, kad dėl kokių nors priežasčių jūs tiesiog nenorite perduoti savo kompiuterijos „Amazon“, „Google“ ar „Microsoft“?

Konteineriai pasirodė kaip priemonė apjungti programas su visomis priklausomybėmis į vieną paketą, kurį galima paleisti bet kur. Konteineriai, pvz., „Docker“, gali veikti jūsų kūrėjų nešiojamuosiuose kompiuteriuose taip pat, kaip ir jūsų debesies egzemplioriuose, tačiau konteinerių parką valdyti tampa vis sudėtingiau, nes konteinerių skaičius auga.

Atsakymas - konteinerių orkestravimas. Tai reikšmingas dėmesio perkėlimas. Anksčiau mes įsitikinome, kad turime pakankamai serverių, tiek fizinių, tiek virtualių, kad galėtume išlaikyti darbo krūvį. Naudojimasis debesų paslaugų teikėjų automatiniu masteliu padėjo, bet vis tiek turėjome reikalų su egzemplioriais. Turėjome rankiniu būdu sukonfigūruoti apkrovos balanserius, užkardas, duomenų saugojimą ir dar daugiau. Naudojant konteinerių orkestravimą, visa tai (ir daug daugiau) yra pasirūpinta. Nurodome reikiamus rezultatus ir konteinerių orkestravimo įrankiai atitinka mūsų reikalavimus. Nurodome, ką norime padaryti, o ne kaip norime, kad tai būtų padaryta.

Nuolatinė integracija ir nuolatinis diegimas gali gerai veikti su „Kubernetes“. Čia pateikiama „Jenkins“, naudojamo kuriant ir diegiant „Java“ programą, apžvalga

Tapk „Kubernete“

„Kubernetes“ (ku-ber-net-eez) yra pagrindinis konteinerių orkestravimo įrankis, kurį sukūrė „Google“. Jei kas žino, kaip valdyti didžiulę IT infrastruktūrą, tai daro „Google“. „Kubernetes“ kilmė yra „Borg“, vidinis „Google“ projektas, kuris vis dar naudojamas paleisti daugumą „Google“ programų, įskaitant paieškos variklį, „Gmail“, „Google Maps“ ir kt. Borgas buvo paslaptis, kol „Google“ 2015 m. Paskelbė apie tai dokumentą, tačiau iš to labai akivaizdžiai paaiškėjo, kad Borgas buvo pagrindinis „Kubernetes“ įkvėpėjas.

„Borg“ yra sistema, valdanti skaičiavimo išteklius „Google“ duomenų centruose ir užtikrinanti „Google“ programų, tiek gamybinių, tiek kitų, veikimą, nepaisant aparatinės įrangos gedimo, išteklių išsekimo ar kitų problemų, kurios gali sukelti sutrikimą. Tai daro atidžiai stebėdamas tūkstančius mazgų, sudarančių Borgo „ląstelę“, ir ant jų einančius konteinerius, taip pat paleidžiant ar sustabdant konteinerius, jei reikia, reaguojant į problemas ar krovinio svyravimus.

Pati „Kubernetes“ gimė iš „Google“ iniciatyvos „GIFEE“ („Google“ infrastruktūra visiems kitiems “) ir buvo sukurta kaip draugiškesnė„ Borg “versija, kuri galėtų būti naudinga ne„ Google “. Jis buvo paaukotas „Linux Foundation“ 2015 m., Įsteigiant „Cloud Native Computing Foundation“ (CNCF).

„Kubernetes“ pateikia sistemą, pagal kurią jūs „deklaruojate“ savo konteinerių programas ir paslaugas, ir užtikrina, kad jūsų programos veiktų pagal tas deklaracijas. Jei jūsų programoms reikalingi išoriniai ištekliai, pvz., Saugyklos ar apkrovos balansatoriai, „Kubernetes“ gali juos automatiškai suteikti. Tai gali padidinti jūsų programų mastą aukštyn arba žemyn, kad neatsiliktų nuo apkrovos pokyčių, ir prireikus gali išplėsti visą jūsų klasterį. Programos komponentams net nereikia žinoti, kur jie veikia: „Kubernetes“ teikia vidines programų pavadinimo paslaugas, kad jos galėtų prisijungti prie „wp_mysql“ ir būti automatiškai prijungtos prie tinkamo šaltinio. “

Galutinis rezultatas yra platforma, kuri gali būti naudojama jūsų programoms vykdyti bet kurioje infrastruktūroje, pradedant viena mašina, vietoje esančių sistemų, ir debesų pagrindu sukurtų virtualių mašinų parkų, veikiančių bet kuriame dideliame debesų tiekėjuje, visi naudojant tuos pačius konteinerius. ir konfigūracija. „Kubernetes“ yra paslaugų teikėjo agnostikas: paleiskite jį visur, kur norite.

„Kubernetes“ yra galingas įrankis ir būtinai sudėtingas. Prieš pradėdami apžvalgą, turime pristatyti kai kuriuos „Kubernetes“ vartojamus terminus. Konteineriuose veikia vienos programos, kaip aptarta aukščiau, ir jie yra sugrupuoti į ankštis. „Pod“ yra glaudžiai susietų sudėtinių rodinių grupė, dislokuota kartu tame pačiame pagrindiniame kompiuteryje ir turinti keletą išteklių. Talpykloje esantys konteineriai veikia kaip komanda: jie atliks susijusias funkcijas, pvz., Programos sudėtinį rodinį ir registravimo talpyklą su konkrečiais programos nustatymais.

„Kubernetes“ apžvalga, kurioje pavaizduotas pagrindinis pagrindinis komponentas ir du mazgai. Atkreipkite dėmesį, kad praktiškai pagrindiniai komponentai gali būti padalyti į kelias sistemas

Keturi pagrindiniai „Kubernetes“ komponentai yra API serveris, planavimo priemonė, valdiklio tvarkyklė ir paskirstyta konfigūracijos duomenų bazė, vadinama etcd. API serveris yra „Kubernetes“ šerdis ir veikia kaip pagrindinis visų valdymo užklausų galinis taškas. Jas gali generuoti įvairūs šaltiniai, įskaitant kitus „Kubernetes“ komponentus, pvz., Tvarkaraštį, administratoriai per komandų eilutės ar žiniatinklio prietaisų skydelius ir pačios konteinerių programos. Tai patvirtina užklausas ir atnaujina duomenis, saugomus etcd.

Tvarkaraštis nustato, kuriuose mazguose veiks įvairios grupės, atsižvelgdamas į tokius apribojimus kaip išteklių reikalavimai, bet kokie aparatūros ar programinės įrangos apribojimai, darbo krūvis, terminai ir kt.

„Controller Manager“ stebi klasterio būseną ir, jei reikia, per API serverį bandys paleisti arba sustabdyti tinklelius, kad klasteris patektų į norimą būseną. Jis taip pat valdo kai kuriuos vidinius ryšius ir saugos funkcijas.

Kiekvienas mazgas vykdo „Kubelet“ procesą, kuris bendrauja su API serveriu ir tvarko konteinerius - paprastai naudojant „Docker“ - ir „Kube-Proxy“, kurie valdo tinklo tarpinį serverį ir apkrovos balansavimą grupėje.

Išplatintos duomenų bazės sistema etcd kildinama iš / ir kt aplankas „Linux“ sistemose, kuris naudojamas sistemos konfigūracijos informacijai laikyti, taip pat priesaga „d“, dažnai naudojama daemono procesui žymėti. Tikslai yra saugoti pagrindinės vertės duomenis paskirstytu, nuosekliu ir tolerantišku gedimams.

API serveris visus savo būsenos duomenis saugo etcd ir gali vienu metu paleisti daugybę egzempliorių. Planavimo ir valdiklio valdytojas gali turėti tik vieną aktyvų egzempliorių, tačiau naudoja nuomos sistemą, kad nustatytų, kuris vykdomas egzempliorius yra pagrindinis. Visa tai reiškia, kad „Kubernetes“ gali veikti kaip labai prieinama sistema be jokių gedimų.

Viską sujungus

Taigi, kaip mes tuos komponentus naudojame praktiškai? Toliau pateikiamas „WordPress“ svetainės sukūrimo naudojant „Kubernetes“ pavyzdys. Jei norėtumėte tai padaryti iš tikrųjų, tada tikriausiai naudosite iš anksto nustatytą receptą, vadinamą vairo diagrama. Jie yra prieinami daugeliui įprastų programų, tačiau čia mes apžvelgsime keletą veiksmų, reikalingų norint, kad „WordPress“ svetainė būtų paleista ir veiktų „Kubernetes“.

Pirmoji užduotis yra nustatyti „MySQL“ slaptažodį:

 „kubectl“ sukurkite slaptą bendrą „mysql-pass“ - from-literal = password = JŪSŲ_PASSWORD 

kubectl kalbėsis su API serveriu, kuris patvirtins komandą ir išsaugos slaptažodį etcd. Mūsų paslaugos yra apibrėžtos YAML failuose, ir dabar mums reikia šiek tiek nuolatinės „MySQL“ duomenų bazės saugyklos.

 apiVersion: v1 rūšis: PersistentVolumeClaim metaduomenys: pavadinimas: mysql-pv-pretenzijos etiketės: programa: wordpress spec: accessModes: - ReadWriteKada ištekliai: užklausos: saugykla: 20Gi 

Specifikacija dažniausiai turėtų būti savaime suprantama. Pavadinimo ir etikečių laukai naudojami norint nurodyti šią saugyklą iš kitų „Kubernetes“ dalių, šiuo atveju mūsų „WordPress“ talpyklą.

Apibrėžę saugyklą, galime apibrėžti „MySQL“ egzempliorių, nukreipdami jį į iš anksto nustatytą saugyklą. Po to apibrėžiama pati duomenų bazė. Mes suteikiame tai duomenų bazei pavadinimą ir etiketę, kad ją būtų lengva rasti „Kubernetes“.

Dabar mums reikia dar vieno konteinerio, kad galėtume paleisti „WordPress“. Konteinerio diegimo specifikacijos dalis yra:

 rūšis: Diegimo metaduomenys: pavadinimas: „WordPress“ etiketės: programa: „WordPress“ specifikacija: strategija: tipas: Atkurti 

Strategijos tipas „Atkurti“ reiškia, kad jei pasikeis kuris nors kodas, kurį sudaro programa, veikiantys egzemplioriai bus ištrinti ir atkurti iš naujo. Kitos parinktys apima galimybę vienu metu cikluoti naujus egzempliorius ir pašalinti esamus egzempliorius, leidžiant paslaugai toliau veikti diegiant naujinimą. Galiausiai mes paskelbiame pačiai „WordPress“ paslaugą, kurią sudaro PHP kodas ir „Apache“. Tai deklaruojančios YAML bylos dalis yra:

 metaduomenys: pavadinimas: „WordPress“ etiketės: programa: „WordPress“ specifikacija: prievadai: - prievadas: 80 selektorius: programa: „WordPress“ pakopa: „frontend“ tipas: „LoadBalancer“ 

Atkreipkite dėmesį į paskutinę eilutę, apibrėždami paslaugos tipą kaip „LoadBalancer“. Tai nurodo „Kubernetes“ padaryti paslaugą prieinamą už „Kubernetes“ ribų. Be šios linijos tai būtų tik vidinė tik „Kubernetes“ paslauga. Štai ir viskas. Dabar „Kubernetes“ tuos YAML failus naudos kaip deklaraciją to, ko reikia, ir nustatys tinklelius, ryšius, saugyklą ir pan., Jei reikia, kad klasteris patektų į „norimą“ būseną.

Naudokite informacijos suvestinės rodinį, kad iš karto sužinotumėte apie veiksmo „Kubernetes“ santrauką

Tai būtinai buvo tik aukšto lygio „Kubernetes“ apžvalga, o daugybė sistemos detalių ir savybių buvo praleista. Aptarėme automatinį mastelį (tiek ankštys, tiek mazgai, kurie sudaro grupę), „cron“ užduotis (konteinerių paleidimas pagal tvarkaraštį), „Ingress“ (HTTP apkrovos balansavimas, perrašymas ir SSL iškrovimas), RBAC (vaidmenų valdomos prieigos valdikliai) , tinklo strategijos (užkardos) ir daug daugiau. „Kubernetes“ yra itin lanksti ir nepaprastai galinga: bet kuriai naujai IT infrastruktūrai ji turi būti rimta varžovė.

Ištekliai

Jei nesate susipažinę su „Docker“, pradėkite čia: https://docs.docker.com/get-started.

Čia pateikiama interaktyvi pamoka apie programos diegimą ir mastelį: https://kubernetes.io/docs/tutorials/kubernetes-basics.

Žr. Https://kubernetes.io/docs/setup/scratch, kaip sukurti klasterį.

Galite žaisti su nemokamu „Kubernetes“ klasteriu https://tryk8s.com.

Galiausiai galite išsiaiškinti ilgą, techninį dokumentą, kuriame pateikiama puiki „Google“ naudojamo „Borg“ apžvalga ir kaip tai paveikė „Kubernetes“ dizainą: https://storage.googleapis.com/pub-tools-public-publication-data/ pdf / 43438.pdf.

Sužinokite daugiau apie „Tiger Computing“.

  • Geriausias 2022-2023 m. Debesies saugojimas internete: nemokamos, mokamos ir verslo galimybės
Gaukite daugiau „Linux“!

Mėgaukitės tuo, ką skaitote? Norite daugiau „Linux“ ir atvirojo kodo? Mes galime pristatyti pažodžiui! Prenumeruokite „Linux“ formatą šiandien už mažesnę kainą. Galite gauti spaudos leidinius, skaitmeninius leidimus ar kodėl ne abu? Mes pristatome jūsų duris visame pasaulyje už paprastą metinį mokestį. Padarykite savo gyvenimą geresnį ir lengvesnį, užsiprenumeruokite dabar!