
Obs. övers.: Dailymotion â en av vĂ€rldens största videohotellstjĂ€nster och en framtrĂ€dande anvĂ€ndare av Kubernetes. I detta material delar systemarkitekten David Donchez med sig av resultaten frĂ„n företagets produktion plattform som skapades pĂ„ K8s, vilken började som en molninstallation i GKE och avslutades som en hybridlösning, vilket möjliggjorde bĂ€ttre svarstider och minskade infrastrukuturskostnader.
NÀr vi beslutade oss för att bygga om huvud-API:et för tre Är sedan, ville vi utveckla ett mer effektivt sÀtt att distribuera applikationer och förenkla För detta ÀndamÄl valde vi att anvÀnda en containerorkestreringsplattform och valde naturligtvis Kubernetes.
Varför skapa en egen plattform baserad pÄ Kubernetes?
Produktion-API pÄ kort tid med hjÀlp av Google Cloud
Sommaren 2016
Tre Är sedan, direkt efter köpet av Dailymotion av , fokuserade vÄra ingenjörsteam pÄ ett enda globalt mÄl: att skapa en helt ny produkt för Dailymotion.
Efter att ha analyserat containrar, orkestreringslösningar och vÄr tidigare erfarenhet var vi övertygade om att Kubernetes var rÀtt val. En del av vÄra utvecklare hade redan förstÄelse för de grundlÀggande koncepten och visste hur man anvÀnder det, vilket var en stor fördel för den infrastrukturella transformationen.
FrÄn infrastrukturen sett krÀvdes ett kraftfullt och flexibelt system för att köra nya typer av molnbaserade applikationer. Vi valde att stanna kvar i molnet i början av vÄr resa för att snabbt bygga en sÄ pÄlitlig lokal plattform som möjligt. Vi bestÀmde oss för att distribuera vÄra applikationer med Google Kubernetes Engine, Àven om vi visste att vi förr eller senare skulle flytta till vÄra egna datacenter och tillÀmpa en hybridstrategi.
Varför valde vi GKE?
Vi gjorde detta val frÀmst av tekniska skÀl. Dessutom krÀvdes det att vi snabbt skulle kunna tillhandahÄlla infrastruktur som svarade mot företagets behov. Vi hade vissa krav pÄ applikationsdisposition, sÄsom geografisk spridning, skalbarhet och felresistens.

GKE-kluster pÄ Dailymotion
Eftersom Dailymotion Àr en videoplattform tillgÀnglig över hela vÀrlden ville vi verkligen förbÀttra servicen genom att minska vÀntetiderna. (latency). Tidigare var tillgÀnglig endast i Paris, vilket var suboptimalt. Det skulle vara bra att kunna placera applikationer inte bara i Europa utan Àven i Asien och USA.
Denna kÀnslighet för fördröjningar innebar att vi var tvungna att arbeta hÄrt med plattformens nÀtverksarkitektur. Medan de flesta molntjÀnster krÀvde att man skapade sitt eget nÀtverk i varje region och sedan kopplade ihop dem via VPN eller en sÄdan hanterad tjÀnst, tillÀt Google Cloud att skapa ett helt routbart enhetligt nÀtverk som tÀcker alla Google-regioner. Detta Àr en stor fördel nÀr det gÀller driftsÀttning och systemets effektivitet.
Dessutom fungerar nÀtverkstjÀnster och lastbalanserare frÄn Google Cloud utmÀrkt. De lÄter helt enkelt anvÀnda valfria offentliga IP-adresser frÄn varje region, och den fantastiska BGP-protokoll ser efter allt annat (d.v.s. dirigerar anvÀndare till nÀrmaste kluster). Det Àr uppenbart att vid ett fel kommer trafiken automatiskt att flöda till en annan region utan mÀnsklig inblandning.

Ăvervakning av lastbalansering i Google
VÄr plattform anvÀnder ocksÄ grafiska processorer aktivt. Google Cloud möjliggör en mycket effektiv anvÀndning av dem direkt i Kubernetes-kluster.
Under tiden koncentrerade sig infrastrukturteamet huvudsakligen pÄ den gamla stacken som var distribuerad pÄ fysiska servrar. Det var dÀrför anvÀndandet av hanterade tjÀnster (inklusive Kubernetes-mÀstarkomponenterna) uppfyllde vÄra krav och gjorde det möjligt att utbilda teamen i att arbeta med lokala kluster.
Som ett resultat kunde vi börja ta emot produktions trafik pÄ Google Clouds infrastruktur bara sex mÄnader efter att arbetet inleddes.
Men trots en rad fördelar Àr arbetet med en molnleverantör förenat med vissa kostnader som kan öka beroende pÄ belastningen. Det Àr dÀrför vi noga analyserade varje hanterad tjÀnst vi anvÀnde, med avsikt att i framtiden implementera dem lokalt. Faktum Àr att implementeringen av lokala kluster började i slutet av 2016, och en hybridstrategi initierades vid samma tidpunkt.
Lansering av Dailymotions lokala plattform för containerorkestrering
Hösten 2016
Under de omstÀndigheter nÀr hela stacken var redo för produktion och arbetet med API:n , det var en tid för att fokusera pÄ regionala kluster.
Vid den tiden visade anvÀndarna varje mÄnad mer Àn 3 miljarder videor. SjÀlvklart hade vi redan haft ett omfattande Content Delivery Network i drift i flera Är. Vi ville utnyttja detta och rulla ut Kubernetes-kluster i de befintliga datacenter.
Dailymotion-infrastrukturen bestod av mer Àn 2 500 servrar i sex datacenter. Alla konfigureras med Saltstack. Vi började förbereda alla nödvÀndiga recept för att skapa master- och worker-noder, samt etcd-kluster.

NĂ€tverksdel
VÄrt nÀtverk Àr helt routbart. Varje server annonserar sin IP i nÀtverket med hjÀlp av Exabgp. Vi jÀmförde flera nÀtverksplugin och det enda som uppfyllde alla krav (pÄ grund av den anvÀnda L3-approachen) var . Den passade perfekt in i den befintliga nÀtverksmodellen för infrastrukturen.
Eftersom vi ville anvÀnda alla befintliga element i infrastrukturen var det först och frÀmst viktigt att förstÄ vÄrt egenutvecklade nÀtverksverktyg (anvÀnt pÄ alla servrar): att anvÀnda det för att annonsera IP-adressomrÄden i nÀtverket med Kubernetes-noder. Vi tillÀt Calico att tilldela IP-adresser till pods, men anvÀnde det inte och anvÀnder fortfarande inte för BGP-sessioner pÄ nÀtverksutrustningen. Faktum Àr att routingen hanteras av Exabgp, som annonserar de subnÀt som anvÀnds av Calico. Detta gör att vi kan nÄ varje pod frÄn det interna nÀtverket (och sÀrskilt frÄn lastbalanserarna).
Hur vi hanterar ingress-trafik
För att omdirigera inkommande förfrÄgningar till rÀtt tjÀnst beslutades det att anvÀnda Ingress Controller pÄ grund av dess integrering med ingress-resurser i Kubernetes.
För tre Är sedan var nginx-ingress-controller den mest mogna kontrollern: Nginx hade anvÀnts lÀnge och var kÀnt för sin stabilitet och prestanda.
I vÄrt system har vi valt att placera kontrollerarna pÄ dedikerade 10-gigabit blade-servrar. Varje kontroller kopplades till endpointen kube-apiserver i den aktuella klustret. PÄ dessa servrar anvÀndes Àven Exabgp för att annonsera offentliga eller privata IP-adresser. Topologin i vÄrt nÀtverk möjliggör anvÀndning av BGP frÄn dessa kontrollerare för att dirigera all trafik direkt till poddar utan att anvÀnda tjÀnster som NodePort. Denna strategi hjÀlper till att undvika horisontell trafik mellan noder och ökar effektiviteten.

Trafikflödet frÄn internet till poddar
Nu nÀr vi har förstÄtt vÄr hybridplattform kan vi fördjupa oss i sjÀlva trafikmigreringsprocessen.
Trafikmigration frÄn Google Cloud till Dailymotion-infrastrukturen
Hösten 2018
Efter nÀstan tvÄ Ärs skapande, testande och konfigurering har vi Àntligen fÄtt en fullstÀndig Kubernetes-stack redo att ta emot en del av trafiken.

Den nuvarande routingstrategin Àr ganska enkel, men tillfredsstÀller fullt ut behoven. Förutom offentliga IP-adresser (i Google Cloud och Dailymotion) anvÀnds AWS Route 53 för att definiera policyer och omdirigera anvÀndarna till klustret vi vÀljer.

Exempel pÄ routingpolicy med Route 53
FrÄn Google Cloud Àr det enkelt, eftersom vi anvÀnder en enhetlig IP för alla kluster, och anvÀndaren omdirigeras till det nÀrmaste GKE-klustret. För vÄra kluster Àr teknologin annorlunda, eftersom deras IP-adresser skiljer sig.
Under migreringen strÀvade vi efter att omdirigera regionala förfrÄgningar till motsvarande kluster och vÀrderade fördelarna med detta tillvÀgagÄngssÀtt.
Eftersom vÄra GKE-kluster Àr konfigurerade för automatisk skalning med hjÀlp av Custom Metrics, ökar/minskar de kapaciteten beroende pÄ inkommande trafik.
I normallÀge dirigeras all regional trafik till det lokala klustret, medan GKE fungerar som reserv om det uppstÄr problem (hÀlsokontroller görs av Route 53).
âŠ
I framtiden vill vi helt automatisera routingpolitiken för att uppnÄ en autonom hybridstrategi som stÀndigt förbÀttrar tillgÀngligheten för anvÀndarna. Fördelarna Àr att kostnaderna för molnet har minskat avsevÀrt och vi har Àven lyckats korta ner API-responstiderna. Vi litar pÄ den resulterande molnplattformen och Àr redo att vid behov omdirigera mer trafik till den.
P.S. frÄn översÀttaren
Kanske Àr du ocksÄ intresserad av en annan nyligen publicerad artikel pÄ Dailymotion om Kubernetes. Den handlar om att distribuera applikationer med Helm pÄ flera Kubernetes-kluster och för ungefÀr en mÄnad sedan.
LÀs Àven i vÄr blogg:
- «».
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
KĂ€lla: habr.com
