Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne

Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne

Poznámka. preklad.: Dailymotion je jednou z najväčších svetových videohostingových služieb, a preto je významným používateľom Kubernetes. V tomto materiáli systémový architekt David Donchez zdieľa výsledky vytvárania produkčnej platformy spoločnosti založenej na K8s, ktorá začala cloudovou inštaláciou v GKE a skončila ako hybridné riešenie, ktoré umožnilo lepšie časy odozvy a úspory nákladov na infraštruktúru.

Rozhodovanie o prestavbe rozhrania Core API Dailymotion pred tromi rokmi sme chceli vyvinúť efektívnejší spôsob hostenia aplikácií a zjednodušiť ho procesov vo vývoji a výrobe. Na tento účel sme sa rozhodli použiť platformu na orchestráciu kontajnerov a prirodzene sme si vybrali Kubernetes.

Prečo sa oplatí vybudovať si vlastnú platformu založenú na Kubernetes?

Rozhranie API na produkčnej úrovni okamžite pomocou služby Google Cloud

leto 2016

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

Na základe našej analýzy kontajnerov, riešení orchestrácie a našich minulých skúseností sme presvedčení, že Kubernetes je správna voľba. Niektorí vývojári už rozumeli základným konceptom a vedeli ich používať, čo bola obrovská výhoda pre transformáciu infraštruktúry.

Z hľadiska infraštruktúry bol potrebný výkonný a flexibilný systém na hosťovanie nových typov cloudových natívnych aplikácií. Na začiatku našej cesty sme sa rozhodli zostať v cloude, aby sme mohli pokojne vybudovať tú najrobustnejšiu možnú vlastnú platformu. Naše aplikácie sme sa rozhodli nasadiť pomocou Google Kubernetes Engine, hoci sme vedeli, že skôr či neskôr sa presunieme do vlastných dátových centier a uplatníme hybridnú stratégiu.

Prečo ste si vybrali GKE?

Túto voľbu sme urobili najmä z technických dôvodov. Okrem toho bolo potrebné rýchlo zabezpečiť infraštruktúru, ktorá spĺňa obchodné potreby spoločnosti. Mali sme určité požiadavky na hosťovanie aplikácií, ako je geografická distribúcia, škálovateľnosť a odolnosť voči chybám.

Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne
Zhluky GKE v Dailymotion

Keďže Dailymotion je celosvetovo dostupná video platforma, chceli sme skutočne zlepšiť kvalitu služby skrátením čakacej doby (latencia). Skôr naše API bol dostupný iba v Paríži, čo nebolo optimálne. Chcel som mať možnosť hostiť aplikácie nielen v Európe, ale aj v Ázii a USA.

Táto citlivosť na latenciu znamenala, že na sieťovej architektúre platformy sa bude musieť poriadne popracovať. Zatiaľ čo väčšina cloudových služieb vás prinútila vytvoriť si vlastnú sieť v každom regióne a potom ich pripojiť cez VPN alebo nejaký druh spravovanej služby, Google Cloud vám umožnil vytvoriť plne smerovateľnú jedinú sieť pokrývajúcu všetky regióny Google. To je veľké plus z hľadiska prevádzky a efektivity systému.

Sieťové služby a nástroje na vyrovnávanie záťaže od Google Cloud navyše odvádzajú vynikajúcu prácu. Jednoducho umožňujú používať ľubovoľné verejné IP adresy z každého regiónu a o zvyšok (t. j. presmerovanie používateľov na najbližší klaster) sa postará úžasný protokol BGP. Je zrejmé, že v prípade poruchy sa doprava automaticky presunie do iného regiónu bez akéhokoľvek ľudského zásahu.

Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne
Monitorovanie Google Load Balancing

Naša platforma tiež intenzívne využíva GPU. Google Cloud vám ich umožňuje veľmi efektívne využívať priamo v klastroch Kubernetes.

V tom čase sa tím pre infraštruktúru primárne zameral na starší zásobník nasadený na fyzických serveroch. Preto používanie riadenej služby (vrátane masterov Kubernetes) splnilo naše požiadavky a umožnilo nám vyškoliť tímy na prácu s lokálnymi klastrami.

Výsledkom bolo, že sme mohli začať prijímať produkčnú prevádzku na infraštruktúre Google Cloud len 6 mesiacov po začatí prác.

Spolupráca s cloudovým poskytovateľom je však aj napriek množstvu výhod spojená s určitými nákladmi, ktoré sa môžu zvyšovať v závislosti od zaťaženia. Preto sme starostlivo analyzovali každú spravovanú službu, ktorú sme použili, v nádeji, že ju v budúcnosti implementujeme na mieste. Implementácia lokálnych klastrov sa v skutočnosti začala koncom roka 2016 a súčasne sa začala aj hybridná stratégia.

Spustenie miestnej platformy na orchestráciu kontajnerov Dailymotion

jeseň 2016

V podmienkach, keď bol celý zásobník pripravený na výrobu, a práca na API pokračoval, nastal čas sústrediť sa na regionálne klastre.

Používatelia v tom čase každý mesiac pozerali viac ako 3 miliardy videí. Samozrejme, už mnoho rokov máme vlastnú rozsiahlu sieť na doručovanie obsahu. Chceli sme využiť túto okolnosť a nasadiť klastre Kubernetes v existujúcich dátových centrách.

Infraštruktúru Dailymotion tvorilo viac ako 2,5 tisíc serverov v šiestich dátových centrách. Všetky sú konfigurované pomocou Saltstack. Začali sme pripravovať všetky potrebné recepty na vytvorenie hlavných a pracovných uzlov, ako aj klastra atď.

Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne

Sieťová časť

Naša sieť je úplne smerovaná. Každý server inzeruje svoju IP v sieti pomocou Exabgp. Porovnali sme viacero sieťových pluginov a jediný, ktorý uspokojil všetky potreby (vzhľadom na použitý L3 prístup), bol kaliko. Dokonale zapadá do existujúceho modelu sieťovej infraštruktúry.

Keďže sme chceli využiť všetky dostupné prvky infraštruktúry, prvá vec, ktorú sme museli urobiť, bolo prísť na náš domáci sieťový nástroj (používaný na všetkých serveroch): použiť ho na inzerovanie rozsahov IP adries v sieti s uzlami Kubernetes. Povolili sme Calico prideľovať IP adresy podom, ale nepoužili sme a stále nepoužívame na BGP relácie na sieťových zariadeniach. V skutočnosti sa o smerovanie stará Exabgp, ktorá inzeruje podsiete používané Calico. To nám umožňuje dosiahnuť akýkoľvek modul z internej siete (a najmä z vyrovnávačov záťaže).

Ako riadime vstupnú návštevnosť

Na presmerovanie prichádzajúcich požiadaviek na požadovanú službu bolo rozhodnuté použiť Ingress Controller z dôvodu jeho integrácie s ingress zdrojmi Kubernetes.

Pred tromi rokmi bol nginx-ingress-controller najvyspelejším ovládačom: Nginx existoval už dlho a bol známy svojou stabilitou a výkonom.

V našom systéme sme sa rozhodli umiestniť radiče na dedikované 10-gigabitové blade servery. Každý ovládač bol pripojený ku koncovému bodu kube-apiserver zodpovedajúceho klastra. Tieto servery tiež používali Exabgp na inzerciu verejných alebo súkromných adries IP. Naša sieťová topológia nám umožňuje používať BGP z týchto radičov na smerovanie všetkej prevádzky priamo do modulov bez použitia služby ako NodePort. Tento prístup pomáha vyhnúť sa horizontálnej premávke medzi uzlami a zvyšuje efektivitu.

Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne
Pohyb premávky z internetu na moduly

Teraz, keď rozumieme našej hybridnej platforme, môžeme sa hlbšie ponoriť do samotného procesu migrácie dopravy.

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

jeseň 2018

Po takmer dvoch rokoch budovania, testovania a ladenia máme konečne celý zásobník Kubernetes pripravený prijať určitú návštevnosť.

Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne

Súčasná stratégia smerovania je pomerne jednoduchá, ale postačujúca na uspokojenie potrieb. Okrem verejných IP adries (na Google Cloud a Dailymotion) sa AWS Route 53 používa na nastavenie pravidiel a presmerovanie používateľov do klastra podľa nášho výberu.

Dobrodružstvo Kubernetes Dailymotion: vytváranie infraštruktúry v cloude + lokálne
Príklad politiky smerovania pomocou Route 53

So službou Google Cloud je to jednoduché, pretože zdieľame jednu adresu IP vo všetkých klastroch a používateľ je presmerovaný na najbližší klaster GKE. Pre naše klastre je technológia odlišná, pretože ich IP adresy sú odlišné.

Počas migrácie sme sa snažili presmerovať regionálne požiadavky na príslušné klastre a vyhodnotili sme výhody tohto prístupu.

Pretože naše klastre GKE sú nakonfigurované na automatické škálovanie pomocou vlastných metrík, škálujú sa nahor/nadol na základe prichádzajúcej prevádzky.

V normálnom režime je všetka regionálna doprava smerovaná do lokálneho klastra a GKE slúži ako rezerva v prípade problémov (zdravotné kontroly vykonáva Route 53).

...

V budúcnosti chceme úplne automatizovať smerovacie politiky, aby sme dosiahli autonómnu hybridnú stratégiu, ktorá neustále zlepšuje dostupnosť pre používateľov. Pozitívom je, že náklady na cloud sa výrazne znížili a časy odozvy API sa dokonca skrátili. Výslednej cloudovej platforme dôverujeme a v prípade potreby sme pripravení na ňu presmerovať väčšiu návštevnosť.

PS od prekladateľa

Tiež by vás mohol zaujímať ďalší nedávny príspevok Dailymotion o Kubernetes. Venuje sa nasadzovaniu aplikácií s Helm na mnohých klastroch Kubernetes a bola zverejnená Približne pred mesiacom.

Prečítajte si aj na našom blogu:

Zdroj: hab.com

Pridať komentár