Kubernetes авантура Dailymotion: создавање инфраструктура во облаците + во просториите

Kubernetes авантура Dailymotion: создавање инфраструктура во облаците + во просториите

Забелешка. превод.: Dailymotion е една од најголемите светски услуги за видео хостинг и затоа е значаен корисник на Kubernetes. Во овој материјал, системскиот архитект Дејвид Дончез ги споделува резултатите од создавањето на производствената платформа на компанијата базирана на K8s, која започна со инсталација на облак во GKE и заврши како хибридно решение, што овозможи подобро време на одговор и заштеди на трошоците за инфраструктура.

Донесување одлука за обнова на Core API Dailymotion, Пред три години, сакавме да развиеме поефикасен начин за хостирање на апликации и да го олесниме тоа процеси во развојот и производството. За таа цел, решивме да користиме платформа за оркестрација на контејнери и природно го избравме Kubernetes.

Зошто вреди да се изгради сопствена платформа базирана на Kubernetes?

API на ниво на производство за кратко време со користење на Google Cloud

Лето 2016 година

Пред три години, веднаш откако Dailymotion беше купен од Вивенди, нашите инженерски тимови се фокусирани на една глобална цел: да создадат целосно нов производ на Dailymotion.

Врз основа на нашата анализа на контејнери, решенија за оркестрација и нашето минато искуство, убедени сме дека Kubernetes е вистинскиот избор. Некои програмери веќе ги разбираа основните концепти и знаеја како да го користат, што беше огромна предност за трансформацијата на инфраструктурата.

Од инфраструктурна перспектива, потребен беше моќен и флексибилен систем за да се сместат нови типови на апликации од облакот. Избравме да останеме во облакот на почетокот на нашето патување за да можеме со мир на умот да ја изградиме најцврстата можна платформа во просториите. Решивме да ги распоредиме нашите апликации користејќи Google Kubernetes Engine, иако знаевме дека порано или подоцна ќе се преселиме во нашите сопствени центри за податоци и ќе примениме хибридна стратегија.

Зошто го избравте GKE?

Овој избор го направивме главно од технички причини. Дополнително, беше неопходно брзо да се обезбеди инфраструктура која ги задоволува деловните потреби на компанијата. Имавме некои барања за хостирање апликации, како што се географска дистрибуција, приспособливост и толеранција на грешки.

Kubernetes авантура Dailymotion: создавање инфраструктура во облаците + во просториите
GKE кластери во Dailymotion

Бидејќи Dailymotion е видео платформа достапна ширум светот, навистина сакавме да го подобриме квалитетот на услугата со намалување на времето на чекање (латентност)... Претходно нашето API беше достапно само во Париз, што беше неоптимално. Сакав да можам да бидам домаќин на апликации не само во Европа, туку и во Азија и САД.

Оваа чувствителност на латентност значеше дека ќе треба да се направи сериозна работа на мрежната архитектура на платформата. Додека повеќето облак услуги ве принудија да креирате своја сопствена мрежа во секој регион, а потоа да ги поврзете преку VPN или некој вид на управувана услуга, Google Cloud ви дозволи да создадете единечна мрежа која целосно може да се рутира што ги покрива сите региони на Google. Ова е голем плус во однос на работата и ефикасноста на системот.

Покрај тоа, мрежните услуги и балансирачите на оптоварување од Google Cloud вршат одлична работа. Тие едноставно ви дозволуваат да користите произволни јавни IP адреси од секој регион, а прекрасниот протокол BGP се грижи за останатото (т.е. ги пренасочува корисниците до најблискиот кластер). Очигледно, во случај на дефект, сообраќајот автоматски ќе оди во друг регион без никаква човечка интервенција.

Kubernetes авантура Dailymotion: создавање инфраструктура во облаците + во просториите
Следење на балансирање на оптоварување на Google

Нашата платформа исто така многу ги користи графичките процесори. Google Cloud ви овозможува да ги користите многу ефикасно директно во кластерите на Kubernetes.

Во тоа време, инфраструктурниот тим првенствено беше фокусиран на наследниот стек распореден на физичките сервери. Затоа користењето на управувана услуга (вклучувајќи ги и мајсторите на Кубернетс) ги исполни нашите барања и ни овозможи да обучуваме тимови за работа со локални кластери.

Како резултат на тоа, можевме да започнеме да добиваме производствен сообраќај на инфраструктурата на Google Cloud само 6 месеци по почетокот на работата.

Сепак, и покрај бројните предности, работата со провајдер на облак е поврзана со одредени трошоци, кои може да се зголемат во зависност од оптоварувањето. Затоа внимателно ја анализиравме секоја управувана услуга што ја користевме, надевајќи се дека во иднина ќе ги имплементираме во просториите. Всушност, имплементацијата на локални кластери започна на крајот на 2016 година и во исто време беше иницирана хибридната стратегија.

Лансирање на локална платформа за оркестрација на контејнери Dailymotion

Есен 2016 година

Во услови кога целиот стек беше подготвен за производство, и работеше на API продолжи, време беше да се концентрираме на регионалните кластери.

Во тоа време, корисниците гледаа повеќе од 3 милијарди видеа секој месец. Се разбира, веќе многу години имаме сопствена широка мрежа за испорака на содржина. Сакавме да ја искористиме оваа околност и да распоредиме кластери Kubernetes во постоечките центри за податоци.

Инфраструктурата на Dailymotion се состоеше од повеќе од 2,5 илјади сервери во шест центри за податоци. Сите тие се конфигурирани со помош на Saltstack. Почнавме да ги подготвуваме сите потребни рецепти за создавање јазли на мајстор и работник, како и кластер за итн.

Kubernetes авантура Dailymotion: создавање инфраструктура во облаците + во просториите

Мрежен дел

Нашата мрежа е целосно рутирана. Секој сервер ја рекламира својата IP на мрежата користејќи Exabgp. Споредивме неколку мрежни приклучоци и единствениот што ги задоволи сите потреби (поради користениот пристап L3) беше Американ. Совршено се вклопува во постоечкиот модел на мрежна инфраструктура.

Бидејќи сакавме да ги користиме сите достапни инфраструктурни елементи, првото нешто што требаше да направиме беше да ја откриеме нашата домашна мрежна алатка (се користи на сите сервери): користете ја за рекламирање опсег на IP адреси на мрежата со јазли на Kubernetes. Дозволивме Calico да доделува IP адреси на pods, но не го користевме и сè уште не го користиме за BGP сесии на мрежна опрема. Всушност, со рутирањето управува Exabgp, кој ги рекламира подмрежите што ги користи Calico. Ова ни овозможува да стигнеме до која било подлога од внатрешната мрежа (а особено од балансирачите на оптоварување).

Како управуваме со влезниот сообраќај

За да се пренасочат дојдовните барања до саканата услуга, беше одлучено да се користи Ingress Controller поради неговата интеграција со ресурсите за влез на Kubernetes.

Пред три години, nginx-ingress-controller беше најзрелиот контролер: Nginx беше околу долго време и беше познат по својата стабилност и перформанси.

Во нашиот систем, решивме да ги поставиме контролерите на посветени 10-гигабитни blade сервери. Секој контролер беше поврзан со крајната точка на кубе-аписерверот на соодветниот кластер. Овие сервери користеа и Exabgp за рекламирање јавни или приватни IP адреси. Нашата мрежна топологија ни овозможува да користиме BGP од овие контролери за да го насочиме целиот сообраќај директно до подовите без да користиме услуга како NodePort. Овој пристап помага да се избегне хоризонтален сообраќај помеѓу јазлите и ја подобрува ефикасноста.

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 кластери се конфигурирани за автоматско мерење со помош на Прилагодена метрика, тие се зголемуваат/намалуваат врз основа на дојдовниот сообраќај.

Во нормален режим, целиот регионален сообраќај е насочен кон локалниот кластер, а GKE служи како резерва во случај на проблеми (здравствените проверки се вршат преку рутата 53).

...

Во иднина, сакаме целосно да ги автоматизираме политиките за рутирање за да постигнеме автономна хибридна стратегија која постојано ја подобрува пристапноста за корисниците. Позитивната страна е што трошоците за облак се значително намалени, а времето на одговор на API е дури и намалено. Ние веруваме на добиената облак платформа и подготвени сме да пренасочиме повеќе сообраќај кон неа доколку е потребно.

PS од преведувач

Можеби ќе ве интересира уште една неодамнешна објава на Dailymotion за Kubernetes. Тој е посветен на распоредувањето на апликации со Helm на многу кластери на Kubernetes и беше објавено пред околу еден месец.

Прочитајте и на нашиот блог:

Извор: www.habr.com

Додадете коментар