Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā

Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā

PiezÄ«me. tulk.: Dailymotion ir viens no pasaulē lielākajiem video mitināŔanas pakalpojumiem un tāpēc ievērojams Kubernetes lietotājs. Å ajā materiālā sistēmas arhitekts Deivids Dončess dalās ar uzņēmuma K8s bāzes ražoÅ”anas platformas izveides rezultātiem, kas sākās ar mākoņa instalāciju GKE un beidzās kā hibrÄ«ds risinājums, kas ļāva nodroÅ”ināt labākus reakcijas laikus un ietaupÄ«t infrastruktÅ«ras izmaksas.

Lēmums atjaunot galveno API Dailymotion Pirms trim gadiem mēs vēlējāmies izstrādāt efektÄ«vāku veidu lietojumprogrammu mitināŔanai un atvieglot to izstrādes un ražoÅ”anas procesi. Å im nolÅ«kam mēs nolēmām izmantot konteineru orÄ·estrÄ“Å”anas platformu un dabiski izvēlējāmies Kubernetes.

Kāpēc ir vērts izveidot savu platformu, pamatojoties uz Kubernetes?

RažoÅ”anas lÄ«meņa API Ä«sā laikā, izmantojot Google Cloud

2016. gada vasara

Pirms trim gadiem, uzreiz pēc tam, kad Dailymotion iegādājās Vivendi, mÅ«su inženieru komandas ir koncentrējuŔās uz vienu globālu mērÄ·i: izveidot pilnÄ«gi jaunu Dailymotion produktu.

Pamatojoties uz mÅ«su konteineru analÄ«zi, orÄ·estrÄ“Å”anas risinājumiem un mÅ«su iepriekŔējo pieredzi, mēs esam pārliecināti, ka Kubernetes ir pareizā izvēle. Daži izstrādātāji jau saprata pamatjēdzienus un prata to izmantot, kas bija milzÄ«ga priekÅ”rocÄ«ba infrastruktÅ«ras pārveidoÅ”anai.

No infrastruktÅ«ras viedokļa bija nepiecieÅ”ama jaudÄ«ga un elastÄ«ga sistēma, lai mitinātu jauna veida mākoņdatoÅ”anas lietojumprogrammas. Ceļojuma sākumā mēs izvēlējāmies palikt mākonÄ«, lai ar mierÄ«gu sirdi varētu izveidot visspēcÄ«gāko iespējamo lokālo platformu. Mēs nolēmām izvietot savas lietojumprogrammas, izmantojot Google Kubernetes Engine, lai gan zinājām, ka agrāk vai vēlāk pārcelsimies uz saviem datu centriem un izmantosim hibrÄ«da stratēģiju.

Kāpēc izvēlējāties GKE?

Å o izvēli izdarÄ«jām galvenokārt tehnisku iemeslu dēļ. Turklāt bija nepiecieÅ”ams operatÄ«vi nodroÅ”ināt uzņēmuma biznesa vajadzÄ«bām atbilstoÅ”u infrastruktÅ«ru. Mums bija dažas prasÄ«bas lietojumprogrammu mitināŔanai, piemēram, Ä£eogrāfiskais sadalÄ«jums, mērogojamÄ«ba un kļūdu tolerance.

Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā
GKE kopas pakalpojumā Dailymotion

Tā kā Dailymotion ir visā pasaulē pieejama video platforma, mēs patieŔām vēlējāmies uzlabot pakalpojuma kvalitāti, samazinot gaidÄ«Å”anas laiku (latents)... IepriekÅ” mÅ«su API bija pieejams tikai ParÄ«zē, kas nebija optimāls. Es gribēju, lai varētu uzņemt aplikācijas ne tikai Eiropā, bet arÄ« Āzijā un ASV.

Å Ä« jutÄ«ba pret latentumu nozÄ«mēja, ka bÅ«s jāveic nopietns darbs pie platformas tÄ«kla arhitektÅ«ras. Lai gan lielākā daļa mākoņpakalpojumu lika jums izveidot savu tÄ«klu katrā reÄ£ionā un pēc tam savienot tos, izmantojot VPN vai kādu pārvaldÄ«tu pakalpojumu, Google Cloud ļāva jums izveidot pilnÄ«bā marÅ”rutējamu vienotu tÄ«klu, kas aptver visus Google reÄ£ionus. Tas ir liels pluss sistēmas darbÄ«bas un efektivitātes ziņā.

Turklāt Google Cloud tÄ«kla pakalpojumi un slodzes balansētāji paveic lielisku darbu. Tie vienkārÅ”i ļauj izmantot patvaļīgas publiskās IP adreses no katra reÄ£iona, un brÄ«niŔķīgais BGP protokols rÅ«pējas par pārējo (t.i., lietotāju novirzÄ«Å”anu uz tuvāko kopu). AcÄ«mredzot neveiksmes gadÄ«jumā satiksme automātiski virzÄ«sies uz citu reÄ£ionu bez cilvēka iejaukÅ”anās.

Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā
Google slodzes līdzsvaroŔanas pārraudzība

Mūsu platforma arī intensīvi izmanto GPU. Google Cloud ļauj tos ļoti efektīvi izmantot tieŔi Kubernetes klasteros.

Tajā laikā infrastruktÅ«ras komanda galvenokārt koncentrējās uz mantoto steku, kas tika izvietots fiziskajos serveros. Tāpēc pārvaldÄ«ta pakalpojuma izmantoÅ”ana (tostarp Kubernetes meistari) atbilda mÅ«su prasÄ«bām un ļāva mums apmācÄ«t komandas darbam ar vietējiem klasteriem.

Rezultātā mēs varējām sākt saņemt ražoÅ”anas trafiku Google Cloud infrastruktÅ«rā tikai 6 mēneÅ”us pēc darba sākuma.

Tomēr, neskatoties uz vairākām priekÅ”rocÄ«bām, darbs ar mākoņpakalpojumu sniedzēju ir saistÄ«ts ar noteiktām izmaksām, kuras var palielināties atkarÄ«bā no slodzes. Tāpēc mēs rÅ«pÄ«gi analizējām katru izmantoto pārvaldÄ«to pakalpojumu, cerot nākotnē tos ieviest uz vietas. Faktiski vietējo klasteru ievieÅ”ana sākās 2016. gada beigās un tajā paŔā laikā tika uzsākta hibrÄ«dstratēģija.

Vietējās konteineru orÄ·estrÄ“Å”anas platformas Dailymotion palaiÅ”ana

2016. gada rudens

Apstākļos, kad visa kaudze bija gatava ražoÅ”anai, un darbs pie API turpinājās, bija laiks koncentrēties uz reÄ£ionālajām kopām.

Tajā laikā lietotāji katru mēnesi skatÄ«jās vairāk nekā 3 miljardus videoklipu. Protams, mums jau daudzus gadus ir savs plaÅ”s satura piegādes tÄ«kls. Mēs vēlējāmies izmantot Å”o apstākli un esoÅ”ajos datu centros izvietot Kubernetes klasterus.

Dailymotion infrastruktÅ«ru veidoja vairāk nekā 2,5 tÅ«kstoÅ”i serveru seÅ”os datu centros. Visi tie ir konfigurēti, izmantojot Saltstack. Mēs sākām sagatavot visas nepiecieÅ”amās receptes, lai izveidotu galveno un darbinieku mezglus, kā arÄ« etcd klasteru.

Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā

Tīkla daļa

MÅ«su tÄ«kls ir pilnÄ«bā marÅ”rutēts. Katrs serveris reklamē savu IP tÄ«klā, izmantojot Exabgp. Mēs salÄ«dzinājām vairākus tÄ«kla spraudņus, un vienÄ«gais, kas apmierināja visas vajadzÄ«bas (lietotās L3 pieejas dēļ), bija Calico. Tas lieliski iekļaujas esoÅ”ajā tÄ«kla infrastruktÅ«ras modelÄ«.

Tā kā mēs vēlējāmies izmantot visus pieejamos infrastruktÅ«ras elementus, pirmais, kas mums bija jādara, bija izdomāt mÅ«su paÅ”māju tÄ«kla utilÄ«tu (tiek izmantota visos serveros): izmantojiet to, lai reklamētu IP adreÅ”u diapazonus tÄ«klā ar Kubernetes mezgliem. Mēs atļāvām Calico pieŔķirt IP adreses podiem, taču neizmantojām un joprojām neizmantojam to BGP sesijām tÄ«kla iekārtās. Faktiski marÅ”rutÄ“Å”anu apstrādā Exabgp, kas reklamē Calico izmantotos apakÅ”tÄ«klus. Tas ļauj mums sasniegt jebkuru podziņu no iekŔējā tÄ«kla (un jo Ä«paÅ”i no slodzes balansētājiem).

Kā mēs pārvaldām ienākoÅ”o trafiku

Lai novirzÄ«tu ienākoÅ”os pieprasÄ«jumus uz vēlamo pakalpojumu, tika nolemts izmantot Ingress Controller, jo tas ir integrēts ar Kubernetes ieejas resursiem.

Pirms trim gadiem nginx-ingress-controller bija visnobrieduŔākais kontrolieris: Nginx bija pieejams jau ilgu laiku un bija pazÄ«stams ar savu stabilitāti un veiktspēju.

MÅ«su sistēmā mēs nolēmām novietot kontrolierus uz Ä«paÅ”iem 10 gigabitu asmens serveriem. Katrs kontrolieris bija savienots ar atbilstoŔā klastera kube-apiserver gala punktu. Å ie serveri arÄ« izmantoja Exabgp, lai reklamētu publiskas vai privātas IP adreses. MÅ«su tÄ«kla topoloÄ£ija ļauj mums izmantot BGP no Å”iem kontrolieriem, lai novirzÄ«tu visu trafiku tieÅ”i uz podiem, neizmantojot tādu pakalpojumu kā NodePort. Å Ä« pieeja palÄ«dz izvairÄ«ties no horizontālas satiksmes starp mezgliem un uzlabo efektivitāti.

Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā
Satiksmes kustība no interneta uz podiem

Tagad, kad esam izpratuŔi mūsu hibrīdplatformu, varam iedziļināties paŔā satiksmes migrācijas procesā.

Trafika migrēŔana no Google Cloud uz Dailymotion infrastruktūru

2018. gada rudens

Pēc gandrÄ«z divu gadu izveides, testÄ“Å”anas un regulÄ“Å”anas mums beidzot ir pilna Kubernetes steka, kas ir gatava pieņemt kādu trafiku.

Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā

PaÅ”reizējā marÅ”rutÄ“Å”anas stratēģija ir diezgan vienkārÅ”a, taču pietiekama, lai apmierinātu vajadzÄ«bas. Papildus publiskajām IP adresēm (pakalpojumos Google Cloud un Dailymotion) AWS Route 53 tiek izmantots, lai iestatÄ«tu politikas un novirzÄ«tu lietotājus uz mÅ«su izvēlēto kopu.

Kubernetes piedzīvojums Dailymotion: infrastruktūras izveide mākoņos + lokālā
MarÅ”rutÄ“Å”anas politikas piemērs, izmantojot 53. marÅ”rutu

Izmantojot Google Cloud, tas ir vienkārÅ”i, jo mēs koplietojam vienu IP visās kopās un lietotājs tiek novirzÄ«ts uz tuvāko GKE kopu. MÅ«su klasteriem tehnoloÄ£ija ir atŔķirÄ«ga, jo to IP atŔķiras.

MigrÄ“Å”anas laikā mēs centāmies novirzÄ«t reÄ£ionālos pieprasÄ«jumus uz atbilstoŔām kopām un novērtējām Ŕīs pieejas priekÅ”rocÄ«bas.

Tā kā mÅ«su GKE kopas ir konfigurētas automātiskai mērogoÅ”anai, izmantojot pielāgoto metriku, to mērogoÅ”ana tiek palielināta/samazināta, pamatojoties uz ienākoÅ”o trafiku.

Normālā režīmā visa reÄ£ionālā satiksme tiek novirzÄ«ta uz vietējo klasteru, un GKE kalpo kā rezerve problēmu gadÄ«jumā (veselÄ«bas pārbaudes veic 53. marÅ”ruts).

...

Nākotnē mēs vēlamies pilnÄ«bā automatizēt marÅ”rutÄ“Å”anas politikas, lai izveidotu autonomu hibrÄ«da stratēģiju, kas pastāvÄ«gi uzlabo pieejamÄ«bu lietotājiem. PozitÄ«vi ir tas, ka mākoņdatoÅ”anas izmaksas ir ievērojami samazinātas un API reakcijas laiks ir pat samazināts. Mēs uzticamies izveidotajai mākoņa platformai un vajadzÄ«bas gadÄ«jumā esam gatavi uz to novirzÄ«t lielāku trafiku.

PS no tulka

JÅ«s varētu interesēt arÄ« cita nesenā Dailymotion ziņa par Kubernetes. Tas ir paredzēts lietojumprogrammu izvietoÅ”anai ar Helm daudzos Kubernetes klasteros un tika publicēts apmēram pirms mēneÅ”a.

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru