Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises

Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises

Poznámka. přel.: Dailymotion je jednou z největších světových videohostingových služeb, a proto je významným uživatelem Kubernetes. V tomto materiálu systémový architekt David Donchez sdílí výsledky vytvoření firemní produkční platformy založené na K8s, která začala cloudovou instalací v GKE a skončila jako hybridní řešení, které umožnilo lepší odezvu a úsporu nákladů na infrastrukturu.

Rozhodování o přestavbě Core API Dailymotion před třemi lety jsme chtěli vyvinout efektivnější způsob hostování aplikací a usnadnit to procesů ve vývoji a výrobě. Pro tento účel jsme se rozhodli použít platformu pro orchestraci kontejnerů a přirozeně jsme zvolili Kubernetes.

Proč se vyplatí budovat vlastní platformu založenou na Kubernetes?

Rozhraní API na produkční úrovni během okamžiku pomocí Google Cloud

Léto 2016

Před třemi lety, bezprostředně poté, co společnost Dailymotion koupila VivendiNaše inženýrské týmy se zaměřují na jeden globální cíl: vytvořit zcela nový produkt Dailymotion.

Na základě naší analýzy kontejnerů, řešení orchestrace a našich minulých zkušeností jsme přesvědčeni, že Kubernetes je správná volba. Někteří vývojáři již rozuměli základním konceptům a věděli, jak je používat, což byla obrovská výhoda pro transformaci infrastruktury.

Z hlediska infrastruktury byl vyžadován výkonný a flexibilní systém pro hostování nových typů cloudových nativních aplikací. Na začátku naší cesty jsme se rozhodli zůstat v cloudu, abychom mohli s klidem v duši vybudovat co nejrobustnější on-premise platformu. Rozhodli jsme se nasadit naše aplikace pomocí Google Kubernetes Engine, i když jsme věděli, že dříve nebo později se přesuneme do vlastních datových center a aplikujeme hybridní strategii.

Proč jste si vybrali GKE?

Tuto volbu jsme zvolili především z technických důvodů. Navíc bylo nutné rychle zajistit infrastrukturu, která odpovídá obchodním potřebám společnosti. Měli jsme určité požadavky na hostování aplikací, jako je geografická distribuce, škálovatelnost a odolnost proti chybám.

Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises
GKE clustery v Dailymotion

Vzhledem k tomu, že Dailymotion je video platforma dostupná po celém světě, chtěli jsme skutečně zlepšit kvalitu služby snížením čekací doby (latence)... Dříve na API byl k dispozici pouze v Paříži, což nebylo optimální. Chtěl jsem mít možnost hostovat aplikace nejen v Evropě, ale také v Asii a USA.

Tato citlivost na latenci znamenala, že na síťové architektuře platformy bude třeba udělat seriózní práci. Zatímco většina cloudových služeb vás nutila vytvořit si vlastní síť v každém regionu a poté je propojit prostřednictvím VPN nebo nějakého druhu spravované služby, Google Cloud vám umožnil vytvořit plně směrovatelnou jedinou síť pokrývající všechny regiony Google. To je velké plus z hlediska provozu a efektivity systému.

Síťové služby a load balancery od Google Cloud navíc odvádějí výbornou práci. Jednoduše umožňují používat libovolné veřejné IP adresy z každého regionu a o zbytek (tedy přesměrování uživatelů na nejbližší cluster) se postará báječný protokol BGP. Je zřejmé, že v případě poruchy se doprava automaticky přesune do jiného regionu bez jakéhokoli lidského zásahu.

Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises
Monitoring Google Load Balancing

Naše platforma také intenzivně využívá GPU. Google Cloud je umožňuje velmi efektivně využívat přímo v clusterech Kubernetes.

V té době se tým infrastruktury zaměřoval především na starší zásobník nasazený na fyzických serverech. Proto použití spravované služby (včetně masterů Kubernetes) splnilo naše požadavky a umožnilo nám vyškolit týmy pro práci s lokálními clustery.

Díky tomu jsme mohli začít přijímat produkční provoz na infrastruktuře Google Cloud pouhých 6 měsíců po zahájení prací.

Spolupráce s cloudovým poskytovatelem je však i přes řadu výhod spojena s určitými náklady, které se mohou v závislosti na vytížení zvyšovat. Proto jsme pečlivě analyzovali každou spravovanou službu, kterou jsme použili, a doufali jsme, že je v budoucnu implementujeme na místě. Implementace lokálních klastrů totiž začala na konci roku 2016 a zároveň byla zahájena hybridní strategie.

Spuštění místní platformy pro orchestraci kontejnerů Dailymotion

podzim 2016

V podmínkách, kdy byl celý zásobník připraven k výrobě, a práce na API pokračoval, nastal čas soustředit se na regionální klastry.

V té době uživatelé každý měsíc sledovali více než 3 miliardy videí. Samozřejmě už řadu let máme vlastní rozsáhlou síť pro doručování obsahu. Chtěli jsme využít této okolnosti a nasadit clustery Kubernetes ve stávajících datových centrech.

Infrastrukturu Dailymotion tvořilo více než 2,5 tisíce serverů v šesti datových centrech. Všechny jsou konfigurovány pomocí Saltstack. Začali jsme připravovat všechny potřebné receptury pro vytvoření hlavních a pracovních uzlů a také clusteru etcd.

Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises

Síťová část

Naše síť je kompletně směrovaná. Každý server inzeruje svou IP v síti pomocí Exabgp. Porovnali jsme několik síťových pluginů a jediný, který splnil všechny potřeby (vzhledem k použitému přístupu L3), byl Kaliko. Dokonale zapadá do stávajícího modelu síťové infrastruktury.

Protože jsme chtěli využít všechny dostupné prvky infrastruktury, první věc, kterou jsme museli udělat, bylo přijít na naši domácí síťovou utilitu (používanou na všech serverech): použít ji k inzerci rozsahů IP adres v síti s uzly Kubernetes. Povolili jsme Calico přidělovat IP adresy podům, ale nepoužili jsme a stále nepoužíváme pro BGP relace na síťovém zařízení. O směrování se ve skutečnosti stará Exabgp, která inzeruje podsítě používané Calico. To nám umožňuje dosáhnout jakéhokoli modulu z vnitřní sítě (a zejména z vyrovnávacích zařízení).

Jak řídíme příchozí provoz

Pro přesměrování příchozích požadavků na požadovanou službu bylo rozhodnuto použít Ingress Controller kvůli jeho integraci s ingress zdroji Kubernetes.

Před třemi lety byl nginx-ingress-controller nejvyspělejším ovladačem: Nginx existoval již dlouhou dobu a byl známý svou stabilitou a výkonem.

V našem systému jsme se rozhodli umístit řadiče na vyhrazené 10gigabitové blade servery. Každý řadič byl připojen ke koncovému bodu kube-apiserver odpovídajícího clusteru. Tyto servery také používaly Exabgp k inzerci veřejných nebo soukromých IP adres. Naše topologie sítě nám umožňuje používat BGP z těchto řadičů ke směrování veškerého provozu přímo do modulů bez použití služby, jako je NodePort. Tento přístup pomáhá vyhnout se horizontálnímu provozu mezi uzly a zvyšuje efektivitu.

Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises
Pohyb dopravy z internetu do podů

Nyní, když rozumíme naší hybridní platformě, můžeme se hlouběji ponořit do samotného procesu migrace provozu.

Migrace provozu z Google Cloud do infrastruktury Dailymotion

podzim 2018

Po téměř dvou letech budování, testování a ladění máme konečně kompletní zásobník Kubernetes připravený přijmout nějaký provoz.

Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises

Současná strategie směrování je poměrně jednoduchá, ale pro splnění potřeb postačuje. Kromě veřejných IP adres (na Google Cloud a Dailymotion) se AWS Route 53 používá k nastavení zásad a přesměrování uživatelů do clusteru dle našeho výběru.

Dobrodružství Kubernetes Dailymotion: vytváření infrastruktury v cloudu + on-premises
Příklad zásady směrování pomocí Route 53

S Google Cloud je to snadné, protože sdílíme jedinou IP adresu napříč všemi clustery a uživatel je přesměrován na nejbližší cluster GKE. Pro naše clustery je technologie odlišná, protože jejich IP adresy jsou odlišné.

Během migrace jsme se snažili přesměrovat regionální požadavky do příslušných klastrů a hodnotili jsme přínosy tohoto přístupu.

Protože jsou naše clustery GKE nakonfigurovány pro automatické škálování pomocí vlastních metrik, škálují se nahoru/dolů na základě příchozího provozu.

V normálním režimu je veškerý regionální provoz směrován do místního clusteru a GKE slouží jako rezerva pro případ problémů (zdravotní kontroly provádí Route 53).

...

V budoucnu chceme plně automatizovat zásady směrování, abychom dosáhli autonomní hybridní strategie, která neustále zlepšuje dostupnost pro uživatele. Pozitivní je, že se výrazně snížily náklady na cloud a dokonce se zkrátily doby odezvy API. Výsledné cloudové platformě věříme a jsme připraveni na ni v případě potřeby přesměrovat větší provoz.

PS od překladatele

Také by vás mohl zajímat další nedávný příspěvek Dailymotion o Kubernetes. Věnuje se nasazování aplikací s Helm na mnoha clusterech Kubernetes a byl publikován asi před měsícem.

Přečtěte si také na našem blogu:

Zdroj: www.habr.com

Přidat komentář