Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno

Bilješka. transl.: Dailymotion je jedan od najvećih svjetskih video hosting servisa i stoga značajan korisnik Kubernetesa. U ovom materijalu, sistemski arhitekta David Donchez dijeli rezultate kreiranja proizvodne platforme kompanije zasnovane na K8s, koja je započela instalacijom u oblaku u GKE-u, a završila kao hibridno rješenje, koje je omogućilo bolje vrijeme odziva i uštedu na troškovima infrastrukture.

Odluka da se ponovo izgradi Core API Dailymotion prije tri godine željeli smo razviti efikasniji način za hostovanje aplikacija i olakšati ga procesi u razvoju i proizvodnji. U tu svrhu odlučili smo koristiti platformu za orkestraciju kontejnera i naravno odabrali Kubernetes.

Zašto se isplati izgraditi sopstvenu platformu zasnovanu na Kubernetesu?

API na nivou proizvodnje u trenu koristeći Google Cloud

Ljeto 2016

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

Na osnovu naše analize kontejnera, rješenja za orkestraciju i našeg dosadašnjeg iskustva, uvjereni smo da je Kubernetes pravi izbor. Neki programeri su već imali razumijevanje osnovnih koncepata i znali kako ga koristiti, što je bila velika prednost za transformaciju infrastrukture.

Iz perspektive infrastrukture, bio je potreban snažan i fleksibilan sistem za hostovanje novih tipova aplikacija koje su izvorne u oblaku. Odlučili smo ostati u oblaku na početku našeg putovanja kako bismo mogli bezbrižno izgraditi najrobusniju moguću on-premise platformu. Odlučili smo da implementiramo naše aplikacije koristeći Google Kubernetes Engine, iako smo znali da ćemo prije ili kasnije preći u vlastite podatkovne centre i primijeniti hibridnu strategiju.

Zašto ste odabrali GKE?

Odabrali smo se uglavnom iz tehničkih razloga. Osim toga, bilo je potrebno brzo obezbijediti infrastrukturu koja zadovoljava poslovne potrebe kompanije. Imali smo neke zahtjeve za hosting aplikacija, kao što su geografska distribucija, skalabilnost i tolerancija grešaka.

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

Budući da je Dailymotion video platforma dostupna širom svijeta, zaista smo željeli poboljšati kvalitetu usluge smanjenjem vremena čekanja (latencija)... Ranije naš API bio dostupan samo u Parizu, što je bilo neoptimalno. Želeo sam da budem u mogućnosti da hostujem aplikacije ne samo u Evropi, već iu Aziji i SAD.

Ova osjetljivost na kašnjenje značila je da će se morati ozbiljno poraditi na mrežnoj arhitekturi platforme. Dok vas je većina usluga u oblaku natjerala da kreirate vlastitu mrežu u svakoj regiji, a zatim ih povežete putem VPN-a ili neke vrste upravljane usluge, Google Cloud vam je omogućio da kreirate potpuno rutabilnu jednu mrežu koja pokriva sve Google regije. Ovo je veliki plus u smislu rada i efikasnosti sistema.

Osim toga, mrežni servisi i balanseri opterećenja iz Google Clouda rade odličan posao. Oni vam jednostavno dozvoljavaju da koristite proizvoljne javne IP adrese iz svakog regiona, a za ostalo se brine prekrasan BGP protokol (tj. preusmjeravanje korisnika na najbliži klaster). Očigledno, u slučaju kvara, saobraćaj će automatski ići u drugu regiju bez ikakve ljudske intervencije.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno
Praćenje Google balansiranja opterećenja

Naša platforma takođe intenzivno koristi GPU. Google Cloud vam omogućava da ih vrlo efikasno koristite direktno u Kubernetes klasterima.

U to vrijeme, infrastrukturni tim je prvenstveno bio fokusiran na naslijeđeni stack raspoređen na fizičkim serverima. Zbog toga je korištenje upravljane usluge (uključujući Kubernetes mastere) zadovoljilo naše zahtjeve i omogućilo nam da obučimo 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.

Međutim, unatoč brojnim prednostima, rad s provajderom u oblaku 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 u budućnosti implementirati na licu mjesta. Naime, implementacija lokalnih klastera počela je krajem 2016. godine, a istovremeno je započeta i hibridna strategija.

Lansiranje lokalne platforme za orkestraciju kontejnera Dailymotion

Jesen 2016

U uslovima kada je ceo stog bio spreman za proizvodnju i rad na API nastavio, bilo je vrijeme da se koncentrišemo na regionalne klastere.

U to vrijeme korisnici su svakog mjeseca gledali više od 3 milijarde videa. Naravno, već dugi niz godina imamo svoju razgranatu mrežu za isporuku sadržaja. Htjeli smo iskoristiti ovu okolnost i postaviti Kubernetes klastere u postojeće centre podataka.

Infrastruktura Dailymotion-a sastojala se od više od 2,5 hiljade servera u šest data centara. Svi su konfigurisani pomoću Saltstack-a. Počeli smo pripremati sve potrebne recepte za kreiranje 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 rutirana. Svaki server 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 L3 pristupa) je Calico. Savršeno se uklapa u postojeći model mrežne infrastrukture.

Pošto smo želeli da koristimo sve dostupne elemente infrastrukture, prvo što smo morali da uradimo je da smislimo naš domaći mrežni uslužni program (koji se koristi na svim serverima): da ga koristimo za oglašavanje opsega IP adresa na mreži sa Kubernetes čvorovima. Dozvolili smo Calico-u da dodijeli IP adrese podovima, ali to nije i još uvijek ne koristi za BGP sesije na mrežnoj opremi. U stvari, rutiranjem upravlja Exabgp, koji oglašava podmreže koje koristi Calico. Ovo nam omogućava da dođemo do bilo kojeg poda iz interne mreže (a posebno iz balansera opterećenja).

Kako upravljamo ulaznim saobraćajem

Za preusmjeravanje dolaznih zahtjeva na željeni servis, odlučeno je da se koristi Ingress Controller zbog njegove integracije sa Kubernetes ingress resursima.

Prije tri godine, nginx-ingress-controller je bio najzreliji kontroler: Nginx je postojao već duže vrijeme i bio je poznat po svojoj stabilnosti i performansama.

U našem sistemu, odlučili smo da postavimo kontrolere na namenske 10-Gigabitne blejd servere. Svaki kontroler je povezan na kube-apiserver krajnju tačku odgovarajućeg klastera. Ovi serveri su takođe koristili Exabgp za oglašavanje javnih ili privatnih IP adresa. Naša mrežna topologija nam omogućava da koristimo BGP iz ovih kontrolera da usmjerimo sav promet direktno na podove bez korištenja usluge kao što je NodePort. Ovaj pristup pomaže u izbjegavanju horizontalnog prometa između čvorova i poboljšava efikasnost.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno
Kretanje saobraćaja sa interneta na pod

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

Migracija prometa sa Google Clouda na Dailymotion infrastrukturu

Jesen 2018

Nakon skoro dvije godine izgradnje, testiranja i podešavanja, konačno imamo puni Kubernetes stack spreman da prihvati dio prometa.

Kubernetes avantura Dailymotion: stvaranje infrastrukture u oblacima + lokalno

Trenutna strategija rutiranja je prilično jednostavna, ali dovoljna da zadovolji potrebe. Pored javnih IP adresa (na Google Cloud i Dailymotion), AWS Route 53 se koristi 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 ovo je jednostavno jer dijelimo jednu IP adresu na svim klasterima, a korisnik se preusmjerava na najbliži GKE klaster. Za naše klastere tehnologija je drugačija, jer su njihovi IP-ovi različiti.

Tokom migracije, nastojali smo da preusmjerimo regionalne zahtjeve na odgovarajuće klastere i procijenili prednosti ovog pristupa.

Budući da su naši GKE klasteri konfigurirani za automatsko skaliranje koristeći prilagođene metrike, oni se povećavaju/smanjuju na osnovu dolaznog prometa.

U normalnom režimu, sav regionalni promet je usmjeren na lokalni klaster, a GKE služi kao rezerva u slučaju problema (zdravstvene provjere se obavljaju putem Route 53).

...

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

PS od prevodioca

Možda će vas također zanimati još jedan nedavni Dailymotion post o Kubernetesu. Posvećen je implementaciji aplikacija sa Helmom na mnogim Kubernetes klasterima i je objavljeno prije otprilike mjesec dana.

Pročitajte i na našem blogu:

izvor: www.habr.com

Dodajte komentar