Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises

Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises

Märk. tõlge.: Dailymotion — üks maailma suurimaid videohostingu teenuseid ja seetõttu silmapaistev Kubernetes'i kasutaja. Selles artiklis jagab süsteemiarhitekt David Donchez kogemusi ettevõtte produktsiooniplatvormi loomise protsessist, mis algas pilveinstallatsiooniga GKE-s ja lõppes hübriidlahenduse loomisega, mis võimaldas saavutada parema reageerimisaja ja vähendada infrastruktuuri kulusid.

Otsustades põhijuhise ümberkujundamise üle Dailymotion kolm aastat tagasi, soovisime välja töötada tõhusama viisi rakenduste paigutamiseks ja lihtsustada protsesside haldamist arenduses ja tootmises.Selle eesmärki silmas pidades otsustasime kasutada konteinerite orkestreerimise platvormi ning loomulikult valisime Kubernetes'e.

Miks on kasulik luua oma platvorm Kubernetes'e baasil?

API tootmisstandardi tasemel kiiresti Google Cloud'i abil.

Suvi 2016

Kolm aastat tagasi, kohe pärast Dailymotion'i ostmist ettevõtte poolt Vivendi, meie insenerimeeskonnad keskendusid ühele globaalsetele eesmärkidele: luua täiesti uus Dailymotion'i toode.

Konteinerite, orkestreerimise lahenduste ja meie varasema kogemuse analüüsi tulemusena oleme veendunud, et Kubernetes on õige valik. Osad arendajad olid juba tuttavad põhimõistedega ja teadlikud, kuidas seda kasutada, mis oli infrastruktuuri transformatsiooni jaoks suur eelis.

Infrastruktuuri seisukohalt vajasime võimsat ja paindlikku süsteemi uute pilvepõhiste (cloud-native) rakenduste majutamiseks. Otsustasime alustada pilves, et rahulikult ehitada välja võimalikult usaldusväärne kohalik platvorm. Otsustasime oma rakendusi juurutada Google Kubernetes Engine'i abil, kuigi teadisime, et varem või hiljem liigume oma andmekeskustesse ja rakendame hübriidstrategiat.

Miks valisime GKE?

Tehniliste kaalutluste tõttu tegime selle valiku. Peale selle oli vajalik kiiresti pakkuda infrastruktuuri, mis vastaks ettevõtte äri vajadustele. Meil olid mõned rakenduste majutamise nõuded, nagu geograafiline jaotus, skaleeritavus ja tõrkekindlus.

Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises
GKE klastrid Dailymotionis

Kuna Dailymotion on globaalne videoplatvorm, soovisime tõeliselt parandada teenuse kvaliteeti, vähendades ooteaega. (latency). Varem meie API oli saadaval ainult Pariisis, mis polnud optimaalne. Soovisime, et rakendusi saaks paigutada mitte ainult Euroopas, vaid ka Aasias ja Ameerikas.

See tundlikkus viivituste suhtes tähendas, et pidime tõsiselt tööle asuma platvormi võrguarhitektuuri kallal. Kuigi enamik pilveteenuseid sundis looma oma võrku igas piirkonnas ja seejärel need ühendama VPN-i või muu haldus teenusega, võimaldas Google Cloud luua täielikult suunatava ühtse võrgu, mis katab kõik Google'i piirkonnad. See on suur pluss süsteemi ekspluateerimise ja efektiivsuse seisukohalt.

Lisaks toimivad Google Cloudi võrgu teenused ja koormuse tasakaalustajad suurepäraselt. Need võimaldavad lihtsalt kasutada iga piirkonna avalikke IP-aadresse, samas kui suurepärane BGP-protokoll hoolitseb muu eest (st suunab kasutajad lähimale klastrile). Kui tekib tõrge, suunatakse liiklus automaatselt teise piirkonda ilma inimsekkumiseta.

Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises
Google'i koormuse tasakaalustamise jälgimine

Meie platvorm kasutab aktiivselt ka graafikaprotsessoreid. Google Cloud võimaldab neid üsna efektiivselt kasutada otse Kubernetes’e klastrites.

Samuti keskendus infrastruktuuri meeskond peamiselt vanale tehnoloogiakogumile, mis oli paigaldatud füüsilistele serveritele. Seetõttu vastas hallatav teenus (sealhulgas Kubernetes'e master-komponendid) meie nõudmistele ja võimaldas meeskondadel õppida töötama kohalike klastritega.

Seetõttu suutsime alustada tootmist liiklust Google Cloudi infrastruktuuril vaid 6 kuud pärast töö alustamist.

Kuid hoolimata mitmetest eelistest kaasnevad pilveteenuse pakkujaga töötamisel ka teatud kulud, mis võivad koormuse suurenedes kasvada. Just seetõttu oleme hoolikalt analüüsinud iga kasutatavat hallatavat teenust, kavandades tulevikus nende rakendamist oma serverites. Tegelikult algas kohalike klastrite juurutamine 2016. aasta lõpus ning siis käivitus ka hübriidstrateegia.

Kohaliku konteinerite orkestreerimise platvormi Dailymotion käivitamine

2016. aasta sügis

Olukordades, kus kogu tehnoloogia müüki valmis, jätkati tööd API tegevust, oli aeg keskenduda piirkondlikele klastritele.

Sel ajal vaatasid kasutajad igakuiselt üle 3 miljardi videoklippi. Loomulikult oli meil juba aastaid tegutsenud oma ulatuslik sisu edastamise võrk. Soovisime seda olukorda ära kasutada ja paigaldada Kubernetes klastreid olemasolevatesse andmekeskustesse.

Dailymotioni infrastruktuur koosneb enam kui 2500 serverist kuues andmekeskuses. Kõik need on konfigureeritud Saltstacki abil. Oleme alustanud kõigi vajalike retseptide ettevalmistamist master- ja worker-sõlmede ning etcd-klastrite loomiseks.

Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises

Võrgusüsteem

Meie võrk on täielikult suunatav. Iga server kuulutab oma IP-aadressi võrgu kaudu Exabgp abil. Oleme võrrelnud mitmeid võrgu pluginaid ja ainus, mis vastas kõikidele nõudmistele (kasutatava L3-taseme lähenemise tõttu), on Calico. See sobib suurepäraselt olemasolevasse infrastruktuuri võrgu mudelisse.

Kuna soovisime kasutada kogu olemasolevat infrastruktuuri, pidime kõigepealt välja selgitama meie enda võrgutasandi utiliidi (mida kasutatakse kõigis serverites): selle abil IP-aadresside vahemike kuulutamine Kubernetes'i sõlmedes. Lubasime Calicol määrata IP-aadresse pod'idele, kuid ei kasutanud seda ja ei kasuta ka praegu BGP-seansside jaoks võrgu seadmetes. Tegelikult tegeleb marsruutimisega Exabgp, mis kuulutab välja alamvõrgud, mida Calico kasutab. See võimaldab meil jõuda igasse pod'i sisemisest võrgust (eriti koormuse tasakaalustajatest).

Kuidas me hallame ingressi liiklust

Sissetulevate päringute suunamiseks soovitud teenusele otsustasime kasutada Ingress Controller'i tänu selle integreerimisele Kubernetes'i ingress-resurssidega.

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

Oma süsteemis otsustasime paigaldada kontrollerid eraldatud 10-gigabitistel blade-serveritel. Iga kontroller oli ühendatud vastava klastriga kube-apiserveri endpoint'iga. Nendel serveritel kasutati ka Exabgp avalike või privaatsete IP-aadresside kuulutamiseks. Meie võrgu topoloogia võimaldab neil kontrolleritel kasutada BGP-d kogu liikluse suunamiseks otse pod'idesse, ilma NodePorti teenust kasutamata. Selline lähenemine aitab vältida horisontaalset liiklust sõlmede vahel ja parandab efektiivsust.

Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises
Liiklus internetist pod'idesse

Nüüd, kui oleme selgeks teinud meie hübriidplatvormi, saame süveneda liikumise migratsiooni protsessi.

Liiklus migreerimine Google Cloudist Dailymotioni infrastruktuuri

2018. aasta sügis

Peaaegu kahe aasta jooksul loomisest, testimisest ja seadistamisest oleme lõpuks saanud täieliku Kubernetes'i staki, mis on valmis osa liiklusest vastu võtma.

Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises

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

Dailymotion'i Kubernetes seiklus: infrastruktuuri loomine pilvedes + on-premises
Näidispoliitika marsruutimise kohta Route 53 abil

Google Cloudi puhul on see lihtne, kuna kasutame kõigile klastritele ühte IP-aadressi ja kasutajad suunatakse lähimasse GKE klastrisse. Meie klastrite puhul on tehnoloogia muu, kuna nende IP-d on erinevad.

Migrationi ajal püüdlesime piirkondlike päringute suunamise poole vastavatesse klastritesse ja hindasime selle lähenemise eeliseid.

Kuna meie GKE-klastrid on seadistatud automaatseks skaleerimiseks kohandatud mõõdikute abil, suurendavad või vähendavad nad ressursse sõltuvalt sisenevast liiklusest.

Tavatingimustes suunatakse kogu piirkondlik liiklus kohalikku klastrisse, samas kui GKE teenib varuna probleemide ilmnemisel (tervishoiu kontrollid teostab Route 53).

Tulevikus soovime täielikult automatiseerida marsruutimisreegleid, et luua iseseisev hübriidstrateegia, mis pidevalt parandab kasutajate kättesaadavust. Plussidest: pilvekulud on oluliselt vähenenud ja API reageerimise aega on isegi õnnestunud lühendada. Me usaldame saadud pilveplatvormi ja oleme valmis vajadusel suunama sellele rohkem liiklust.

P.S. tõlkija märkused

Võib-olla huvitab teid ka hiljutine Dailymotioni väljaanne Kubernetesest. See käsitleb rakenduste juurutamist Helmiga mitmetes Kubernetes-klastrites ja oli avaldatud umbes kuu aega tagasi.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster