devops

Hogyan egyszerűsítette a Netflix a csoportos számítást a Kueue-val

Forrás: medium.com 7 perc olvasás

Megosztás

Hogyan egyszerűsítette a Netflix a csoportos számítást a Kueue-val

Összefoglalót olvas. A teljes tartalom itt érhető el: medium.com.

Alvin Bao, Alex Petrov, Jennifer Lai, Aidan Sherr és Samartha Chandrashekar által Az út során, hogy a Netflix számítási infrastruktúráját Kubernetes-native módon alakítsuk át, a Kubernetes ökoszisztémából származó komponensek integrálására összpontosítottunk a Titus konténerplatformunkba. Ennek egy példája a Kueue használata, amely egy felhőalapú munkafolyamat-queueing rendszer a batch munkaterhelésekhez, és amely nagymértékben helyettesítette a házon belül fejlesztett Compute Managed Batch (CMB) megoldásunkban használt egyedi queueing és ütemezési logikát. Ebben a bejegyzésben áttekintést nyújtunk arról, mi motiválta a migrációt, hogyan migráltunk milliókat a batch feladatokból a Kueue használatára, és mit kínál számunkra a Kueue mint számítási platform. A CMB és a Titus rövid áttekintése A CMB egy menedzselt batch megoldás, amely lehetővé teszi, hogy a felhasználók és alkalmazások végrehajtsák és kezeljék a teljesítményre futó munkaterheléseket. A bérlő hierarchia használatával a munkaterhelések kezelése és sorba állítása prioritások alapján történik, a kapacitást pedig bérlőnként kezelik. A CMB-hez beküldött munkaterheléseket a Titus-on futtatják. A Titus funkciói, amelyek a CMB-hez kapcsolódnak, a munkaterhelés föderációja több cellán (Kubernetes klaszteren) keresztül és a föderált kapacitásfoglalások. Ez azt jelenti, hogy a CMB egyetlen Titus végponttal beszélhet, hogy munkaterheléseket kapjon/beküldjön, és frissítse a kapacitásfoglalásokat anélkül, hogy aggódnia kellene az alárendelt cella/klaszter topológia miatt. CMB Bérlő Hierarchia A bérlők csoportosítási mechanizmust biztosítanak a bizonyos szervezetek, platformok vagy alkalmazások nevében benyújtott feladatok számára. A felhasználók bérlőket hozhatnak létre és szervezhetnek, hogy megfeleljenek szervezetük vagy felhasználási esetük igényeinek. Például egy szervezet egyetlen bérlőt használhat több alkalmazás között, vagy egy összetett hierarchikus struktúrát, amely megfelel a csapat és az alkalmazások tulajdonosi struktúrájának. A bérlők kapacitáskonfigurációhoz kapcsolódnak. A kapacitáskonfiguráció meghatározza a bérlőnek elérhető számítási kapacitást, és bizonyos garanciákat nyújt a többi bérlőtől való elszigeteltség körül. A kapacitáskonfiguráció súlyt (az igazságos megosztáshoz használt) és erőforrásdimenziókat tartalmaz. Két típusa van a bérlőknek a CMB-ben: Belső bérlők - célja a bérlők fájának létrehozásának megkönnyítése. A belső bérlők gyermekeik lehetnek belső és levél bérlők is. A belső bérlők maguk nem fogadnak el munkát, így nincsenek kapcsolódó soruk. Levél bérlők - munkát fogadhatnak el, és kapcsolódó soruk van. A levél bérlők nem lehetnek gyermekeik. A kapacitáskonfigurációval kapcsolatban a bérlők kétféle kapacitást használhatnak: Fenntartott kapacitás Belső bérlők esetén, ha a felhasználó fenntartott kapacitást határoz meg, azt a fán belül igazságosan osztják el és használják a levél bérlők, amelyek az adott belső bérlő alatt találhatóak. Levél bérlők esetén, ha a felhasználó fenntartott kapacitást határoz meg, az hierarchiában eloszlatja a kapacitást, így más bérlők nem tudják fenntartani ugyanazokat az erőforrásokat. Ezek a fenntartott erőforrások nem oszthatók meg más bérlőkkel, biztosítva a megfelelő betöltést egy adott levél bérlő számára. Megosztott kapacitás A Compute csapat fenntart egy globális megosztott kapacitásmedencét, amelybe bármely bérlő beléphet a fenntartott kapacitásán kívül. A CMB használatához nem szükséges foglalás, így egy bérlő teljesen kimerítheti a megosztott kapacitást. A medence igazságosan oszlik meg a bérlők között, de a CMB-ben ezt csak a belépéskor alkalmazták: a CMB-nek nem volt előtérbe helyezése, így ha egyszer egy feladatot befogadtak, az a teljesítményigény változásaitól függetlenül a befejezésig futott. A Kueue megváltoztatja a kapacitások mindkét típusának jelentését, amit az igazságos megosztás és az előtérbe helyezés részletez. Íme egy példa arra, hogyan néz ki egy bérlői hierarchia: CMB Felhasználó/Alkalmazás Munkafolyamat Benyújtási Áram CMB Felhasználó/Alkalmazás Bérlői Menedzsment Áram Miért Kueue? A CMB-t 2018-ban hozták létre, mielőtt vagy párhuzamosan sok olyan, ma elérhető nyílt forráskódú batch számítási ajánlat jelent meg. Az évek során, ahogy a Kubernetes ökoszisztéma fejlődött, a CMB által kínált vagy megkísérelt sok funkció megjelent ezen nyílt forráskódú projektekben, például igazságos megosztás, hierarchikus bérlők, kapacitáskezelés, prioritásos sorba állítás. Ezen túlmenően egyre inkább megnehezedett új funkciók, például az előtérbe helyezés kifejlesztése, amikor a CMB annyira eltávolodott a mögöttes Kubernetes klasztertől. A csapat megvizsgálta, mi szükséges a batch absztrakció modernizálásához, és a következő okok miatt a Kueue mellett döntött: Más lehetőségektől, mint például a YuniKorn vagy a Volcano eltérően, a Kueue nem helyettesíti a pod ütemezést a kube-scheduler által, lehetővé téve a meglévő Titus ütemezési profilok integrálását. A Titus ütemezési profilok cseréje töredezetté teheti a feladat elhelyezést, potenciálisan károsítva a hatékonyságot. Az elfogadás lendülete és az innováció üteme. A Kueue többbérlős kvótakezelését támogatja heterogén hardverek felett. A Kueue primitívokon, például v1.Pod és batch/v1.Job-on működhet, és támogatja a magasabb szintű absztrakciókat, például a RayJob / RayCluster-t a jövőbeli bővíthetőség érdekében. A Kueue natív funkciókkal rendelkezik, amelyeket a csapat szeretett volna megvalósítani a CMB-ben, például előtérbe helyezés, mindent vagy semmit ütemezés, topológia tudatos ütemezés. A Kueue-ra való migrálás E kezdeményezés, amely a CMB munkaterheléseinek Kueue-ra való migrálását célzották, Netflix Batch néven vált ismertté. A migráció kulcsszavai a következők voltak: A migrációnak zero lift-et kell igényelnie a CMB végfelhasználói számára, és teljesen átláthatónak kell lennie számukra. Nincs regresszió a konténer indítási ütemében és a maximális átbocsátóképességben. A CMB sorba állítását és ütemezését a Kueue-val helyettesíteni. Netflix Batch Felhasználó/Alkalmazás Munkafolyamat Benyújtási Áram A régi és új folyam közötti kulcsfontosságú különbség az, hogy a sorba állítást és az ütemezést a Kueue-ra halasztjuk, amely minden Kueue-támogatott Titus cellában engedélyezett. A Titus föderáció a feladatot a Kueue cellákba irányítja a testreszabott Kueue routerünkkel. Netflix Batch Felhasználó/Alkalmazás Bérlői Menedzsment Áram Számunkra, mint üzemeltetők, a migráció olyan egyszerű volt, mint egy gomb megnyomása a felhasználói felületen egy bérlőn (ahogy az a fent említett példában is látható). Ez azt is lehetővé teszi számunkra, hogy könnyedén visszaguruljunk a módosításokra, ha problémák merülnének fel. A háttérben ez a beiratkozás a belső bérlőket Cohortokká, a levél bérlőket pedig ClusterQueue + LocalQueue-vá alakítja. A megadott bérlő kapacitáskonfigurációját erőforrás ízekké és nominális kvótákká alakítjuk. Az architektúra így néz ki: Tanulságok Az API paritásának fenntartása a meglévő rendszerrel (ahelyett, hogy új API felületet tennénk közzé) és a mögöttes komponensek migrálása első lépésként csökkentette a projekt kockázatát azáltal, hogy a fogadási téteket elkülönítette, miközben biztosította, hogy ne zavarjuk meg az ügyfélélményt. Ne várj a legkomplexebb felhasználás migrálásával a végéig. Korán döntöttünk, hogy a legnagyobb és legkomplexebb ügyfelünket migráljuk először. Ez lehetővé tette számunkra, hogy magabiztossá váljunk abban, hogy később más ügyfeleket is migrálhatunk a Netflix Batch-ra problémák nélkül, és ennek eredményeként a gyártási migráció csupán 4 hétig tartott. A Kueue-t sokkal magasabb QPS, Burst és groupKindConcurrency mellett kellett futtatnunk, mint az alapértelmezett beállítás, hogy megfeleljünk az átbocsátási igényeinknek. Ezt korán kockázatmentesítettük, fejlesztői környezetben végrehajtott terhelés tesztekkel, amely a Titus-t utánozza. A Kueue jelenlegi állapota a Netflixnél A Kueue teljes mértékben bevezetésre került a gyártásban, több millió batch munkaterhelés kezelésével. A jövőben olyan lehetőségeket keresünk, hogy több Titus batch munkaterhelést beillesszünk ebbe a jobban menedzselt élménybe. Emellett további igazságos megosztásokat és előtérbe helyezéseket is megvalósítottunk a fenntartott kapacitás jobb kihasználása érdekében. Ezen kívül, a tanulságainkat más belső csapatok is felhasználják, beleértve azokat is, akik Kubernetes-native oktatási infrastruktúrát építenek, hogy informálják munkafeladat-ütemezési és queueing konfigurációikat. Igazságos megosztás és előtérbe helyezés A Kueue segítségével az előtérbe helyezés alapú igazságos megosztás lehetővé teszi a Netflix Batch számára, hogy fenntartja a fenntartási szemantikai működést, miközben erőforrásokat biztosít más bérlők számára, amikor ezeket a fenntartásokat nem használják. Ezen kívül az előtérbe helyezés lehetővé teszi a Netflix Batch számára, hogy alacsony prioritású munkaterheléseket elűzzen a magasabb prioritású munkaterhelések érdekében. Ügyfeleink számára ez azt jelenti, hogy a bérlők több kihasználatlan kapacitást használhatnak a fenntartásukból, több feladatot nyújthatnak be anélkül, hogy a kiszorítás kockázatával kellene szembenézniük, és gyorsabb átfutási időt érhetnek el az üzletileg kritikus munkaterhelések esetén. Egy példa az elűzési konfigurációra egy ClusterQueue-ra, amit használni fogunk, a következő:apiVersion: kueue.x-k8s.io/v1beta2 kind: ClusterQueue metadata: name: "team-a-cq" spec: preemption: reclaimWithinCohort: Any withinClusterQueue: LowerPriority E funkciók üzembe helyezésével a Compute jelentős növekedést tapasztalt az átlagos erőforrás kihasználásban. Elismerés Ez a munka nem lett volna lehetséges a Netflix Compute csapatának kiváló munkája nélkül. A Netflix hogyan egyszerűsítette a batch számítást Kueue segítségével eredetileg a Netflix TechBlog-on jelent meg a Mediumon, ahol az emberek folytatják a beszélgetést, kiemelve és reagálva erre a történetre.

A teljes cikk az eredeti weboldalon

Külső link: medium.com

Kapcsolódó cikkek