Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások

Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások

Megjegyzés fordítás.: Dailymotion — a világ egyik legnagyobb videóhosting szolgáltatása, és emiatt kiemelkedő felhasználója a Kubernetesnek. Ebben az anyagban David Donchez, a rendszerarchitekt, megosztja a cég K8s alapú production-platformjának létrehozásának eredményeit, amely egy felhő alapú telepítéssel indult a GKE-n, és végül hibrid megoldásként zárult, lehetővé téve a jobb reakcióidők elérését és az infrastrukturális költségek csökkentését.

A fő API átalakításáról hozott döntéskor Dailymotion három évvel ezelőtt szeretnénk egy hatékonyabb alkalmazásbehelyezési mód kidolgozására, és megkönnyíteni a fejlesztési és production folyamatokat.Ehhez a célhoz konténerorchestráló platformot döntöttünk használni, és természetes módon a Kubernetes mellett döntöttünk.

Miért érdemes saját Kubernetes alapú platformot létrehozni?

API production szintje a lehető legrövidebb időn belül a Google Cloud segítségével.

2016 nyara

Három évvel ezelőtt, közvetlenül a Dailymotion Vivendi általi megvásárlása után Vivendi, mérnöki csapataink egy globális célra összpontosítottak: egy teljesen új Dailymotion termék létrehozására.

A konténerek, az orchestration megoldások elemzése és korábbi tapasztalataink alapján megerősítettük, hogy a Kubernetes a megfelelő választás. Néhány fejlesztőnknek már volt ismerete az alapvető fogalmakról, és tudták, hogyan kell használni, ami óriási előnyt jelentett az infrastrukturális átalakítás során.

Infrastruktúra szempontjából egy erőteljes és rugalmas rendszerre volt szükségünk az új típusú felhőalapú alkalmazások telepítésére. Az utazásunk kezdetén úgy döntöttünk, hogy a felhőben maradunk, hogy nyugodtan felépíthessük a lehető legmegbízhatóbb helyi platformot. Alkalmazásainkat a Google Kubernetes Engine segítségével szerettük volna telepíteni, bár tudtuk, hogy előbb-utóbb saját adatközpontba fogunk áttérni, és hibrid stratégiát fogunk alkalmazni.

Miért választottuk a GKE-t?

Elsősorban technikai megfontolások alapján hoztuk ezt a döntést. Ezen kívül gyorsan kellett biztosítanunk olyan infrastruktúrát, amely megfelel a vállalat üzleti igényeinek. Volt néhány követelményünk az alkalmazásbehelyezéssel kapcsolatban, például a földrajzi elosztottság, a skálázhatóság és a hibabiztosság.

Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások
GKE klaszterek Dailymotionnál

Mivel a Dailymotion egy világszerte elérhető videoplatform, kiemelten fontos volt számunkra a szolgáltatás minőségének javítása a várakozási idő csökkentése érdekében. (latency)Korábban a API-nk csak Párizsban volt elérhető, ami nem volt optimális. Azt szerettem volna, hogy az alkalmazásokat ne csak Európában, hanem Ázsiában és az Egyesült Államokban is telepíthessük.

Ez a késleltetés iránti érzékenység azt jelentette, hogy komolyan kell dolgozni a platform hálózati architektúráján. Míg a legtöbb felhőszolgáltatás megkövetelte, hogy saját hálózatot hozzunk létre minden régióban, és azt VPN-en vagy valamilyen kezelőszolgáltatáson keresztül összekapcsoljuk, a Google Cloud lehetővé tette egy teljesen irányítható, egyetlen hálózat létrehozását, amely minden Google régiót átfog. Ez nagy előny a rendszer üzemeltetése és hatékonysága szempontjából.

Továbbá, a Google Cloud hálózati szolgáltatásai és terheléselosztói is kiválóan teljesítenek. Csak lehetővé teszik a nyilvános IP-címek önkényes használatát minden régióból, és a csodálatos BGP protokoll gondoskodik minden másról (azaz átirányítja a felhasználókat a legközelebbi klaszterhez). Nyilvánvaló, hogy hiba esetén a forgalom automatikusan egy másik régióba irányul emberi beavatkozás nélkül.

Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások
A Google terheléselosztásának figyelése

Platformunk szintén aktívan alkalmaz grafikus feldolgozó egységeket. A Google Cloud lehetővé teszi, hogy ezeket rendkívül hatékonyan használjuk a Kubernetes klaszterekben.

Abban az időben az infrastruktúra csapat többségében a régi stack-re összpontosított, amely fizikai szervereken volt telepítve. Ezért a kezelt szolgáltatás használata (ideértve a Kubernetes master komponenseket) megfelelt az igényeinknek, és lehetővé tette a csapatok képzését a helyi klaszterekkel való munkára.

Ennek eredményeként mindössze 6 hónap elteltével elkezdtük elfogadni a production forgalmat a Google Cloud infrastruktúrán.

Azonban a számos előny ellenére a felhőszolgáltatóval való munka hármas költségekkel jár, amelyek a terheléstől függően növekedhetnek. Ezért alaposan elemeztük az összes kezelt szolgáltatást, hogy a jövőben megvalósíthassuk azokat on-premises. Valójában a helyi klaszterek bevezetése 2016 végén kezdődött, és akkor indult el a hibrid stratégia is.

A Dailymotion helyi tároló konténer-orchestráló platformjának elindítása

2016 őszén

Abban a helyzetben, amikor az egész stack készen állt a production-ra, és a munka az API-n tovább folytatódott, eljött az idő, hogy a regionális klaszterekre összpontosítsunk.

Ekkor a felhasználók havonta több mint 3 milliárd videót néztek meg. Természetesen már több éve működött a saját kiterjedt Content Delivery Network rendszerünk. Ki akartuk használni ezt a lehetőséget, és Kubernetes klasztereket szeretnénk telepíteni a meglévő adatközpontokban.

A Dailymotion infrastruktúrája több mint 2500 szerverből állt hat adatközpontban. Mindegyiket Saltstack segítségével konfiguráltuk. Elkezdjük előkészíteni az összes szükséges receptet a master és worker csomópontok, valamint az etcd klaszter létrehozásához.

Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások

Hálózati rész

A hálózatunk teljes mértékben routolható. Minden szerver az Exabgp segítségével jelzi az IP-címét a hálózatban. Összehasonlítottunk több hálózati plugint, és az egyetlen, amely kielégítette az összes igényünket (a használt L3 szintű megközelítés miatt), az volt, Calico. Tökéletesen illeszkedett a meglévő infrastruktúra hálózati modelljébe.

Mivel az összes meglévő infrastruktúraelemet szeretnénk kihasználni, először is meg kellett értenünk a saját hálózati eszközünket (amit minden szerveren használunk): ezt állítottuk be az IP-címek tartományának bejelentésére a Kubernetes csomópontokkal. Engedtük, hogy a Calico allokálja az IP-címeket a podoknak, de nem használtuk és nem használjuk a BGP ülésekhez a hálózati berendezéseken. Valójában a routolást az Exabgp végzi, amely a Calico által használt alhálózatokat hirdeti. Ez lehetővé teszi számunkra, hogy elérjük bármelyik podot a belső hálózatból (különösen a terheléselosztókból).

Hogyan kezeljük az ingress forgalmat

A bejövő kérések megcélzott szolgáltatásra történő átirányításához az Ingress Controller használata mellett döntöttünk, mivel integrálódik a Kubernetes ingress-erőforrásaihoz.

Három évvel ezelőtt az nginx-ingress-vezérlő volt a legfejlettebb vezérlő: az Nginx-t régóta használták, és ismert volt stabilitásáról és teljesítményéről.

Rendszerünkben úgy döntöttünk, hogy a vezérlőket dedikált 10 gigabites blade szervereken helyezzük el. Minden vezérlő a megfelelő klaszter kube-apiserver végpontjához csatlakozott. Ezeken a szervereken az Exabgp-t is használtuk nyilvános vagy magán IP-címek bejelentésére. Hálózatunk topológiája lehetővé teszi, hogy a BGP-t ezekből a vezérlőkből a podok közvetlen forgalmának irányítására használjuk, elkerülve a NodePort típusú szolgáltatásokat. Ez a megközelítés segít elkerülni a vízszintes forgalmat a csomópontok között, és növeli a hatékonyságot.

Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások
A forgalom irányítása az internetről a podokhoz

Most, hogy tisztáztuk a hibrid platformunkat, mélyebbre áshatunk a forgalom migrálási folyamatába.

A forgalom migrálása a Google Cloud-ból a Dailymotion infrastruktúrájába

2018 őszén

Majdnem két év fejlesztés, tesztelés és beállítás után végre megkaptuk a teljes Kubernetes stacket, amely készen áll a forgalom egy részének kezelésére.

Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások

Jelenlegi forgalomirányítási stratégiánk meglehetősen egyszerű, de teljesen kielégíti az igényeket. A nyilvános IP-címeken (Google Cloud-ban és Dailymotion-ban) kívül az AWS Route 53-at használjuk politikák meghatározására és a felhasználók átirányítására a választott klaszterünk felé.

Kubernetes kaland Dailymotion: infrastruktúra létrehozása felhőkben + helyszíni megoldások
Példa irányítási politikára Route 53 használatával

A Google Cloud-dal ez egyszerű, mivel egyetlen IP-t használunk az összes klaszterhez, és a felhasználó a legközelebbi GKE klaszterhez van átirányítva. A klaszterink más technológiát használnak, mivel az IP-címük eltér.

A migrálás során arra törekedtünk, hogy a regionális kéréseket a megfelelő klaszterekhez irányítsuk, és értékeltük ennek a megközelítésnek az előnyeit.

Mivel GKE klasztereink automatikus skálázásra vannak konfigurálva egyedi metrikák segítségével, a bejövő forgalom alapján növelik/csökkentik a kapacitásukat.

Normál üzemmódban az összes regionális forgalmat a helyi klaszterre irányítjuk, míg a GKE tartalékot képez a problémák esetére (health-check-eket a Route 53 végez).

…

A jövőben teljesen automatizálni szeretnénk a forgalomirányítási politikákat, hogy egy önálló hibrid stratégiát valósítsunk meg, amely folyamatosan javítja a felhasználók elérhetőségét. Az előnyök között említést nyer, hogy jelentősen csökkentek a felhőkiadások, és sikerült még az API válaszidejét is csökkenteni. Bízunk a kialakult felhőplatformban, és készen állunk, hogy szükség esetén több forgalmat irányítsunk rá.

Fejlesztési eszközök, amelyek Kubernetesben futnak

Lehet, hogy egy másik, nemrég megjelent Dailymotion publikáció is érdekli önt a Kubernetesről. Ez a Helm alkalmazások tömeges telepítésével foglalkozik több Kubernetes klaszteren keresztül, és megjelent körülbelül egy hónappal ezelőtt.

Olvasson további információkat a blogunkban:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster