Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау

Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау

Ескерту. аударма: Dailymotion - әлемдегі ең үлкен бейнехостинг қызметтерінің бірі, сондықтан Kubernetes-тің танымал қолданушысы. Бұл материалда жүйе сәулетшісі Дэвид Дончес GKE-де бұлтты орнатудан басталып, гибридті шешім ретінде аяқталған K8s негізіндегі компанияның өндірістік платформасын құру нәтижелерімен бөліседі, бұл жауап беру уақытын жақсартуға және инфрақұрылымдық шығындарды үнемдеуге мүмкіндік берді.

Core API қайта құру туралы шешім қабылдау Dailymotion үш жыл бұрын біз қолданбаларды орналастырудың тиімді әдісін жасап, оны жеңілдеткіміз келді әзірлеу мен өндірістегі процестер. Осы мақсатта біз контейнерлік оркестрлік платформаны пайдалануды шештік және табиғи түрде Кубернетесті таңдадық.

Неліктен Kubernetes негізінде өзіңіздің жеке платформаңызды құру керек?

Google Cloud көмегімен өндіріс деңгейіндегі API

2016 жылдың жазы

Үш жыл бұрын, Dailymotion компаниясы сатып алғаннан кейін бірден Vivendi, біздің инженерлік топтар бір жаһандық мақсатқа бағытталған: мүлдем жаңа Dailymotion өнімін жасау.

Контейнерлерді, оркестрлік шешімдерді және өткен тәжірибемізді талдау негізінде біз Кубернетестің дұрыс таңдау екеніне сенімдіміз. Кейбір әзірлеушілер қазірдің өзінде негізгі ұғымдарды түсінді және оны қалай пайдалану керектігін білді, бұл инфрақұрылымды өзгерту үшін үлкен артықшылық болды.

Инфрақұрылымдық тұрғыдан алғанда, бұлтты қолданбалардың жаңа түрлерін орналастыру үшін қуатты және икемді жүйе қажет болды. Біз жан тыныштығымен мүмкін болатын ең сенімді жергілікті платформаны құру үшін саяхатымыздың басында бұлтта қалуды таңдадық. Біз қолданбаларымызды Google Kubernetes Engine арқылы орналастыруды шештік, бірақ біз ерте ме, кеш пе жеке деректер орталықтарына көшетінімізді және гибридті стратегияны қолданатынымызды білдік.

Неліктен GKE таңдадыңыз?

Біз бұл таңдауды негізінен техникалық себептерге байланысты жасадық. Сонымен қатар, компанияның бизнес қажеттіліктерін қанағаттандыратын инфрақұрылымды жедел қамтамасыз ету қажет болды. Бізде географиялық тарату, масштабтау және ақауларға төзімділік сияқты хостинг қолданбаларына кейбір талаптар қойылды.

Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау
Dailymotion ішіндегі GKE кластерлері

Dailymotion бүкіл әлемде қолжетімді бейне платформа болғандықтан, біз күту уақытын қысқарту арқылы қызмет сапасын жақсартқымыз келді. (кідіріс). Ертерек біздің API Парижде ғана қолжетімді болды, бұл оңтайлы емес. Мен қосымшаларды Еуропада ғана емес, Азия мен АҚШ-та орналастырғым келді.

Бұл кідіріске сезімталдық платформаның желілік архитектурасында маңызды жұмыс істеу керек дегенді білдіреді. Көптеген бұлттық қызметтер сізді әр аймақта жеке желіңізді құруға, содан кейін оларды VPN немесе басқарылатын қызмет түрі арқылы қосуға мәжбүрлегенімен, Google Cloud барлық Google аймақтарын қамтитын толық бағытталатын жалғыз желіні жасауға мүмкіндік берді. Бұл жүйенің жұмысы мен тиімділігі жағынан үлкен плюс.

Сонымен қатар, Google Cloud желісінің қызметтері мен жүктеме теңгергіштері тамаша жұмыс істейді. Олар жай ғана сізге әр аймақтың еркін жалпы IP мекенжайларын пайдалануға мүмкіндік береді, ал тамаша BGP протоколы қалғанын (яғни, пайдаланушыларды ең жақын кластерге қайта бағыттау) шешеді. Ақаулық орын алған жағдайда көлік қозғалысы адамның араласуынсыз автоматты түрде басқа аймаққа өтетіні анық.

Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау
Google Load Balancing мониторингі

Біздің платформа сонымен қатар GPU-ларды көп пайдаланады. Google Cloud оларды тікелей Kubernetes кластерлерінде өте тиімді пайдалануға мүмкіндік береді.

Ол кезде инфрақұрылымдық топ ең алдымен физикалық серверлерде орналастырылған ескі стекке шоғырланған. Сондықтан басқарылатын қызметті пайдалану (соның ішінде Kubernetes шеберлері) біздің талаптарымызға сай болды және жергілікті кластерлермен жұмыс істеуге командаларды үйретуге мүмкіндік берді.

Нәтижесінде біз Google Cloud инфрақұрылымында өндірістік трафикті жұмыс басталғаннан кейін небәрі 6 айдан кейін ала бастадық.

Дегенмен, бірқатар артықшылықтарға қарамастан, бұлттық провайдермен жұмыс істеу белгілі бір шығындармен байланысты, ол жүктемеге байланысты өсуі мүмкін. Сондықтан біз пайдаланатын әрбір басқарылатын қызметті мұқият талдадық, оларды болашақта жергілікті жерде енгізуге үміттенеміз. Іс жүзінде жергілікті кластерлерді енгізу 2016 жылдың аяғында басталып, гибридтік стратегия бір уақытта қолға алынды.

Dailymotion жергілікті контейнерлік оркестрлік платформаны іске қосу

2016 жылдың күзі

Бүкіл стек өндіруге және API-де жұмыс істеуге дайын болған жағдайда жалғастырды, аймақтық кластерлерге назар аударатын кез келді.

Ол кезде қолданушылар ай сайын 3 миллиардтан астам бейнені көріп отырған. Әрине, бізде көптеген жылдар бойы мазмұнды жеткізудің жеке кең желісі бар. Біз осы жағдайды пайдаланып, Kubernetes кластерлерін бар деректер орталықтарында орналастырғымыз келді.

Dailymotion инфрақұрылымы алты деректер орталығындағы 2,5 мыңнан астам серверден тұрды. Олардың барлығы Saltstack көмегімен конфигурацияланған. Біз мастер және жұмысшы түйіндерін, сондай-ақ etcd кластерін құру үшін барлық қажетті рецепттерді дайындай бастадық.

Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау

Желі бөлігі

Біздің желі толығымен бағытталды. Әрбір сервер желіде өзінің IP мекенжайын Exabgp арқылы жарнамалайды. Біз бірнеше желілік плагиндерді салыстырдық және барлық қажеттіліктерді қанағаттандыратын жалғыз плагин (қолданылған L3 тәсіліне байланысты) болды. Calico. Ол қолданыстағы желілік инфрақұрылым үлгісіне тамаша сәйкес келеді.

Біз барлық қол жетімді инфрақұрылым элементтерін пайдаланғымыз келгендіктен, бірінші кезекте үйде өндірілген желілік қызметтік бағдарламамызды анықтау керек болды (барлық серверлерде пайдаланылады): оны Kubernetes түйіндері арқылы желідегі IP мекенжайларының ауқымын жарнамалау үшін пайдаланыңыз. Біз Calico-ға IP мекенжайларын подкасттарға тағайындауға рұқсат бердік, бірақ оны желілік жабдықта BGP сеанстары үшін пайдаланбадық және әлі де қолданбадық. Шын мәнінде, маршруттауды Calico пайдаланатын ішкі желілерді жарнамалайтын Exabgp басқарады. Бұл бізге ішкі желіден (және, атап айтқанда, жүктеме теңгерімінен) кез келген подкастқа қол жеткізуге мүмкіндік береді.

Біз кіріс трафигін қалай басқарамыз

Кіріс сұрауларын қажетті қызметке қайта бағыттау үшін Kubernetes кіру ресурстарымен интеграциялануына байланысты Ingress Controller пайдалану туралы шешім қабылданды.

Үш жыл бұрын nginx-ingress-контроллері ең жетілген контроллер болды: Nginx ұзақ уақыт бойы болды және өзінің тұрақтылығы мен өнімділігімен танымал болды.

Біздің жүйеде біз контроллерлерді арнайы 10 гигабиттік пышақты серверлерге орналастыруды шештік. Әрбір контроллер сәйкес кластердің kube-apiserver соңғы нүктесіне қосылды. Бұл серверлер сонымен қатар жалпыға ортақ немесе жеке IP мекенжайларын жарнамалау үшін Exabgp пайдаланды. Біздің желі топологиясы NodePort сияқты қызметті пайдаланбай-ақ барлық трафикті тікелей подкасттарға бағыттау үшін осы контроллерлерден BGP пайдалануға мүмкіндік береді. Бұл тәсіл түйіндер арасындағы көлденең трафикті болдырмауға көмектеседі және тиімділікті арттырады.

Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау
Интернеттен блоктарға трафик қозғалысы

Енді біз гибридті платформамызды түсінгеннен кейін біз трафик көші-қон процесінің өзіне тереңірек үңіле аламыз.

Google Cloud-тан Dailymotion инфрақұрылымына трафикті тасымалдау

2018 жылдың күзі

Екі жылға жуық құрылыс, тестілеу және баптаудан кейін бізде трафикті қабылдауға дайын толық Kubernetes стек бар.

Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау

Ағымдағы маршруттау стратегиясы өте қарапайым, бірақ қажеттіліктерді қанағаттандыру үшін жеткілікті. Жалпыға ортақ IP мекенжайларына қосымша (Google Cloud және Dailymotion жүйесінде), AWS Route 53 саясаттарды орнату және пайдаланушыларды таңдаған кластерге қайта бағыттау үшін қолданылады.

Kubernetes шытырман оқиғасы Dailymotion: бұлттарда + жергілікті жерде инфрақұрылым жасау
53-маршрутты пайдаланатын маршруттау саясаты мысалы

Google Cloud көмегімен бұл оңай, өйткені біз барлық кластерлерде бір IP мекенжайын бөлісеміз және пайдаланушы ең жақын GKE кластеріне қайта бағытталады. Біздің кластерлер үшін технология әртүрлі, өйткені олардың IP мекенжайлары әртүрлі.

Көшіру кезінде біз аймақтық сұраныстарды тиісті кластерлерге қайта бағыттауға тырыстық және бұл тәсілдің артықшылықтарын бағаладық.

Біздің GKE кластерлері Custom Metrics көмегімен автоматты масштабтауға конфигурацияланғандықтан, олар кіріс трафик негізінде масштабты жоғарылатады/төмендетеді.

Қалыпты режимде барлық аймақтық трафик жергілікті кластерге бағытталады, ал GKE ақаулар туындаған кезде резерв ретінде қызмет етеді (денсаулықты тексеру 53-маршрут арқылы жүзеге асырылады).

...

Болашақта біз пайдаланушылар үшін қолжетімділікті үздіксіз жақсартатын автономды гибридтік стратегияға қол жеткізу үшін маршруттау саясатын толығымен автоматтандырғымыз келеді. Бір жақсысы, бұлттық шығындар айтарлықтай қысқарды және API жауап беру уақыты тіпті қысқарды. Біз алынған бұлттық платформаға сенеміз және қажет болған жағдайда оған көбірек трафикті бағыттауға дайынбыз.

Аудармашыдан PS

Сізді Кубернетес туралы соңғы Dailymotion жазбасы қызықтыруы мүмкін. Ол көптеген Kubernetes кластерлерінде Helm көмегімен қолданбаларды орналастыруға арналған жарияланды шамамен бір ай бұрын.

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру