„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje

„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje

Pastaba. vert.: „Dailymotion“ yra viena didžiausių pasaulyje vaizdo įrašų prieglobos paslaugų, todėl žymus „Kubernetes“ vartotojas. Šioje medžiagoje sistemų architektas Davidas Donchezas dalijasi K8s pagrindu sukurtos įmonės gamybinės platformos kūrimo rezultatais, kurie prasidėjo debesies diegimu GKE ir baigėsi kaip hibridinis sprendimas, kuris leido pagerinti atsako laiką ir sutaupyti infrastruktūros išlaidas.

Nusprendimas atkurti pagrindinę API YouTube Prieš trejus metus norėjome sukurti veiksmingesnį ir lengvesnį programų prieglobos būdą kūrimo ir gamybos procesai. Šiam tikslui nusprendėme panaudoti konteinerių orkestravimo platformą ir natūraliai pasirinkome Kubernetes.

Kodėl verta kurti savo platformą pagal Kubernetes?

Gamybos lygio API akimirksniu naudojant „Google Cloud“.

2016 metų vasara

Prieš trejus metus, iškart po to, kai „Dailymotion“ įsigijo "vivendi", mūsų inžinierių komandos yra sutelktos į vieną pasaulinį tikslą: sukurti visiškai naują „Dailymotion“ produktą.

Remdamiesi konteinerių analize, orkestravimo sprendimais ir ankstesne patirtimi, esame įsitikinę, kad Kubernetes yra teisingas pasirinkimas. Kai kurie kūrėjai jau suprato pagrindines sąvokas ir mokėjo ja naudotis, o tai buvo didžiulis privalumas pertvarkant infrastruktūrą.

Žvelgiant iš infrastruktūros perspektyvos, reikėjo galingos ir lanksčios sistemos, kad būtų galima priglobti naujų tipų debesies vietines programas. Kelionės pradžioje nusprendėme likti debesyje, kad galėtume ramiai sukurti patikimiausią įmanomą platformą vietoje. Nusprendėme diegti programas naudodami Google Kubernetes Engine, nors žinojome, kad anksčiau ar vėliau persikelsime į savo duomenų centrus ir pritaikysime hibridinę strategiją.

Kodėl pasirinkote GKE?

Šį pasirinkimą padarėme daugiausia dėl techninių priežasčių. Be to, reikėjo greitai aprūpinti infrastruktūrą, atitinkančią įmonės verslo poreikius. Turėjome tam tikrus taikomųjų programų prieglobos reikalavimus, pvz., geografinį pasiskirstymą, mastelį ir atsparumą gedimams.

„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje
GKE klasteriai „Dailymotion“.

Kadangi „Dailymotion“ yra vaizdo įrašų platforma, prieinama visame pasaulyje, labai norėjome pagerinti paslaugos kokybę sumažindami laukimo laiką (latencija)... Anksčiau mūsų API buvo prieinamas tik Paryžiuje, o tai buvo neoptimalus. Norėjau turėti galimybę priimti programas ne tik Europoje, bet ir Azijoje bei JAV.

Šis jautrumas delsai reiškė, kad reikės rimtai padirbėti su platformos tinklo architektūra. Nors dauguma debesies paslaugų privertė susikurti savo tinklą kiekviename regione ir prijungti juos per VPN arba kokią nors valdomą paslaugą, „Google Cloud“ leido sukurti visiškai nukreiptą vieną tinklą, apimantį visus „Google“ regionus. Tai didelis pliusas sistemos veikimo ir efektyvumo požiūriu.

Be to, tinklo paslaugos ir apkrovos balansavimo priemonės iš „Google Cloud“ atlieka puikų darbą. Jie tiesiog leidžia naudoti savavališkus viešuosius IP adresus iš kiekvieno regiono, o nuostabus BGP protokolas pasirūpina visa kita (t. y. nukreipia vartotojus į artimiausią klasterį). Akivaizdu, kad gedimo atveju eismas automatiškai pakryps į kitą regioną be jokio žmogaus įsikišimo.

„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje
„Google“ apkrovos balansavimo stebėjimas

Mūsų platformoje taip pat intensyviai naudojami GPU. „Google Cloud“ leidžia labai efektyviai juos naudoti tiesiogiai „Kubernetes“ grupėse.

Tuo metu infrastruktūros komanda daugiausia dėmesio skyrė fiziniuose serveriuose įdiegtam senam krūvui. Štai kodėl valdomos paslaugos naudojimas (įskaitant „Kubernetes“ meistrus) atitiko mūsų reikalavimus ir leido apmokyti komandas dirbti su vietiniais klasteriais.

Dėl to mes galėjome pradėti gauti gamybinį srautą „Google Cloud“ infrastruktūroje praėjus vos 6 mėnesiams nuo darbo pradžios.

Tačiau nepaisant daugybės privalumų, darbas su debesų paslaugų teikėju yra susijęs su tam tikromis išlaidomis, kurios gali padidėti priklausomai nuo apkrovos. Todėl atidžiai išanalizavome kiekvieną naudojamą valdomą paslaugą, tikėdamiesi jas įdiegti vietoje. Tiesą sakant, vietinių klasterių diegimas prasidėjo 2016 m. pabaigoje ir tuo pat metu buvo inicijuota hibridinė strategija.

Vietinės konteinerių orkestravimo platformos „Dailymotion“ paleidimas

2016 metų ruduo

Sąlygomis, kai visas kaminas buvo paruoštas gamybai, ir dirbti su API tęsė, atėjo laikas sutelkti dėmesį į regionines grupes.

Tuo metu vartotojai kiekvieną mėnesį žiūrėjo daugiau nei 3 milijardus vaizdo įrašų. Žinoma, daugelį metų turime savo platų turinio pristatymo tinklą. Norėjome pasinaudoti šia aplinkybe ir įdiegti „Kubernetes“ grupes esamuose duomenų centruose.

„Dailymotion“ infrastruktūrą sudarė daugiau nei 2,5 tūkst. serverių šešiuose duomenų centruose. Visi jie sukonfigūruoti naudojant „Saltstack“. Pradėjome ruošti visus reikalingus receptus, kad sukurtume pagrindinio ir darbininko mazgus, taip pat etcd klasterį.

„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje

Tinklo dalis

Mūsų tinklas yra visiškai nukreiptas. Kiekvienas serveris reklamuoja savo IP tinkle naudodamas Exabgp. Palyginome kelis tinklo įskiepius ir vienintelis, kuris patenkino visus poreikius (dėl naudojamo L3 metodo). kartūnas. Jis puikiai dera prie esamo tinklo infrastruktūros modelio.

Kadangi norėjome išnaudoti visus turimus infrastruktūros elementus, pirmiausia turėjome išsiaiškinti mūsų pačių užaugintą tinklo įrankį (naudojamą visuose serveriuose): naudokite jį IP adresų diapazonams tinkle su Kubernetes mazgais reklamuoti. Leidome Calico priskirti IP adresus podams, bet nenaudojome ir vis dar nenaudojame BGP seansams tinklo įrangoje. Tiesą sakant, maršrutą tvarko Exabgp, kuris reklamuoja Calico naudojamus potinklius. Tai leidžia mums pasiekti bet kurį bloką iš vidinio tinklo (ir ypač iš apkrovos balansavimo įrenginių).

Kaip valdome įėjimo srautą

Norint nukreipti gaunamas užklausas į norimą paslaugą, buvo nuspręsta naudoti Ingress Controller dėl jo integracijos su Kubernetes įėjimo ištekliais.

Prieš trejus metus „nginx-ingress-controller“ buvo brandžiausias valdiklis: „Nginx“ egzistavo ilgą laiką ir buvo žinomas dėl savo stabilumo ir našumo.

Savo sistemoje nusprendėme valdiklius įdėti į tam skirtus 10 gigabitų blade serverius. Kiekvienas valdiklis buvo prijungtas prie atitinkamo klasterio kube-apiserver galinio taško. Šie serveriai taip pat naudojo „Exabgp“, kad reklamuotų viešuosius arba privačius IP adresus. Mūsų tinklo topologija leidžia mums naudoti BGP iš šių valdiklių, kad nukreiptume visą srautą tiesiai į blokus, nenaudojant tokios paslaugos kaip „NodePort“. Šis metodas padeda išvengti horizontalaus srauto tarp mazgų ir pagerina efektyvumą.

„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje
Srauto judėjimas iš interneto į ankštis

Dabar, kai suprantame savo hibridinę platformą, galime giliau įsigilinti į patį srauto perkėlimo procesą.

Srauto perkėlimas iš „Google Cloud“ į „Dailymotion“ infrastruktūrą

2018 metų ruduo

Po beveik dvejų metų kūrimo, bandymų ir derinimo pagaliau turime visą „Kubernetes“ krūvą, paruoštą priimti tam tikrą srautą.

„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje

Dabartinė maršruto parinkimo strategija yra gana paprasta, tačiau ji atitinka poreikius. Be viešųjų IP (Google Cloud ir Dailymotion), AWS Route 53 naudojamas nustatant politiką ir nukreipiant vartotojus į mūsų pasirinktą klasterį.

„Kubernetes“ nuotykis „Dailymotion“: infrastruktūros kūrimas debesyse + vietoje
Maršruto politikos pavyzdys naudojant 53 maršrutą

Naudojant „Google Cloud“ tai paprasta, nes visose grupėse bendriname vieną IP ir vartotojas nukreipiamas į artimiausią GKE klasterį. Mūsų klasterių technologija skiriasi, nes skiriasi jų IP.

Perkėlimo metu siekėme nukreipti regionines užklausas į atitinkamas grupes ir įvertinome šio metodo naudą.

Kadangi mūsų GKE klasteriai yra sukonfigūruoti automatiškai keisti mastelį naudojant tinkintą metriką, jų mastelis didinamas / mažinamas atsižvelgiant į gaunamą srautą.

Įprastu režimu visas regioninis eismas nukreipiamas į vietinį klasterį, o GKE tarnauja kaip rezervas iškilus problemoms (sveikatos patikrinimai atliekami 53 keliu).

...

Ateityje norime visiškai automatizuoti maršruto parinkimo politiką, kad pasiektume savarankišką mišrią strategiją, kuri nuolat gerintų naudotojų pasiekiamumą. Teigiama, kad debesijos kaštai buvo žymiai sumažinti, o API atsako laikas netgi sutrumpėjo. Mes pasitikime sukurta debesų platforma ir, jei reikia, esame pasirengę nukreipti į ją daugiau srauto.

PS iš vertėjo

Galbūt jus taip pat domina kitas naujausias „Dailymotion“ įrašas apie „Kubernetes“. Jis skirtas programoms su „Helm“ diegti daugelyje „Kubernetes“ grupių ir buvo paskelbta maždaug prieš mėnesį.

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий