Шарҳ. тарҷума.: Қабули Kubernetes дар GitLab яке аз ду омили асосии мусоидат ба рушди ширкат ҳисобида мешавад. Бо вуҷуди ин, то ба наздикӣ, инфрасохтори хидматрасонии онлайнии GitLab.com дар мошинҳои виртуалӣ сохта шуда буд ва танҳо тақрибан як сол пеш муҳоҷирати он ба K8s оғоз ёфт, ки то ҳол анҷом наёфтааст. Мо бо камоли хушнудӣ тарҷумаи мақолаи ба наздикӣ нашршудаи муҳандиси GitLab SRE-ро дар бораи он, ки ин чӣ гуна рух медиҳад ва муҳандисони иштирокчии лоиҳа чӣ хулоса мебароранд, пешкаш мекунем.
Тақрибан як сол аст, ки шӯъбаи инфрасохтори мо ҳама хидматҳоеро, ки дар GitLab.com кор мекунанд, ба Kubernetes интиқол медиҳад. Дар ин муддат, мо на танҳо бо интиқоли хидматҳо ба Кубернетес, балки инчунин бо идоракунии ҷойгиркунии гибридӣ дар давраи гузариш ба мушкилот дучор шудем. Дарсҳои пурарзише, ки мо гирифтаем, дар ин мақола муҳокима хоҳанд шуд.
Аз ибтидои GitLab.com серверҳои он дар абр дар мошинҳои виртуалӣ кор мекарданд. Ин мошинҳои виртуалӣ аз ҷониби Chef идора карда мешаванд ва бо истифода аз мо насб карда мешаванд
Мо ин усулро истифода мебарем, зеро хеле муҳим аст, ки ҳамаи ғаму андӯҳҳо ва шодии аъзоёни оддии ҷомеа ҳангоми насб ва танзим кардани нусхаҳои GitLab аз сар мегузаронанд. Ин равиш чанд муддат хуб кор кард, аммо вақте ки шумораи лоиҳаҳо дар GitLab аз 10 миллион гузашт, мо фаҳмидем, ки он дигар ниёзҳои моро барои миқёс ва ҷойгиркунӣ қонеъ намекунад.
Қадамҳои аввал ба Kubernetes ва GitLab-и абрӣ
Лоиҳа дар соли 2017 таъсис дода шудааст
Талаба ба сӯи абрҳои ватанӣ ва Кубернетес ба муҳандисони мо имкон дод, ки гузариши тадриҷанро ба нақша гиранд, ки дар давоми он мо баъзе вобастагии барномаро аз нигаҳдории шабака тарк карда, ҳангоми идома додани таҳияи хусусиятҳои нав. Азбаски мо ба нақша гирифтани муҳоҷират дар тобистони соли 2019 оғоз кардем, бисёре аз ин маҳдудиятҳо ҳал карда шуданд ва раванди интиқоли GitLab.com ба Kubernetes ҳоло хуб идома дорад!
Хусусиятҳои GitLab.com дар Kubernetes
Барои GitLab.com, мо як кластери ягонаи минтақавии GKE-ро истифода мебарем, ки тамоми трафики барномаҳоро идора мекунад. Барои кам кардани мураккабии (аллакай душвор) муҳоҷират, мо ба хидматҳое таваҷҷӯҳ мекунем, ки ба нигаҳдории маҳаллӣ ё NFS такя намекунанд. GitLab.com базаи рамзии асосан монолитии Rails-ро истифода мебарад ва мо трафикро дар асоси хусусиятҳои сарбории корӣ ба нуқтаҳои гуногуни ниҳоӣ, ки дар ҳавзҳои гиреҳи худ ҷудо шудаанд, равона мекунем.
Дар мавриди фронтенд, ин намудҳо ба дархостҳо ба веб, API, Git SSH/HTTPS ва Реестр тақсим мешаванд. Дар мавриди пуштибонӣ, мо ҷойҳои корро дар навбат аз рӯи хусусиятҳои гуногун вобаста ба он тақсим мекунем
Ҳамаи ин хидматҳои GitLab.com бо истифода аз диаграммаи тағирнаёфтаи GitLab Helm танзим карда мешаванд. Конфигуратсия дар зерчартаҳо сурат мегирад, ки онҳоро ба таври интихобӣ фаъол кардан мумкин аст, зеро мо тадриҷан хидматҳоро ба кластер интиқол медиҳем. Гарчанде ки мо тасмим гирифтем, ки баъзе хидматҳои давлатии худро ба муҳоҷират дохил накунем, ба монанди Redis, Postgres, GitLab Pages ва Gitaly, истифодаи Kubernetes ба мо имкон медиҳад, ки шумораи VM-ро, ки ҳоло Chef идора мекунад, ба таври куллӣ кам кунем.
Намоиш ва идоракунии конфигуратсияи Kubernetes
Ҳама танзимотҳо аз ҷониби худи GitLab идора карда мешаванд. Барои ин се лоиҳаи конфигуратсия дар асоси Terraform ва Helm истифода мешаванд. Мо мекӯшем, ки то ҳадди имкон худи GitLab-ро истифода барем, аммо барои иҷрои вазифаҳои амалиётӣ мо насби алоҳидаи GitLab дорем. Ин барои боварӣ ҳосил кардан лозим аст, ки шумо ҳангоми ҷойгиркунӣ ва навсозии GitLab.com аз мавҷудияти GitLab.com вобаста набошед.
Гарчанде ки қубурҳои мо барои кластери Kubernetes дар насби алоҳидаи GitLab кор мекунанд, оинаҳои анбори кодҳо мавҷуданд, ки дар суроғаҳои зерин дастрасанд:
-
k8s-workloads/gitlab-com — Чаҳорчӯби конфигуратсияи GitLab.com барои диаграммаи GitLab Helm; -
k8s-борҳои корӣ/gitlab-helmfiles - Конфигуратсияҳоеро барои хидматҳое дар бар мегирад, ки мустақиман бо барномаи GitLab алоқаманд нестанд. Инҳо конфигуратсияҳо барои сабти ном ва мониторинги кластер, инчунин абзорҳои интегралӣ ба монанди PlantUML; -
Gitlab-com-инфраструктураи - Конфигуратсияи Terraform барои Kubernetes ва инфрасохтори меросии VM. Дар ин ҷо шумо тамоми захираҳои заруриро барои идора кардани кластер танзим мекунед, аз ҷумла худи кластер, ҳавзҳои гиреҳ, ҳисобҳои хидматӣ ва қайдҳои суроғаи IP.
При внесении изменений показывается общедоступное
Барои SRE, истинод ба фарқияти муфассал дар насби GitLab оварда мерасонад, ки барои истеҳсол истифода мешавад ва дастрасӣ ба он маҳдуд аст. Ин ба кормандон ва ҷомеа имкон медиҳад, ки бидуни дастрасӣ ба лоиҳаи амалиётӣ (ки танҳо барои SRE кушода аст) тағироти конфигуратсияи пешниҳодшударо бубинанд. Бо омезиши як мисоли ҷамъиятии GitLab барои код бо намунаи хусусӣ барои лӯлаҳои CI, мо ҷараёни кори ягонаро нигоҳ медорем ва мустақилиятро аз GitLab.com барои навсозиҳои конфигуратсия таъмин мекунем.
Он чизеро, ки мо дар вақти муҳоҷират дарёфтем
Ҳангоми ҳаракат, таҷрибае ба даст омад, ки мо ба муҳоҷират ва ҷойгиркунии нав дар Кубернетес муроҷиат мекунем.
1. Афзоиши хароҷот аз ҳисоби ҳаракати нақлиёт байни минтақаҳои дастрас
Омори ҳаррӯзаи баромад (байтҳо дар як рӯз) барои флоти анбори Git дар GitLab.com
Google шабакаи худро ба минтақаҳо тақсим мекунад. Онҳо, дар навбати худ, ба минтақаҳои дастрас (AZ) тақсим мешаванд. Хостинги Git бо миқдори зиёди маълумот алоқаманд аст, аз ин рӯ барои мо назорат кардани баромади шабака муҳим аст. Барои трафики дохилӣ, баромад танҳо дар сурате ройгон аст, ки он дар як минтақаи дастрас боқӣ монад. То замони ин навиштан, мо дар як рӯзи кори муқаррарӣ тақрибан 100 TB маълумотро пешниҳод мекунем (ва ин танҳо барои анбори Git аст). Хидматҳое, ки дар ҳамон мошинҳои маҷозӣ дар топологияи кӯҳнаи VM-и мо зиндагӣ мекарданд, ҳоло дар қуттиҳои гуногуни Kubernetes кор мекунанд. Ин маънои онро дорад, ки баъзе трафик, ки қаблан дар VM маҳаллӣ буд, эҳтимолан берун аз минтақаҳои дастрас сафар кунад.
Кластерҳои минтақавии GKE ба шумо имкон медиҳанд, ки минтақаҳои дастрасро барои зиёдатӣ фаро гиред. Мо имкониятро ба назар гирифта истодаем
2. Маҳдудиятҳо, дархостҳои захираҳо ва миқёс
Шумораи нусхаҳои коркарди трафики истеҳсолӣ дар registry.gitlab.com. Қуллаи трафик дар ~15:00 UTC.
Ҳикояи муҳоҷирати мо дар моҳи августи соли 2019 оғоз ёфт, вақте ки мо аввалин хидмати худ, Registry Container GitLab -ро ба Kubernetes интиқол додем. Ин хидмати аз ҷиҳати рисолати муҳим ва сердаромад интихоби хуб барои муҳоҷирати аввал буд, зеро он як барномаи бешаҳрвандӣ бо чанд вобастагии беруна мебошад. Мушкилоти аввалине, ки мо бо он дучор шудем, шумораи зиёди қуттиҳои хориҷшуда аз сабаби набудани хотира дар гиреҳҳо буд. Аз ин сабаб, мо маҷбур шудем, ки дархостҳо ва маҳдудиятҳоро тағир диҳем.
Муайян карда шуд, ки дар сурати барномае, ки истеъмоли хотира бо мурури замон зиёд мешавад, арзишҳои пасти дархостҳо (хотираи захира барои ҳар як подк) дар якҷоягӣ бо маҳдудияти сахти "саховатманд" дар истифода боиси сершавӣ гашт. (сершавӣ) гиреххо ва дарачаи баланди тахеил. Барои мубориза бо ин мушкилот, он буд
3. Метрикҳо ва гузоришҳо
Бахши инфрасохтор ба таъхир, сатҳи хатогиҳо ва сершавӣ бо насб тамаркуз мекунад
Дар давоми соли гузашта, яке аз рӯйдодҳои муҳим дар бахши инфрасохтор такмил додани мониторинг ва кор бо ИҶТ мебошад. SLO ба мо имкон дод, ки барои хидматҳои инфиродӣ ҳадафҳо гузорем, ки мо ҳангоми муҳоҷират бодиққат назорат мекардем. Аммо ҳатто бо ин беҳтар шудани мушоҳида, на ҳама вақт имконпазир аст, ки мушкилотро бо истифода аз ченакҳо ва огоҳиҳо фавран бинед. Масалан, бо тамаркуз ба таъхир ва сатҳи хатогиҳо, мо на ҳама ҳолатҳои истифодаи хидматеро, ки дар муҳоҷират қарор дорад, пурра фаро гирифта наметавонем.
Ин масъала қариб дарҳол пас аз интиқоли баъзе сарбории корӣ ба кластер ошкор карда шуд. Ин махсусан вақте шадид шуд, ки мо бояд функсияҳоро тафтиш кунем, ки шумораи дархостҳо барои онҳо кам буд, аммо вобастагии конфигуратсияи хеле мушаххас доштанд. Яке аз дарсҳои калидӣ аз муҳоҷират ин зарурати ба назар гирифтани на танҳо нишондиҳандаҳо ҳангоми мониторинг, балки гузоришҳо ва “думи дароз” буд. (ин дар бораи
Хизматрасонии якхела дархостҳо дар инфрасохтори кӯҳнаи VM ва инфрасохтори нави Кубернетес як мушкили беназиреро пеш овард. Баръакси муҳоҷирати лифт ва баст (интиқоли зуди барномаҳо "чунон ки ҳаст" ба инфрасохтори нав; тафсилоти бештарро хондан мумкин аст, масалан,
4. Гузаронидани трафик ба кластери нав
Барои GitLab.com, як қисми серверҳо ба он бахшида шудаанд
Дар мавриди муҳоҷират, ин маънои онро дорад, ки дархостҳо ба лоиҳаҳои дохилӣ аввал ба Кубернетес фиристода мешаванд ва сипас мо тадриҷан боқимондаи трафикро тавассути тағир додани вазни пуштибон тавассути HAProxy ба кластер мегузарем. Ҳангоми муҳоҷират аз VM ба Кубернетес маълум шуд, ки роҳи осони масири интиқоли трафик байни инфрасохтори кӯҳна ва нав хеле муфид аст ва мувофиқан инфрасохтори кӯҳна дар чанд рӯзи аввали пас аз муҳоҷират омода аст.
5. Иқтидорҳои захиравӣ ва истифодаи онҳо
Қариб дарҳол мушкилоти зерин муайян карда шуд: подкҳо барои хидмати Реестр зуд оғоз ёфтанд, аммо ба кор андохтани подкҳо барои Sidekiq то ҳадди имкон тӯл кашид.
Дар ин ҳолат, дарс ин буд, ки дар ҳоле ки Кубернетес 'Horizontal Pod Autoscaler (HPA) афзоиши трафикро хуб идора мекунад, муҳим аст, ки хусусиятҳои сарбории корро ба инобат гирифта, иқтидори эҳтиётиро ба поддонҳо тақсим кунем (хусусан вақте ки талабот нобаробар тақсим карда мешавад). Дар ҳолати мо, афзоиши ногаҳонии ҷойҳои корӣ ба амал омад, ки ба миқёси босуръат оварда расонд, ки пеш аз он ки мо барои васеъ кардани ҳавзи гиреҳ вақт пайдо кунем, ба сер шудани захираҳои CPU оварда расонд.
Ҳамеша васвасаи фишурдани ҳарчи бештар аз кластер вуҷуд дорад, аммо, ки дар аввал бо мушкилоти иҷроиш дучор шудем, мо ҳоло бо буҷаи саховатманд оғоз мекунем ва баъдтар онро кам карда, ба SLO-ҳо бодиққат нигоҳ мекунем. Ифтитоҳи pods барои хидмати Sidekiq ба таври назаррас суръат гирифт ва ҳоло ба ҳисоби миёна тақрибан 40 сонияро мегирад.
хулоса
Пас аз интиқоли ҳар як хидмат, мо аз бартариҳои истифодаи Kubernetes дар истеҳсол шод шудем: ҷобаҷогузории зудтар ва бехатари барномаҳо, миқёс ва тақсимоти самараноки захираҳо. Гузашта аз ин, бартариҳои муҳоҷират фаротар аз хидмати GitLab.com мебошанд. Ҳар як такмилдиҳии диаграммаи расмии Helm ба корбарони он манфиат меорад.
Умедворам, ки ба шумо достони моҷароҳои муҳоҷирати Кубернетес писанд омад. Мо интиқоли ҳама хидматҳои навро ба кластер идома медиҳем. Маълумоти иловагиро дар нашрияҳои зерин дастрас кардан мумкин аст:
- «
Чаро мо ба Кубернетес муҳоҷират мекунем? »; - «
GitLab.com дар Kubernetes »; -
Эпик дар бораи муҳоҷирати GitLab.com ба Kubernetes .
PS аз тарҷумон
Инчунин дар блоги мо хонед:
- «
3 сол бо Kubernetes дар истеҳсолот: ин аст он чизе ки мо мефаҳмем »; - «
10 хатогиҳои умумӣ ҳангоми истифодаи Kubernetes »; - «
Таърихҳои муваффақияти Кубернетес дар истеҳсолот. Қисми 3: GitHub »; - «
Гузариши Tinder ба Kubernetes ".
Манбаъ: will.com