Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch

Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch

Pozn. prekl.: Dailymotion — jeden z najväčších svetových služieb na hosting videí a preto výrazný používateľ Kubernetes. V tomto materiáli systémový architekt David Donchez zdieľa výsledky vytvorenia produkčnej platformy spoločnosti na základe K8s, ktorá začínala ako cloudová inštalácia v GKE a skončila ako hybridné riešenie, čo nám umožnilo dosiahnuť lepší čas odozvy a ušetriť na infraštruktúrnych nákladoch.

Pri rozhodovaní o prestavbe hlavného API Dailymotion pred tromi rokmi sme chceli vyvinúť efektívnejší spôsob nasadzovania aplikácií a zjednodušiť procesy vo vývoji a produkcii. Na tento účel sme sa rozhodli využiť platformu orchestrácie kontajnerov a prirodzene sme si vybrali Kubernetes.

Prečo by ste mali vytvoriť vlastnú platformu na báze Kubernetes?

API produkčnej úrovne v najkratšom možnom čase s pomocou Google Cloud

Leto 2016

Pred tromi rokmi, hneď po akvizícii Dailymotion spoločnosťou Vivendi, naše inžinierske tímy sa zamerali na jeden globálny cieľ: vytvoriť úplne nový produkt Dailymotion.

Na základe analýzy kontajnerov, riešení pre orchestráciu a našich predchádzajúcich skúseností sme dospeli k presvedčeniu, že Kubernetes je správna voľba. Niektorí vývojári už mali predstavu o základných konceptoch a vedeli, ako ho používať, čo bolo obrovskou výhodou pre infraštruktúrnu transformáciu.

Z pohľadu infraštruktúry bola potrebná mocná a flexibilná sústava na nasadzovanie nových typov cloudových (cloud-native) aplikácií. Prednostne sme chceli ostať v cloude na začiatku našej cesty, aby sme pokojne postavili maximálne spoľahlivú lokálnu platformu. Naše aplikácie sme sa rozhodli nasadiť pomocou Google Kubernetes Engine, aj keď sme vedeli, že skôr či neskôr prejdeme na vlastné dátové centrá a uplatníme hybridnú stratégiu.

Prečo sme si vybrali GKE?

Toto rozhodnutie sme prijali predovšetkým z technických dôvodov. Okrem toho bolo potrebné rýchlo poskytnúť infraštruktúru, ktorá by vyhovovala potrebám podnikania spoločnosti. Mali sme niektoré požiadavky na nasadzovanie aplikácií, ako napríklad geografická rozdelenosť, škálovateľnosť a odolnosť voči zlyhaniu.

Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch
Klastery GKE v Dailymotion

Keďže Dailymotion je video platforma dostupná po celom svete, veľmi sme chceli zlepšiť kvalitu služieb skrátením doby čakania (latencia). Predtým naše API bola dostupná iba v Paríži, čo nebolo optimálne. Chceli sme mať možnosť hostiť aplikácie nielen v Európe, ale aj v Ázii a v USA.

Toto citlivosť na oneskorenia znamenala, že budeme musieť vážne pracovať na sieťovej architektúre platformy. Zatiaľ čo väčšina cloudových služieb nútila vytvárať vlastnú sieť v každom regióne a potom ich prepojiť cez VPN alebo nejakú spravovanú službu, Google Cloud umožnil vytvoriť plne smerovateľnú jednotnú sieť, ktorá pokrývala všetky regióny Google. To je veľké plus z hľadiska prevádzky a efektivity systému.

Okrem toho, so svojou prácou skvele zvládajú sieťové služby a vyvažovače záťaže od Google Cloud. Jednoducho umožňujú používať ľubovoľné verejné IP adresy z každého regiónu, a úžasný protokol BGP sa postará o všetko ostatné (t.j. presmeruje používateľov k najbližšiemu klastru). Je jasné, že v prípade poruchy bude prevádzka automaticky smerovať do iného regiónu bez akéhokoľvek zásahu človeka.

Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch
Monitorovanie vyvažovania záťaže v Google

Naša platforma tiež aktívne využíva grafické procesory. Google Cloud umožňuje veľmi efektívne ich použitie priamo v klastroch Kubernetes.

V tom čase sa infraštruktúrny tím prevažne sústredil na starý stack, nasadený na fyzických serveroch. Preto použitie spravovanej služby (vrátane master komponentov Kubernetes) spĺňalo naše požiadavky a umožnilo vyškolenie tímov na prácu s lokálnymi klastrami.

V dôsledku toho sme dokázali začať prijímať produkčný prenos na infraštruktúre Google Cloud len šesť mesiacov po začiatku prác.

Avšak napriek niektorým výhodám, práca so cloudovým poskytovateľom je spojená s určitými nákladmi, ktoré môžu narastať v závislosti od záťaže. Preto sme starostlivo analyzovali každú používanú spravovanú službu, pričom sme plánovali v budúcnosti ich realizáciu na našich zariadeniach. V skutočnosti implementácia lokálnych klastrov začala koncom roka 2016 a v tom čase bola iniciovaná hybridná stratégia.

Spustenie lokálnej platformy orchestrace kontajnerov Dailymotion

Jeseň 2016

V podmienkach, keď bol celý stack pripravený na produkciu, a práca na API pokračovala, prišiel čas sústrediť sa na regionálne klastre.

V tom čase používatelia mesačne sledovali viac ako 3 miliardy videí. Samozrejme, že naša rozsiahla Content Delivery Network už fungovala niekoľko rokov. Chceli sme využiť túto skutočnosť a zriadiť klastre Kubernetes v existujúcich dátových centrách.

Infrastruktúra Dailymotion pozostávala z viac než 2,5 tisíc serverov v šiestich dátových centrách. Všetky boli konfigurované pomocou Saltstack. Začali sme pripravovať všetky potrebné recepty na vytvorenie master a worker uzlov, ako aj klastru etcd.

Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch

Sieťová časť

Naša sieť je plne smerovateľná. Každý server vyhlasuje svoju IP adresu v sieti pomocou Exabgp. Porovnali sme niekoľko sieťových pluginov a jediným, ktorý spľňoval všetky požiadavky (kvôli prístupu na úrovni L3), bol Calico. Skvele zapadol do existujúceho sieťového modelu infraštruktúry.

Keďže sme chceli využiť všetky existujúce prvky infraštruktúry, predovšetkým sme museli pochopiť našu domorodú sieťovú utilitu (používanú na všetkých serveroch): využiť ju na vyhlasovanie rozsahov IP adries v sieti s uzlami Kubernetes. Povolili sme Calico prideľovať IP adresy podom, ale nepoužili sme ho a doteraz ho nepoužívame na BGP sessions na sieťovom zariadení. V skutočnosti sa routovaním zaoberá Exabgp, ktorý vyhlasuje subnety používané Calico. To nám umožňuje dosiahnuť akýkoľvek pod z vnútornej siete (a najmä od load balancerov).

Ako spravujeme ingress traffic

Na presmerovanie prichádzajúcich požiadaviek na správny servis sme sa rozhodli použiť Ingress Controller kvôli jeho integrácii s ingress zdrojmi Kubernetes.

Pred tromi rokmi bol nginx-ingress-controller najzrelším kontrolérom: Nginx bol už dlho používaný a bol známy svojou stabilitou a výkonnosťou.

V našom systéme sme sa rozhodli umiestniť kontroléry na vyhradených 10-gigabitových blade serveroch. Každý kontrolér bol pripojený k endpointu kube-apiserver príslušného klastetra. Na týchto serveroch sa tiež používal Exabgp na oznamovanie verejných alebo súkromných IP adries. Topológia našej siete umožňuje využívať BGP z týchto kontrolérov na smerovanie celej prevádzky priamo na pod-y bez použitia servisov typu NodePort. Takýto prístup pomáha predchádzať horizontálnemu prenosu medzi uzlami a zvyšuje efektívnosť.

Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch
Pohyb prevádzky z internetu k pod-om

Teraz, keď sme sa oboznámili s našou hybridnou platformou, môžeme sa hlbšie ponoriť do samotného procesu migrácie prevádzky.

Migrácia prevádzky z Google Cloudu do infraštruktúry Dailymotion

Jeseň 2018

Po takmer dvoch rokoch vytvárania, testovania a nastavenia sme konečne získali kompletný zásobník Kubernetes, pripravený prijať časť prevádzky.

Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch

Súčasná stratégia smerovania je pomerne jednoduchá, ale úplne vyhovuje potrebám. Okrem verejných IP (v Google Cloude a Dailymotion) sa používa AWS Route 53 na určenie politík a presmerovanie používateľov ku klastrom podľa našej voľby.

Kubernetes dobrodružstvo Dailymotion: vytvorenie infraštruktúry v cloude + na vlastných serveroch
Príklad politiky smerovania s použitím Route 53

S Google Cloudom je to jednoduché, pretože používame jednotnú IP pre všetky klastry a používateľ je presmerovaný k najbližšiemu klastrom GKE. Pre naše klastry je technológia iná, pretože ich IP sa líšia.

Počas migrácie sme sa snažili o presmerovanie regionálnych požiadaviek na príslušné klastry a posudzovali sme výhody takého prístupu.

Keďže naše GKE klastry sú nakonfigurované na automatické škálovanie pomocou vlastných metrík, zvyšujú/znižujú výkon v závislosti od prichádzajúcej prevádzky.

V normálnom režime sa celá regionálna prevádzka nasmeruje na miestny klaster, pričom GKE slúži ako záloha v prípade problémov (health-checky vykonáva Route 53).

…

V budúcnosti chceme plne automatizovať politiky smerovania, aby sme získali autonómnu hybridnú stratégiu, ktorá neustále zlepšuje dostupnosť pre používateľov. Čo sa týka výhod: výrazne sa znížili náklady na cloud a podarilo sa skrátiť čas reakcie API. Dôverujeme výslednej cloudovej platforme a sme pripravení v prípade potreby presmerovať na ňu viac prevádzky.

P.S. od prekladateľa

Možno vás ešte zaujme iný nedávny príspevok Dailymotion o Kubernetes. Je venovaný nasadzovaniu aplikácií s Helm na množstve Kubernetes klastri a zverejnená asi pred mesiacom.

Prečítajte si tiež na našom blogu:

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster