Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno

Bilješka. prev.: Dailymotion je jedan od najvećih svjetskih video hosting servisa i stoga značajan korisnik Kubernetesa. U ovom materijalu, sistemski arhitekt David Donchez dijeli rezultate stvaranja proizvodne platforme tvrtke temeljene na K8s, koja je započela instalacijom oblaka u GKE i završila kao hibridno rješenje, što je omogućilo bolje vrijeme odziva i uštede na troškovima infrastrukture.

Odluka o ponovnoj izgradnji Core API-ja Dailymotion prije tri godine željeli smo razviti učinkovitiji način za hostiranje aplikacija i učiniti ga lakšim procesa u razvoju i proizvodnji. U tu smo svrhu odlučili koristiti platformu za orkestraciju kontejnera i naravno odabrali Kubernetes.

Zašto se isplati izgraditi vlastitu platformu temeljenu na Kubernetesu?

API na produkcijskoj razini u tren oka pomoću Google Clouda

Ljeto 2016

Prije tri godine, odmah nakon što je Dailymotion kupio Vivendi, naši inženjerski timovi usredotočeni su na jedan globalni cilj: stvoriti potpuno novi Dailymotion proizvod.

Na temelju naše analize spremnika, rješenja za orkestraciju i našeg prošlog iskustva, uvjereni smo da je Kubernetes pravi izbor. Neki developeri već su razumjeli osnovne koncepte i znali kako to koristiti, što je bila velika prednost za transformaciju infrastrukture.

Iz perspektive infrastrukture, snažan i fleksibilan sustav bio je potreban za ugošćavanje novih vrsta aplikacija koje su izvorne u oblaku. Odlučili smo ostati u oblaku na početku našeg putovanja kako bismo mogli bezbrižno izgraditi najsnažniju moguću lokalnu platformu. Odlučili smo implementirati svoje aplikacije koristeći Google Kubernetes Engine, iako smo znali da ćemo se prije ili kasnije preseliti u vlastite podatkovne centre i primijeniti hibridnu strategiju.

Zašto ste odabrali GKE?

Odabrali smo ovaj izbor uglavnom iz tehničkih razloga. Osim toga, bilo je potrebno brzo osigurati infrastrukturu koja zadovoljava poslovne potrebe tvrtke. Imali smo neke zahtjeve za hosting aplikacija, kao što su geografska distribucija, skalabilnost i tolerancija na pogreške.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno
GKE klasteri u Dailymotionu

Budući da je Dailymotion video platforma dostupna diljem svijeta, stvarno smo željeli poboljšati kvalitetu usluge smanjenjem vremena čekanja (latencija)... Prethodno naš API bio dostupan samo u Parizu, što nije bilo optimalno. Htio sam biti u mogućnosti hostirati aplikacije ne samo u Europi, već iu Aziji i SAD-u.

Ova osjetljivost na latenciju značila je da će se morati ozbiljno poraditi na mrežnoj arhitekturi platforme. Dok vas je većina usluga u oblaku prisiljavala da stvorite svoju vlastitu mrežu u svakoj regiji i zatim ih povežete putem VPN-a ili neke vrste upravljane usluge, Google Cloud vam je omogućio stvaranje jedinstvene mreže koja će u potpunosti pokrivati ​​sve Googleove regije. To je veliki plus u smislu rada i učinkovitosti sustava.

Osim toga, mrežne usluge i balanseri opterećenja iz Google Clouda rade izvrstan posao. Oni vam jednostavno dopuštaju korištenje proizvoljnih javnih IP adresa iz svake regije, a prekrasan BGP protokol brine se za ostalo (tj. preusmjerava korisnike na najbliži klaster). Očito, u slučaju kvara, promet će automatski ići u drugu regiju bez ikakve ljudske intervencije.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno
Praćenje Google Load Balancing

Naša platforma također intenzivno koristi GPU. Google Cloud omogućuje vam da ih vrlo učinkovito koristite izravno u Kubernetes klasterima.

U to je vrijeme infrastrukturni tim prvenstveno bio usredotočen na naslijeđeni stog raspoređen na fizičkim poslužiteljima. Zato je korištenje upravljane usluge (uključujući Kubernetes masters) ispunilo naše zahtjeve i omogućilo nam da obučavamo timove za rad s lokalnim klasterima.

Kao rezultat toga, uspjeli smo početi primati proizvodni promet na Google Cloud infrastrukturi samo 6 mjeseci nakon početka rada.

No, unatoč nizu prednosti, rad s cloud providerom povezan je s određenim troškovima koji se mogu povećati ovisno o opterećenju. Zato smo pažljivo analizirali svaku upravljanu uslugu koju smo koristili, nadajući se da ćemo ih implementirati na lokalu u budućnosti. Naime, implementacija lokalnih klastera započela je krajem 2016. godine, a istovremeno je pokrenuta i hibridna strategija.

Pokretanje lokalne platforme za orkestraciju kontejnera Dailymotion

Jesen 2016

U uvjetima kada je cijeli stog bio spreman za proizvodnju i rad na API-ju nastavio, došlo je vrijeme da se koncentriramo na regionalne klastere.

U to vrijeme korisnici su gledali više od 3 milijarde videa svaki mjesec. Naravno, već dugi niz godina imamo vlastitu opsežnu mrežu za isporuku sadržaja. Željeli smo iskoristiti ovu okolnost i implementirati Kubernetes klastere u postojeće podatkovne centre.

Infrastruktura Dailymotiona sastojala se od više od 2,5 tisuće servera u šest podatkovnih centara. Svi su konfigurirani pomoću Saltstacka. Počeli smo pripremati sve potrebne recepte za stvaranje master i worker čvorova, kao i etcd klastera.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno

Mrežni dio

Naša mreža je potpuno preusmjerena. Svaki poslužitelj oglašava svoj IP na mreži koristeći Exabgp. Usporedili smo nekoliko mrežnih dodataka i jedini koji je zadovoljio sve potrebe (zbog korištenog pristupa L3) bio je platno. Savršeno se uklapa u postojeći model mrežne infrastrukture.

Budući da smo željeli upotrijebiti sve dostupne elemente infrastrukture, prvo što smo morali učiniti bilo je smisliti naš domaći mrežni uslužni program (koji se koristi na svim poslužiteljima): koristiti ga za oglašavanje raspona IP adresa na mreži s Kubernetes čvorovima. Dopustili smo Calicu da dodjeljuje IP adrese podovima, ali ga nismo i još uvijek ne koristimo za BGP sesije na mrežnoj opremi. Zapravo, usmjeravanjem upravlja Exabgp, koji oglašava podmreže koje koristi Calico. To nam omogućuje da dođemo do bilo kojeg modula iz interne mreže (a posebno iz balansera opterećenja).

Kako upravljamo ulaznim prometom

Za preusmjeravanje dolaznih zahtjeva na željenu uslugu odlučeno je koristiti Ingress Controller zbog njegove integracije s Kubernetes ulaznim resursima.

Prije tri godine, nginx-ingress-controller bio je najzreliji kontroler: Nginx je postojao dugo i bio je poznat po svojoj stabilnosti i performansama.

U našem sustavu odlučili smo postaviti kontrolere na namjenske 10-gigabitne blade poslužitelje. Svaki kontroler bio je povezan s krajnjom točkom kube-apiservera odgovarajućeg klastera. Ti su poslužitelji također koristili Exabgp za oglašavanje javnih ili privatnih IP adresa. Naša mrežna topologija omogućuje nam korištenje BGP-a s ovih kontrolera za usmjeravanje cjelokupnog prometa izravno na module bez upotrebe usluge kao što je NodePort. Ovaj pristup pomaže u izbjegavanju horizontalnog prometa između čvorova i poboljšava učinkovitost.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno
Kretanje prometa s interneta na pods

Sada kada razumijemo našu hibridnu platformu, možemo dublje proniknuti u sam proces migracije prometa.

Migracija prometa s Google Clouda na Dailymotion infrastrukturu

Jesen 2018

Nakon gotovo dvije godine izgradnje, testiranja i podešavanja, konačno imamo puni Kubernetes stog spreman za prihvaćanje malo prometa.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno

Trenutna strategija usmjeravanja prilično je jednostavna, ali dovoljna da zadovolji potrebe. Uz javne IP adrese (na Google Cloudu i Dailymotionu), AWS Route 53 koristi se za postavljanje pravila i preusmjeravanje korisnika na klaster po našem izboru.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno
Primjer politike usmjeravanja koristeći Route 53

Uz Google Cloud to je jednostavno jer dijelimo jednu IP adresu u svim klasterima, a korisnik se preusmjerava na najbliži GKE klaster. Za naše klastere tehnologija je drugačija, budući da su njihovi IP-ovi različiti.

Tijekom migracije nastojali smo preusmjeriti regionalne zahtjeve na odgovarajuće klastere i procijenili smo prednosti ovog pristupa.

Budući da su naši GKE klasteri konfigurirani za automatsko skaliranje pomoću prilagođenih metrika, skaliraju se prema gore/dolje na temelju dolaznog prometa.

U normalnom načinu rada sav regionalni promet usmjerava se na lokalni klaster, a GKE služi kao rezerva u slučaju problema (zdravstvene provjere obavlja Route 53).

...

U budućnosti želimo u potpunosti automatizirati politike usmjeravanja kako bismo postigli autonomnu hibridnu strategiju koja kontinuirano poboljšava pristupačnost za korisnike. S pozitivne strane, troškovi oblaka značajno su smanjeni, a vrijeme odziva API-ja čak je smanjeno. Vjerujemo dobivenoj cloud platformi i spremni smo preusmjeriti više prometa na nju ako je potrebno.

PS od prevoditelja

Također bi vas mogao zanimati još jedan nedavni post na Dailymotionu o Kubernetesu. Posvećen je implementaciji aplikacija s Helmom na mnogim Kubernetes klasterima i objavljena je prije mjesec dana.

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar