Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises

Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises

Noat. transl.: Dailymotion is ien fan 'e grutste fideohostingtsjinsten fan' e wrâld en dêrom in opmerklike Kubernetes-brûker. Yn dit materiaal dielt systeemarsjitekt David Donchez de resultaten fan it meitsjen fan it produksjeplatfoarm fan it bedriuw basearre op K8s, dy't begon mei in wolkynstallaasje yn GKE en einige as in hybride oplossing, wêrtroch bettere antwurdtiden en besparring op ynfrastruktuerkosten mooglik makke.

Beslút om de Core API opnij op te bouwen Dailymotion trije jier lyn woene wy ​​in effisjintere manier ûntwikkelje om applikaasjes te hostjen en it makliker te meitsjen prosessen yn ûntwikkeling en produksje. Foar dit doel hawwe wy besletten om in kontenerorkestraasjeplatfoarm te brûken en hawwe fansels Kubernetes keazen.

Wêrom is it wurdich om jo eigen platfoarm te bouwen basearre op Kubernetes?

API op produksjenivo yn gjin tiid mei Google Cloud

Simmer 2016

Trije jier lyn, fuortendaliks nei Dailymotion waard kocht troch vivendi, ús yngenieurteams binne rjochte op ien wrâldwide doel: in folslein nij Dailymotion-produkt te meitsjen.

Op grûn fan ús analyse fan konteners, orkestraasjeoplossingen en ús ûnderfining út it ferline, binne wy ​​derfan oertsjûge dat Kubernetes de juste kar is. Guon ûntwikkelders hienen al in begryp fan 'e basisbegripen en wisten it te brûken, wat in enoarm foardiel wie foar de transformaasje fan ynfrastruktuer.

Fanút in ynfrastruktuerperspektyf wie in krêftich en fleksibel systeem nedich om nije soarten wolk-native applikaasjes te hostjen. Wy keas foar om yn 'e wolk te bliuwen oan it begjin fan ús reis, sadat wy it meast robúste on-premise platfoarm mooglik bouwe kinne mei frede fan geast. Wy besletten om ús applikaasjes yn te setten mei Google Kubernetes Engine, hoewol wy wisten dat wy ier of letter nei ús eigen datasintra soene ferhúzje en in hybride strategy tapasse.

Wêrom hawwe jo GKE keazen?

Wy makken dizze kar benammen om technyske redenen. Derneist wie it nedich om fluch ynfrastruktuer te leverjen dy't foldocht oan 'e saaklike behoeften fan it bedriuw. Wy hiene wat easken foar hostingapplikaasjes, lykas geografyske ferdieling, skalberens en fouttolerânsje.

Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises
GKE-klusters yn Dailymotion

Sûnt Dailymotion is in fideoplatfoarm dat wrâldwiid beskikber is, woene wy ​​wirklik de kwaliteit fan 'e tsjinst ferbetterje troch wachttiid te ferminderjen (latency)... Eartiids ús API wie allinnich beskikber yn Parys, dat wie suboptimal. Ik woe applikaasjes kinne hostje net allinich yn Jeropa, mar ek yn Azië en de FS.

Dizze gefoelichheid foar latency betsjutte dat serieus wurk dien wurde soe oan 'e netwurkarsjitektuer fan it platfoarm. Wylst de measte wolktsjinsten jo twongen om jo eigen netwurk yn elke regio te meitsjen en se dan te ferbinen fia in VPN as in soarte fan behearde tsjinst, liet Google Cloud jo in folslein routabel single netwurk meitsje dat alle Google-regio's beslacht. Dit is in grut plus yn termen fan wurking en effisjinsje fan it systeem.

Derneist dogge netwurktsjinsten en loadbalancers fan Google Cloud in poerbêste baan. Se tastean jo gewoan willekeurich iepenbiere IP-adressen fan elke regio te brûken, en it prachtige BGP-protokol soarget foar de rest (dat wol sizze brûkers trochferwize nei it tichtstbye kluster). Fansels sil yn gefal fan in mislearring it ferkear automatysk nei in oare regio gean sûnder minsklik yngripen.

Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises
Tafersjoch op Google Load Balancing

Us platfoarm makket ek swier gebrûk fan GPU's. Google Cloud lit jo se heul effektyf direkt brûke yn Kubernetes-klusters.

Op it stuit wie it ynfrastruktuerteam primêr rjochte op 'e legacy stack ynset op fysike servers. Dêrom foldie it brûken fan in beheare tsjinst (ynklusyf Kubernetes-masters) oan ús easken en liet ús teams traine om te wurkjen mei lokale klusters.

As gefolch, wy koenen begjinne te ûntfangen produksje ferkear op de Google Cloud ynfrastruktuer krekt 6 moannen nei it begjin fan wurk.

Lykwols, nettsjinsteande in oantal foardielen, wurkje mei in wolk provider is assosjearre mei bepaalde kosten, dy't kin tanimme ôfhinklik fan de lading. Dêrom hawwe wy elke beheare tsjinst dy't wy brûkten sekuer analysearre, yn 'e hoop om se yn' e takomst op it terrein te ymplementearjen. Yn feite begon de ymplemintaasje fan lokale klusters ein 2016 en waard de hybride strategy tagelyk inisjeare.

Lansearring fan pleatslik container orkestraasje platfoarm Dailymotion

Hjerst 2016

Yn betingsten doe't de hiele stack wie klear foar produksje, en wurkje oan de API ferfolge, it wie tiid om te konsintrearjen op regionale klusters.

Op dat stuit seagen brûkers elke moanne mear dan 3 miljard fideo's. Fansels hawwe wy in protte jierren ús eigen wiidweidige Content Delivery Network hân. Wy woene profitearje fan dizze omstannichheid en Kubernetes-klusters ynsette yn besteande datasintra.

De ynfrastruktuer fan Dailymotion bestie út mear dan 2,5 tûzen servers yn seis datasintra. Allegear binne konfigureare mei Saltstack. Wy begon te meitsjen fan alle nedige resepten foar it meitsjen fan master- en arbeidersknooppunten, lykas in etcd-kluster.

Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises

Netwurk diel

Us netwurk is folslein trochstjoerd. Elke server advertearret syn IP op it netwurk mei Exabgp. Wy fergelike ferskate netwurkplugins en de ienige dy't oan alle behoeften foldie (fanwege de brûkte L3-oanpak) wie Calico. It past perfekt yn it besteande netwurkynfrastruktuermodel.

Om't wy alle beskikbere ynfrastruktuer-eleminten wolle brûke, wie it earste ding dat wy moasten dwaan ús eigen groeide netwurkhulpprogramma (brûkt op alle servers) út te finen: brûk it om IP-adresberiken op it netwurk te advertearjen mei Kubernetes-knooppunten. Wy hawwe Calico tastien om IP-adressen ta te jaan oan pods, mar hawwe it net en brûke it noch net foar BGP-sesjes op netwurkapparatuer. Yn feite wurdt routing behannele troch Exabgp, dy't advertearret de subnets dy't brûkt wurde troch Calico. Hjirmei kinne wy ​​​​elke pod berikke fan it ynterne netwurk (en benammen fan loadbalancers).

Hoe't wy yngongsferkear beheare

Om ynkommende oanfragen troch te lieden nei de winske tsjinst, waard besletten om Ingress Controller te brûken fanwegen syn yntegraasje mei Kubernetes yngongsboarnen.

Trije jier lyn wie nginx-ingress-controller de meast folwoeksen controller: Nginx wie al in lange tiid om en wie bekend om syn stabiliteit en prestaasjes.

Yn ús systeem hawwe wy besletten om de controllers te pleatsen op tawijde 10-Gigabit blade-servers. Elke controller wie ferbûn mei it kube-apiserver-einpunt fan it oerienkommende kluster. Dizze servers brûkten ek Exabgp om iepenbiere of privee IP-adressen te advertearjen. Us netwurktopology lit ús BGP fan dizze controllers brûke om al it ferkear direkt nei de pods te routeren sûnder in tsjinst lykas NodePort te brûken. Dizze oanpak helpt horizontaal ferkear tusken knopen te foarkommen en ferbetteret effisjinsje.

Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises
Ferkearbeweging fan it ynternet nei pods

No't wy ús hybride platfoarm begripe, kinne wy ​​djipper ferdjipje yn it ferkearsmigraasjeproses sels.

Migraasje fan ferkear fan Google Cloud nei Dailymotion-ynfrastruktuer

Hjerst 2018

Nei hast twa jier fan bouwen, testen en ôfstimmen, hawwe wy einlings in folsleine Kubernetes-stapel klear om wat ferkear te akseptearjen.

Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises

De hjoeddeistige routingstrategy is frij ienfâldich, mar genôch om oan 'e behoeften te foldwaan. Neist iepenbiere IP's (op Google Cloud en Dailymotion), wurdt AWS Route 53 brûkt om belied yn te stellen en brûkers troch te lieden nei it kluster fan ús kar.

Kubernetes aventoer Dailymotion: it meitsjen fan ynfrastruktuer yn 'e wolken + on-premises
Foarbyld fan routingbelied mei Rûte 53

Mei Google Cloud is dit maklik, om't wy in inkele IP diele oer alle klusters en de brûker wurdt omlaat nei it tichtstby lizzende GKE-kluster. Foar ús klusters is de technology oars, om't har IP's oars binne.

Tidens de migraasje sochten wy regionale oanfragen troch te lieden nei de passende klusters en evaluearren de foardielen fan dizze oanpak.

Om't ús GKE-klusters binne konfigureare foar autoskaal mei gebrûk fan oanpaste metriken, skaalje se op / del op basis fan ynkommend ferkear.

Yn normale modus wurdt alle regionale ferkear rjochte op it lokale kluster, en GKE tsjinnet as reserve yn gefal fan problemen (sûnenskontrôles wurde útfierd troch Route 53).

...

Yn 'e takomst wolle wy routingbelied folslein automatisearje om in autonome hybride strategy te berikken dy't de tagonklikens foar brûkers kontinu ferbetteret. Oan 'e plus kant binne wolkkosten signifikant fermindere en API-antwurdtiden binne sels fermindere. Wy fertrouwe op it resultearjende wolkplatfoarm en binne ree om mear ferkear dernei te ferwizen as it nedich is.

PS fan oersetter

Jo kinne ek ynteressearre wêze yn in oare resinte Dailymotion-post oer Kubernetes. It is wijd oan de ynset fan applikaasjes mei Helm op in protte Kubernetes klusters en waard publisearre likernôch in moanne lyn.

Lês ek op ús blog:

Boarne: www.habr.com

Add a comment