Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum

Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum

Athugið. þýð.: Dailymotion er ein stærsta myndbandshýsingarþjónusta heims og því athyglisverður Kubernetes notandi. Í þessu efni deilir kerfisarkitektinn David Donchez niðurstöðum þess að búa til framleiðsluvettvang fyrirtækisins sem byggist á K8s, sem hófst með skýjauppsetningu í GKE og endaði sem blendingslausn, sem leyfði betri viðbragðstíma og sparnaði á innviðakostnaði.

Ákveðið að endurbyggja Core API Dailymotion fyrir þremur árum vildum við þróa skilvirkari leið til að hýsa forrit og gera það auðveldara ferli í þróun og framleiðslu. Í þessu skyni ákváðum við að nota gámaskipunarvettvang og völdum að sjálfsögðu Kubernetes.

Af hverju er það þess virði að byggja upp þinn eigin vettvang byggt á Kubernetes?

API á framleiðslustigi á skömmum tíma með Google Cloud

Sumarið 2016

Fyrir þremur árum, strax eftir að Dailymotion var keypt af Vivendi, verkfræðiteymi okkar einbeita sér að einu heimsmarkmiði: að búa til alveg nýja Dailymotion vöru.

Byggt á greiningu okkar á gámum, hljómsveitarlausnum og fyrri reynslu okkar erum við sannfærð um að Kubernetes sé rétti kosturinn. Sumir verktaki höfðu þegar skilning á grunnhugtökum og vissu hvernig á að nota það, sem var mikill kostur fyrir innviðabreytinguna.

Frá sjónarhóli innviða þurfti öflugt og sveigjanlegt kerfi til að hýsa nýjar gerðir af skýja-innfæddum forritum. Við ákváðum að vera í skýinu í upphafi ferðar okkar svo við gætum byggt upp sem öflugasta vettvang á staðnum með hugarró. Við ákváðum að dreifa forritunum okkar með því að nota Google Kubernetes Engine, þó við vissum að fyrr eða síðar myndum við flytja í okkar eigin gagnaver og beita blendingsstefnu.

Hvers vegna valdir þú GKE?

Við tókum þetta val aðallega af tæknilegum ástæðum. Auk þess var nauðsynlegt að útvega fljótt innviði sem uppfyllir viðskiptaþarfir fyrirtækisins. Við gerðum nokkrar kröfur til að hýsa forrit, svo sem landfræðilega dreifingu, sveigjanleika og bilanaþol.

Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum
GKE klasar í Dailymotion

Þar sem Dailymotion er myndbandsvettvangur sem er fáanlegur um allan heim vildum við virkilega bæta gæði þjónustunnar með því að stytta biðtíma (leynd)... Áður API okkar var aðeins fáanlegt í París, sem var ekki ákjósanlegt. Ég vildi geta hýst umsóknir ekki aðeins í Evrópu, heldur einnig í Asíu og Bandaríkjunum.

Þessi næmni fyrir leynd þýddi að alvarleg vinna þyrfti að fara í netarkitektúr vettvangsins. Þó að flestar skýjaþjónustur hafi neytt þig til að búa til þitt eigið net á hverju svæði og tengja þau síðan í gegnum VPN eða einhvers konar stýrða þjónustu, gerði Google Cloud þér kleift að búa til fullkomlega leiðanlegt eitt net sem nær yfir öll Google svæði. Þetta er stór plús hvað varðar rekstur og skilvirkni kerfisins.

Að auki gera netþjónustur og álagsjafnarar frá Google Cloud frábært starf. Þeir leyfa þér einfaldlega að nota handahófskenndar opinberar IP tölur frá hverju svæði og hin frábæra BGP siðareglur sér um afganginn (þ.e. að vísa notendum í næsta þyrping). Augljóslega, ef bilun verður, mun umferð sjálfkrafa fara til annars svæðis án nokkurra manna afskipta.

Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum
Vöktun álagsjöfnunar Google

Pallurinn okkar notar líka GPU mikið. Google Cloud gerir þér kleift að nota þau á mjög áhrifaríkan hátt beint í Kubernetes klasa.

Á þeim tíma var innviðateymið fyrst og fremst einbeitt að eldri stafla sem var settur á líkamlega netþjóna. Þess vegna uppfyllti það að nota stýrða þjónustu (þar á meðal Kubernetes meistara) kröfur okkar og gerði okkur kleift að þjálfa teymi til að vinna með staðbundnum klasa.

Fyrir vikið gátum við byrjað að fá framleiðsluumferð á Google Cloud innviðina aðeins 6 mánuðum eftir að vinna hófst.

Hins vegar, þrátt fyrir ýmsa kosti, fylgir vinnu með skýjaveitu ákveðinn kostnað, sem getur aukist eftir álagi. Þess vegna greindum við vandlega hverja stýrða þjónustu sem við notuðum, í von um að geta innleitt hana á staðnum í framtíðinni. Reyndar hófst innleiðing staðbundinna klasa í lok árs 2016 og samtímis var hafin blendingsstefnan.

Sjósetja staðbundinn gámasveitarvettvang Dailymotion

Haust 2016

Við aðstæður þegar allur staflan var tilbúinn til framleiðslu, og vinna á API hélt áfram, það var kominn tími til að einbeita sér að svæðisbundnum klasa.

Á þeim tíma voru notendur að horfa á meira en 3 milljarða myndskeiða í hverjum mánuði. Auðvitað höfum við haft okkar eigið umfangsmikla efnisflutningsnet í mörg ár. Við vildum nýta þessar aðstæður og setja Kubernetes klasa í núverandi gagnaver.

Innviðir Dailymotion samanstóð af meira en 2,5 þúsund netþjónum í sex gagnaverum. Öll þau eru stillt með Saltstack. Við byrjuðum að undirbúa allar nauðsynlegar uppskriftir til að búa til meistara- og starfshnúta, sem og etcd þyrping.

Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum

Nethluti

Netið okkar er algjörlega beint. Hver netþjónn auglýsir IP sína á netinu með Exabgp. Við bárum saman nokkur netviðbætur og sú eina sem uppfyllti allar þarfir (vegna L3 nálgunarinnar sem notuð var) var Calico. Það passar fullkomlega inn í núverandi netinnviðalíkan.

Þar sem við vildum nota alla tiltæka innviðaþætti, var það fyrsta sem við þurftum að gera að finna út heimaræktað netkerfi okkar (notað á öllum netþjónum): notaðu það til að auglýsa IP-tölusvið á netinu með Kubernetes hnútum. Við leyfðum Calico að úthluta IP-tölum til fræbelgs, en notuðum það ekki og notuðum það enn ekki fyrir BGP lotur á netbúnaði. Reyndar er beina meðhöndluð af Exabgp, sem auglýsir undirnetin sem Calico notar. Þetta gerir okkur kleift að ná í hvaða belg sem er frá innra netinu (og sérstaklega frá álagsjafnara).

Hvernig við stjórnum innkomu umferð

Til að beina beiðnum sem berast til viðkomandi þjónustu var ákveðið að nota Ingress Controller vegna samþættingar þess við Kubernetes inngönguauðlindir.

Fyrir þremur árum var nginx-ingress-controller þroskaðasti stjórnandinn: Nginx hafði verið til í langan tíma og var þekktur fyrir stöðugleika og frammistöðu.

Í kerfinu okkar ákváðum við að setja stýringarnar á sérstaka 10 gígabita blaðþjóna. Hver stjórnandi var tengdur við kube-apiserver endapunkt samsvarandi klasa. Þessir netþjónar notuðu einnig Exabgp til að auglýsa opinberar eða einka IP tölur. Greiðslukerfi netkerfisins okkar gerir okkur kleift að nota BGP frá þessum stýritækjum til að beina allri umferð beint til belgjanna án þess að nota þjónustu eins og NodePort. Þessi nálgun hjálpar til við að forðast lárétta umferð á milli hnúta og bætir skilvirkni.

Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum
Umferðarhreyfing frá internetinu í belg

Nú þegar við skiljum blendingsvettvanginn okkar getum við kafað dýpra í sjálft umferðarflutningsferlið.

Flutningur umferðar frá Google Cloud yfir í Dailymotion innviði

Haust 2018

Eftir næstum tvö ár af smíði, prófunum og stillingum höfum við loksins fullan Kubernetes stafla tilbúinn til að taka við smá umferð.

Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum

Núverandi leiðarstefna er frekar einföld en nægjanleg til að mæta þörfum. Til viðbótar við opinberar IP-tölur (á Google Cloud og Dailymotion) er AWS Route 53 notuð til að setja stefnur og beina notendum í þann klasa að eigin vali.

Kubernetes ævintýri Dailymotion: búa til innviði í skýjunum + á staðnum
Dæmi um leiðarstefnu með leið 53

Með Google Cloud er þetta auðvelt þar sem við deilum einni IP yfir alla klasa og notandanum er vísað á næsta GKE klasa. Fyrir klasana okkar er tæknin önnur þar sem IP-tölur þeirra eru mismunandi.

Við flutninginn reyndum við að beina svæðisbundnum beiðnum til viðeigandi klasa og metum ávinninginn af þessari nálgun.

Vegna þess að GKE klasarnir okkar eru stilltir á sjálfvirkan mælikvarða með því að nota sérsniðnar mælingar, skalast þær upp/lækka miðað við komandi umferð.

Í venjulegum ham er allri svæðisbundinni umferð beint til staðbundins klasa og GKE þjónar sem varasjóður ef vandamál koma upp (heilsueftirlit er framkvæmt af leið 53).

...

Í framtíðinni viljum við gera leiðarstefnu að fullu sjálfvirkan til að ná fram sjálfstæðri blendingsstefnu sem bætir stöðugt aðgengi fyrir notendur. Það jákvæða er að skýjakostnaður hefur minnkað verulega og viðbragðstími API hefur jafnvel verið styttur. Við treystum skýjapallinum sem myndast og erum tilbúin að beina meiri umferð á hann ef þörf krefur.

PS frá þýðanda

Þú gætir líka haft áhuga á annarri nýlegri Dailymotion færslu um Kubernetes. Það er tileinkað dreifingu forrita með Helm á mörgum Kubernetes klösum og var birt fyrir um mánuði síðan.

Lestu líka á blogginu okkar:

Heimild: www.habr.com

Bæta við athugasemd