
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 pred tromi rokmi sme chceli vyvinúť efektívnejší spôsob nasadzovania aplikácií a zjednodušiť . 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 , 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.

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 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.

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 , 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.

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 . 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ť.

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.

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.

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 asi pred mesiacom.
Prečítajte si tiež na našom blogu:
- «».
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
Zdroj: habr.com
