Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites

Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites

Märkus tõlke kohta.: Dailymotion — üks suurimaid videohostimise teenuseid maailmas ja seetõttu silmapaistev Kubernetes kasutaja. Selles artiklis jagab süsteemi arhitekt David Donchez ettevõtte tootmisplatvormi loomise tulemusi K8sil, mis algas GKE pilveinstallatsiooniga ja lõppes hübriidlahenduse loomisega, mille tõttu saavutati parem reageerimiskiirus ja kokkuhoid infrastruktuurikuludelt.

Otsustades põhiteenuste API ümberkorraldamise üle Dailymotion kolm aastat tagasi, soovisime välja töötada tõhusama rakenduste paigutamise viisi ja lihtsustada arendus- ja tootmisprotsesse.Selle eesmärgi saavutamiseks otsustasime kasutada konteinerite orkestreerimise platvormi ja loomulikult valisime Kubernetes'i.

Miks tasub luua oma platvorm Kubernetes'i põhjal?

API-tootmisastme tasemel kiiresti Google Cloudi abil

Suvi 2016

Kolm aastat tagasi, kohe pärast Dailymotion'i ostmist ettevõtte Vivendi, keskendusid meie insenerirühmad ühele globaalsele eesmärgile: luua täiesti uus Dailymotion'i toode.

Pärast konteinerite, orkestreerimislahenduste analüüsimist ja meie varasemat kogemust olime veendunud, et Kubernetes on õige valik. Osal inseneridest oli juba ettekujutus baaskontseptsioonidest ja nad teadsid, kuidas seda rakendada, mis oli infrastruktuuri ülemineku jaoks tohutu eelis.

Infrastruktuuri poolelt oli vajalik võimas ja paindlik süsteem uute tüüpi pilve (cloud-native) rakenduste majutamiseks. Soovisime oma teekonna alguses jääda pilve, et rahulikult luua maksimaalselt usaldusväärne kohalik platvorm. Otsustasime oma rakendusi käitada Google Kubernetes Engine'i kaudu, kuigi teadsime, et varem või hiljem üle läheme oma andmekeskustele ja rakendame hübriidstrateegiat.

Miks valisime GKE?

Tegime selle valiku peamiselt tehniliste kaalutluste tõttu. Lisaks oli vajalik kiiresti pakkuda infrastruktuuri, mis vastaks ettevõtte äri vajadustele. Meil olid mõned rakenduste paigutamise nõuded, nagu geograafiline jaotamine, skaleeritavus ja tõrke taluvus.

Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites
GKE klastrid Dailymotion'is

Kuna Dailymotion on videoplatvorm, mis on saadaval üle maailma, soovisime väga parandada teenuse kvaliteeti, vähendades ooteaega (latency). Varem oli meie API oli saadaval ainult Pariisis, mis ei olnud optimaalne. Soovi oli rakendusi paigutada mitte ainult Euroopas, vaid ka Aasias ja Ameerikas.

See viivitustundlikkus tähendas, et tuli tõsiselt töötada platvormi võrguarhitektuuri kallal. Kui enamik pilveteenuseid sundisid looma oma võrku igas piirkonnas ja seejärel neid VPN-i või mõne hallatava teenuse kaudu ühendama, siis Google Cloud võimaldas luua täielikult marsruutitava ühtse võrgu, mis katab kõik Google'i piirkonnad. See on suur pluss süsteemi haldamise ja efektiivsuse mõttes.

Lisaks toimivad Google Cloudi võrgu teenused ja koormuse tasakaalustajad suurepäraselt. Need võimaldavad kasutada mõnes piirkonnas juhuslikke avalikke IP-aadresse ning suurepärane BGP-protokoll hoolitseb ülejäänud eest (st suunab kasutajad lähima klastrini). On selge, et rikke korral suunatakse liiklus automaatselt teise piirkonda ilma igasuguse inimsekkumiseta.

Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites
Google'i koormuse tasakaalustamise jälgimine

Meie platvorm kasutab aktiivselt ka grafiittöötlusprotsessoreid. Google Cloud võimaldab neid kasutada väga tõhusalt otse Kubernetes'i klastrites.

Sel ajal keskendus infrastruktuuri meeskond peamiselt vanale virnastusele, mis oli paigaldatud füüsilistele serveritele. Just seetõttu vastas hallatava teenuse kasutamine (sealhulgas Kubernetes'i peakomponendid) meie nõudmistele ja võimaldas meeskondadel õppida tööle kohalikes klastrites.

Kokkuvõttes suutsime hakata vastu võtma tootmisliiklust Google Cloudi infrastruktuuris vaid kuue kuu jooksul pärast töö alustamist.

Kuid vaatamata mitmetele eelistele on pilveteenuse kasutamisel teatud kulud, mis võivad sõltuvalt koormusest suureneda. Seetõttu analüüsisime hoolikalt iga kasutatavat hallatavat teenust, kavandades tulevikus nende rakendamist meie enda infrastruktuuris. Tegelikult algas kohalike klastrite rakendamine 2016. aasta lõpus ja siis määratlesime hübriidstrateegia.

Dailymotioni kohaliku konteinerite orkestreerimise platvormi käivitamine

2016. aasta sügis

Olles valmis kogu virnastusega tootmiseks, jätkus töö API kallal püsis, oli aeg keskenduda piirkondlikele klastritele.

Sel ajal vaatasid kasutajad igakuiselt üle enam kui 3 miljardit videot. Loomulikult oli meil juba mitu aastat toimiv oma laialdane sisuteenuse võrk. Soovisime seda võimalust kasutada ja luua Kubernetes klastrid olemasolevates andmekeskustes.

Dailymotioni infrastruktuur koosnes enam kui 2500 serverist kuues andmekeskuses. Kõik need konfigureeritakse Saltstacki abil. Alustasime vajalike retseptide ettevalmistamist meistri- ja töödeldava sõlme ning etcd klastrite jaoks.

Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites

Võrgufaas

Meie võrk on täiesti marsruutitav. Iga server kuulutab oma IP aadressi võrgus Exabgp abil. Võrdlesime mitmeid võrgu pluginaid ja ainus, mis vastas kõigile nõudmistele (kasutatava L3 taseme lähenemise tõttu), oli Calico. See sobis suurepäraselt olemasolevasse võrgu mudelisse.

Kuna soovisime kasutada kõiki olemasolevaid infrastruktuuri elemente, pidime kõigepealt aru saama oma kodustest võrgu utiliiteest (mida kasutatakse kõigis serverites): kasutada seda IP-aadressi vahemike kuulutamiseks Kubernetes sõlmedes. Lubasime Calicol määrata IP-aadresse pod'idele, kuid ei kasutanud seda ja ei kasuta siiani BGP sessioonide jaoks võrgu seadmetes. Tegelikult tegeleb marsruutimisega Exabgp, mis kuulutab välja alavõrgud, mida Calico kasutab. See võimaldab meil pääseda ligi igale pod'ile sisemisest võrgust (ja eriti koormuse tasakaalustajatelt).

Kuidas me hallame ingressi liiklust

Sisenenud päringute suunamiseks vajalikku teenust otsustati kasutada Ingress Controllerit, kuna see integreerub Kubernetes ingress-resurssidega.

Kolm aastat tagasi oli nginx-ingress-controller kõige küpsem kontrollija: Nginx oli juba pikka aega kasutusel ja tuntud oma stabiilsuse ja jõudluse poolest.

Oma süsteemis otsustasime paigutada kontrollerid eraldatud 10-gigabitiste blade-serverite peale. Iga kontroller oli ühendatud vastava klastriga kube-apiserveri lõpp-punktiga. Nendel serveritel kasutati ka Exabgp avalike või eraldi IP-aadresside kuulutamiseks. Meie võrgu topoloogia võimaldab kasutada BGP nende kontrollerite kaudu kogu liikluse suunamiseks otse pod’ide poole ilma NodePort tüüpi teenust kasutamata. Selline lähenemine aitab vältida horisontaalset liiklust sõlmede vahel ja tõstab efektiivsust.

Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites
Liiklus internetist pod’idele

Nüüd, kui oleme aru saanud meie hübriidplatvormist, saame süveneda liikluse migreerimise protsessi.

Liikluse migreerimine Google Cloudist Dailymotioni infrastruktuuri

2018. aasta sügis

Peaaegu kahe aasta arendamise, testimise ja seadistamise järel saime lõpuks täismahu Kubernetes'i, mis on valmis vastu võtma osa liiklusest.

Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites

Praegune marsruutimisstrateegia on üsna lihtne, kuid rahuldab täielikult vajadusi. Lisaks avalikele IP-dele (Google Cloudis ja Dailymotionis) kasutatakse AWS Route 53 poliitikate määramiseks ja kasutajate suunamiseks meie valitud klastrisse.

Kubernetesi seiklus Dailymotionis: infrastruktuuri loomine pilvedes + kohalikes serverites
Näide marsruutimispoliitikast Route 53 kasutades

Google Cloudiga on see lihtne, kuna kasutame kõigi klastrite jaoks ühte IP-aadressi ning kasutaja suunatakse lähimasse GKE klastrisse. Meie klastrite puhul on tehnoloogia erinev, kuna nende IP-d on erinevad.

Migrationi käigus püüdlesime regionaalsete päringute suunamise poole vastavatesse klastritesse ja hindasime sellise lähenemise eeliseid.

Kuna meie GKE klastrid on konfigureeritud automaatseks skaleerimiseks kasutades Custom Metrics, suurendavad nad/vähendavad jõudlust sõltuvalt sissetulevast liiklusest.

Tavatingimustes suunatakse kogu regionaalne liiklus kohalikku klastrisse ja GKE toimib varuna probleemide korral (tervise kontrollid viib läbi Route 53).

Tulevikus soovime täielikult automatiseerida marsruutimispoliitikat, et saavutada autonoomne hübriidstrateegia, mis pidevalt parandab kasutajate kättesaadavust. Plusspoolelt on märkimisväärselt vähenenud kulud pilveteenustele ja õnnestunud on isegi vähendada API reageerimisaega. Usume meie loodud pilveplatvormi ja oleme valmis vajadusel suunama sellele rohkem liiklust.

P.S. tõlkijalt

Võib-olla huvitab teid veel üks hiljutine Dailymotioni artikkel Kubernetesest. See käsitleb rakenduste juurutamist Helmi kaudu mitmesugustes Kubernetes klastrites ja oli avaldatud umbes kuu tagasi.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster