Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe

Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe

Opomba. prevod: Dailymotion je ena največjih storitev za gostovanje videa na svetu in zato pomemben uporabnik Kubernetesa. V tem gradivu sistemski arhitekt David Donchez deli rezultate ustvarjanja proizvodne platforme podjetja, ki temelji na K8s, ki se je začela z namestitvijo v oblaku v GKE in končala kot hibridna rešitev, ki je omogočila boljše odzivne čase in prihranke pri stroških infrastrukture.

Odločitev za prenovo jedrnega API-ja Dailymotion pred tremi leti smo želeli razviti učinkovitejši način gostovanja aplikacij in ga poenostaviti procesov v razvoju in proizvodnji. V ta namen smo se odločili za uporabo platforme za orkestracijo kontejnerjev in seveda izbrali Kubernetes.

Zakaj je vredno zgraditi lastno platformo, ki temelji na Kubernetesu?

API na produkcijski ravni v trenutku z uporabo storitve Google Cloud

Poletje 2016

Pred tremi leti, takoj po tem, ko je Dailymotion kupil vivendi, so naše inženirske ekipe osredotočene na en globalni cilj: ustvariti popolnoma nov izdelek Dailymotion.

Na podlagi naše analize vsebnikov, orkestracijskih rešitev in naših preteklih izkušenj smo prepričani, da je Kubernetes prava izbira. Nekateri razvijalci so že razumeli osnovne koncepte in jih znali uporabljati, kar je bila velika prednost za preoblikovanje infrastrukture.

Z vidika infrastrukture je bil potreben zmogljiv in prilagodljiv sistem za gostovanje novih vrst aplikacij v oblaku. Na začetku naše poti smo se odločili ostati v oblaku, da bi lahko brez skrbi zgradili najbolj robustno možno lokalno platformo. Odločili smo se za uvedbo naših aplikacij z uporabo Google Kubernetes Engine, čeprav smo vedeli, da se bomo prej ali slej preselili v lastne podatkovne centre in uporabili hibridno strategijo.

Zakaj ste izbrali GKE?

Za to smo se odločili predvsem zaradi tehničnih razlogov. Poleg tega je bilo treba hitro zagotoviti infrastrukturo, ki ustreza poslovnim potrebam podjetja. Imeli smo nekaj zahtev za gostovanje aplikacij, kot so geografska porazdelitev, razširljivost in odpornost na napake.

Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe
Grozdi GKE v Dailymotion

Ker je Dailymotion video platforma, ki je na voljo po vsem svetu, smo resnično želeli izboljšati kakovost storitve s skrajšanjem čakalne dobe (latenca). Prej naš API je bil na voljo le v Parizu, kar ni bilo optimalno. Želel sem imeti možnost gostiti aplikacije ne samo v Evropi, ampak tudi v Aziji in ZDA.

Ta občutljivost na zakasnitev je pomenila, da bo treba resno delati na omrežni arhitekturi platforme. Medtem ko vas je večina storitev v oblaku prisilila, da ustvarite svoje lastno omrežje v vsaki regiji in jih nato povežete prek VPN-ja ali neke vrste upravljane storitve, vam Google Cloud omogoča ustvarjanje popolnoma usmerjevalnega enotnega omrežja, ki pokriva vse Googlove regije. To je velik plus z vidika delovanja in učinkovitosti sistema.

Poleg tega omrežne storitve in izravnalniki obremenitve iz storitve Google Cloud odlično opravljajo svoje delo. Preprosto vam omogočajo uporabo poljubnih javnih naslovov IP iz vsake regije, čudovit protokol BGP pa poskrbi za ostalo (tj. preusmerjanje uporabnikov v najbližjo gručo). Očitno bo v primeru okvare promet samodejno šel v drugo regijo brez človekovega posredovanja.

Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe
Spremljanje Google Load Balancing

Naša platforma močno uporablja tudi grafične procesorje. Google Cloud vam omogoča, da jih zelo učinkovito uporabljate neposredno v gručah Kubernetes.

Takrat je bila ekipa za infrastrukturo osredotočena predvsem na podedovani sklad, nameščen na fizičnih strežnikih. Zato je uporaba upravljane storitve (vključno z masterji Kubernetes) izpolnila naše zahteve in nam omogočila usposabljanje ekip za delo z lokalnimi grozdi.

Posledično smo lahko začeli prejemati produkcijski promet na infrastrukturi Google Cloud le 6 mesecev po začetku dela.

Kljub številnim prednostim pa je delo s ponudnikom v oblaku povezano z določenimi stroški, ki se glede na obremenitev lahko povečajo. Zato smo skrbno analizirali vsako upravljano storitev, ki smo jo uporabili, v upanju, da jih bomo v prihodnosti implementirali na mestu uporabe. Dejansko se je izvajanje lokalnih grozdov začelo konec leta 2016 in istočasno se je začela hibridna strategija.

Lansiranje lokalne platforme za orkestracijo kontejnerjev Dailymotion

Jesen 2016

V pogojih, ko je bil celoten sklad pripravljen za proizvodnjo, in delo na API-ju nadaljevano, je bil čas, da se osredotočimo na regionalne grozde.

Takrat so si uporabniki vsak mesec ogledali več kot 3 milijarde videov. Seveda že vrsto let imamo lastno obsežno omrežje za dostavo vsebin. Želeli smo izkoristiti to okoliščino in uvesti gruče Kubernetes v obstoječe podatkovne centre.

Infrastrukturo Dailymotion je sestavljalo več kot 2,5 tisoč strežnikov v šestih podatkovnih centrih. Vsi so konfigurirani s Saltstackom. Začeli smo pripravljati vse potrebne recepte za ustvarjanje glavnih in delovnih vozlišč ter gruče etcd.

Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe

Mrežni del

Naše omrežje je popolnoma preusmerjeno. Vsak strežnik oglašuje svoj IP v omrežju z uporabo Exabgp. Primerjali smo več omrežnih vtičnikov in edini, ki je zadovoljil vse potrebe (zaradi uporabljenega pristopa L3), je bil Calico. Popolnoma se prilega obstoječemu modelu omrežne infrastrukture.

Ker smo želeli uporabiti vse razpoložljive infrastrukturne elemente, smo morali najprej ugotoviti naš domači omrežni pripomoček (ki se uporablja na vseh strežnikih): uporabiti ga za oglaševanje obsegov naslovov IP v omrežju z vozlišči Kubernetes. Calico smo dovolili, da podom dodeli naslove IP, vendar ga nismo in ga še vedno ne uporabljamo za seje BGP v omrežni opremi. Pravzaprav za usmerjanje skrbi Exabgp, ki oglašuje podomrežja, ki jih uporablja Calico. To nam omogoča, da dosežemo kateri koli pod iz notranjega omrežja (in zlasti iz izravnalnikov obremenitve).

Kako upravljamo vhodni promet

Za preusmeritev dohodnih zahtev na želeno storitev je bilo odločeno, da uporabimo Ingress Controller zaradi njegove integracije z vhodnimi viri Kubernetes.

Pred tremi leti je bil nginx-ingress-controller najbolj zrel krmilnik: Nginx je obstajal že dolgo in je bil znan po svoji stabilnosti in zmogljivosti.

V našem sistemu smo se odločili, da krmilnike postavimo na namenske 10-gigabitne rezinske strežnike. Vsak krmilnik je bil povezan s končno točko kube-apiserver ustrezne gruče. Ti strežniki so uporabljali tudi Exabgp za oglaševanje javnih ali zasebnih naslovov IP. Naša omrežna topologija nam omogoča uporabo BGP iz teh krmilnikov za usmerjanje celotnega prometa neposredno na pode brez uporabe storitve, kot je NodePort. Ta pristop pomaga preprečiti horizontalni promet med vozlišči in izboljša učinkovitost.

Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe
Gibanje prometa od interneta do pods

Zdaj, ko razumemo našo hibridno platformo, se lahko poglobimo v sam proces migracije prometa.

Migracija prometa iz Google Cloud v infrastrukturo Dailymotion

Jesen 2018

Po skoraj dveh letih gradnje, testiranja in prilagajanja imamo končno pripravljen poln sklad Kubernetes, ki je pripravljen sprejeti nekaj prometa.

Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe

Trenutna strategija usmerjanja je precej preprosta, a zadostuje za potrebe. Poleg javnih IP-jev (na Google Cloud in Dailymotion) se AWS Route 53 uporablja za nastavitev pravilnikov in preusmerjanje uporabnikov v gručo po naši izbiri.

Pustolovščina Kubernetes Dailymotion: ustvarjanje infrastrukture v oblaku + na mestu uporabe
Primer politike usmerjanja z uporabo Route 53

Z Google Cloud je to preprosto, saj delimo en sam IP v vseh gručah in uporabnik je preusmerjen na najbližjo gručo GKE. Za naše grozde je tehnologija drugačna, saj so njihovi IP-ji različni.

Med selitvijo smo skušali regionalne zahteve preusmeriti v ustrezne grozde in ocenili prednosti tega pristopa.

Ker so naše gruče GKE konfigurirane za samodejno skaliranje z meritvami po meri, se povečajo/zmanjšajo glede na dohodni promet.

V normalnem načinu je ves regionalni promet usmerjen v lokalni grozd, GKE pa služi kot rezerva v primeru težav (zdravstvene preglede izvaja Route 53).

...

V prihodnosti želimo popolnoma avtomatizirati politike usmerjanja, da bi dosegli avtonomno hibridno strategijo, ki nenehno izboljšuje dostopnost za uporabnike. Pozitivna stran je, da so se stroški oblaka znatno zmanjšali, odzivni časi API-ja pa so se celo skrajšali. Zaupamo nastali oblačni platformi in smo pripravljeni preusmeriti več prometa vanjo, če bo potrebno.

PS od prevajalca

Morda vas bo zanimala še ena nedavna objava na Dailymotion o Kubernetesu. Namenjen je uvajanju aplikacij s Helmom v številnih gručah Kubernetes in je bil objavljen pred kakšnim mesecem.

Preberite tudi na našem blogu:

Vir: www.habr.com

Dodaj komentar