Production-npaj duab rau k8s

Zaj dab neeg no yog hais txog yuav ua li cas peb siv cov ntim hauv ib puag ncig tsim khoom, tshwj xeeb Kubernetes. Cov kab lus no mob siab rau kev sau cov metrics thiab cav los ntawm cov thawv, nrog rau kev tsim cov duab.

Production-npaj duab rau k8s

Peb yog los ntawm lub tuam txhab fintech Exness, uas tsim cov kev pabcuam rau kev lag luam online thiab fintech khoom rau B2B thiab B2C. Peb R & D muaj ntau pab pawg sib txawv, lub tuam tsev loj hlob muaj 100+ tus neeg ua haujlwm.

Peb sawv cev rau pab pawg uas yog lub luag haujlwm rau lub platform rau peb cov neeg tsim khoom los sau thiab khiav cov lej. Tshwj xeeb, peb muaj lub luag haujlwm rau kev sau, khaws cia thiab tshaj tawm cov ntsuas ntsuas, cov cav, thiab cov xwm txheej los ntawm cov ntawv thov. Peb tam sim no ua haujlwm kwv yees li peb txhiab Docker ntim hauv ib puag ncig tsim khoom, tswj hwm peb 50 TB cov ntaub ntawv loj khaws cia, thiab muab cov kev daws teeb meem uas tsim nyob ib puag ncig peb cov kev tsim kho vaj tsev: Kubernetes, Rancher, thiab ntau lub chaw pabcuam huab cua. 

Peb qhov kev txhawb siab

Dab tsi yog kub? Tsis muaj leej twg teb tau. Lub hearth nyob qhov twg? Nws nyuaj rau kev nkag siab. Thaum twg nws ntes tau hluav taws? Koj tuaj yeem nrhiav tau, tab sis tsis tam sim ntawd. 

Production-npaj duab rau k8s

Vim li cas qee lub thawv sawv ntsug thaum lwm tus tau poob? Lub thawv twg raug liam? Tom qab tag nrho, sab nraud ntawm lub thawv yog tib yam, tab sis sab hauv txhua tus muaj nws tus kheej Neo.

Production-npaj duab rau k8s

Peb cov neeg tsim khoom yog cov neeg muaj peev xwm. Lawv ua cov kev pabcuam zoo uas coj tau nyiaj rau lub tuam txhab. Tab sis muaj kev ua tsis tiav thaum ntim nrog cov ntawv thov mus yuam kev. Ib lub thawv siv CPU ntau dhau, lwm tus siv lub network, ib feem peb siv I / O kev ua haujlwm, thiab qhov thib plaub tsis paub meej tias nws ua li cas nrog cov khoom siv. Nws tag nrho ntog thiab lub nkoj tog. 

Cov neeg sawv cev

Kom nkag siab tias muaj dab tsi tshwm sim hauv, peb txiav txim siab tso cov neeg sawv cev ncaj qha rau hauv cov thawv.

Production-npaj duab rau k8s

Cov neeg sawv cev no yog txwv cov kev pabcuam uas khaws cov thawv ntim hauv lub xeev kom lawv tsis txhob sib tsoo. Cov neeg sawv cev yog tus qauv, thiab qhov no tso cai rau txoj hauv kev rau kev pabcuam ntim khoom. 

Hauv peb qhov xwm txheej, cov neeg sawv cev yuav tsum muab cov ntawv teev npe hauv cov qauv qauv, tagged thiab throttled. Lawv kuj yuav tsum muab peb cov qauv ntsuas ntsuas uas txuas ntxiv tau los ntawm kev xav txog kev lag luam.

Cov neeg sawv cev kuj txhais tau tias cov khoom siv rau kev ua haujlwm thiab kev saib xyuas uas tuaj yeem ua haujlwm hauv cov tshuab orchestration sib txawv uas txhawb cov duab sib txawv (Debian, Alpine, Centos, thiab lwm yam).

Thaum kawg, cov neeg sawv cev yuav tsum txhawb nqa yooj yim CI / CD uas suav nrog Docker cov ntaub ntawv. Txwv tsis pub, lub nkoj yuav poob sib nrug, vim hais tias cov thawv yuav pib xa nrog "crooked" rails.

Tsim cov txheej txheem thiab phiaj duab ntaus ntawv

Txhawm rau ua kom txhua yam qauv thiab tswj tau, qee yam txheej txheem tsim yuav tsum tau ua raws. Yog li ntawd, peb txiav txim siab los sau cov thawv los ntawm ntim - qhov no yog recursion.

Production-npaj duab rau k8s

Ntawm no cov thawv yog sawv cev los ntawm cov txheej txheem khoom. Nyob rau tib lub sijhawm, lawv txiav txim siab muab cov khoom faib rau hauv lawv kom "lub neej tsis zoo li raspberries." Vim li cas qhov no tau ua tiav, peb yuav piav qhia hauv qab no.
 
Qhov tshwm sim yog cov cuab yeej tsim-ib lub thawv tshwj xeeb uas hais txog cov kev faib tawm tshwj xeeb thiab cov ntawv sau tshwj xeeb.

Peb siv nws li cas? Peb muaj Docker Hub uas muaj lub thawv. Peb tsom nws hauv peb lub cev kom tshem tawm cov kev vam khom sab nraud. Qhov tshwm sim yog lub thawv uas cim daj. Peb tsim ib tug qauv rau nruab tag nrho cov kev faib thiab cov ntawv peb xav tau rau hauv lub thawv. Tom qab ntawd, peb sib sau ua ke cov duab npaj siv: cov neeg tsim khoom tso cai thiab qee qhov ntawm lawv tus kheej tshwj xeeb nyob rau hauv nws. 

Dab tsi yog qhov zoo ntawm txoj hauv kev no? 

  • Ua ntej, tag nrho version tswj ntawm cov cuab yeej tsim - tsim cov thawv, tsab ntawv thiab cov ntawv xa tawm. 
  • Qhov thib ob, peb tau ua tiav cov qauv: peb tsim cov qauv, nruab nrab thiab npaj-rau-siv duab tib yam. 
  • Thib peb, cov thawv ntim khoom muab rau peb nqa tau yooj yim. Niaj hnub no peb siv Gitlab, thiab tag kis peb yuav hloov mus rau TeamCity lossis Jenkins thiab peb yuav tuaj yeem khiav peb cov thawv rau tib txoj kev. 
  • Plaub, txo qis kev vam khom. Nws tsis yog qhov xwm txheej uas peb muab cov khoom siv faib rau hauv lub thawv, vim qhov no tso cai rau peb kom tsis txhob rub tawm hauv Is Taws Nem txhua zaus. 
  • Fifthly, kev tsim ceev tau nce - lub xub ntiag ntawm cov ntawv luam ntawm cov duab tso cai rau koj kom tsis txhob nkim sij hawm ntawm kev rub tawm, vim tias muaj cov duab hauv zos. 

Hauv lwm lo lus, peb tau ua tiav cov txheej txheem tswj thiab hloov tau yooj yim. Peb siv tib cov cuab yeej los tsim cov thawv ntim puv nkaus. 

Peb cov txheej txheem tsim ua haujlwm li cas

Production-npaj duab rau k8s

Lub rooj sib txoos yog launched nrog ib tug hais kom ua, cov txheej txheem yog ua nyob rau hauv daim duab (highlighted nyob rau hauv liab). Tus tsim tawm muaj Docker cov ntaub ntawv (qhov tseem ceeb hauv daj), peb muab nws, hloov pauv hloov pauv nrog cov txiaj ntsig. Thiab raws li peb ntxiv headers thiab footers - cov no yog peb cov neeg sawv cev. 

Header ntxiv kev faib tawm los ntawm cov duab sib thooj. Thiab footer txhim kho peb cov kev pabcuam sab hauv, teeb tsa lub sijhawm ua haujlwm, kev txiav txim siab thiab lwm tus neeg sawv cev, hloov chaw nkag, thiab lwm yam. 

Production-npaj duab rau k8s

Peb xav ntev ntev seb puas yuav nruab ib tus saib xyuas. Thaum kawg, peb txiav txim siab tias peb xav tau nws. Peb xaiv S6. Tus neeg saib xyuas muab kev tswj lub thawv: tso cai rau koj txuas mus rau nws yog tias cov txheej txheem tseem ceeb cuam tshuam thiab muab kev tswj hwm lub thawv tsis tas yuav rov tsim dua. Cov cav thiab ntsuas yog cov txheej txheem khiav hauv lub thawv. Lawv kuj yuav tsum tau tswj hwm qee yam, thiab peb ua qhov no nrog kev pab los ntawm tus saib xyuas. Thaum kawg, S6 saib xyuas kev tu vaj tse, kev teeb tsa thiab lwm yam haujlwm.

Txij li thaum peb siv cov tshuab orchestration sib txawv, tom qab tsim thiab khiav, lub thawv yuav tsum nkag siab tias ib puag ncig nws nyob hauv thiab ua raws li qhov xwm txheej. Piv txwv li:
Qhov no tso cai rau peb los tsim ib daim duab thiab khiav nws nyob rau hauv txawv orchestration systems, thiab nws yuav tsum launched coj mus rau hauv tus account lub tshwj xeeb ntawm no orchestration system.

 Production-npaj duab rau k8s

Rau tib lub thawv peb tau txais cov txheej txheem sib txawv hauv Docker thiab Kubernetes:

Production-npaj duab rau k8s

Lub payload yog ua raws li kev saib xyuas ntawm S6. Ua tib zoo mloog rau cov neeg sau thiab cov xwm txheej - cov no yog peb cov neeg sawv cev lub luag haujlwm rau cov cav thiab ntsuas. Kubernetes tsis muaj lawv, tab sis Docker ua. Vim li cas? 

Yog tias peb saib ntawm qhov tshwj xeeb ntawm "pod" (tom qab no - Kubernetes pod), peb yuav pom tias cov xwm txheej ntim ntim tau raug tua hauv lub plhaub, uas muaj cov thawv ntim cais uas ua haujlwm ntawm kev sau cov ntsuas thiab cov cav. Peb tuaj yeem siv lub peev xwm ntawm Kubernetes: khiav ntim hauv ib lub pod, hauv ib txheej txheem thiab / lossis qhov chaw network. Tiag qhia koj tus neeg sawv cev thiab ua qee yam haujlwm. Thiab yog tias tib lub thawv tau qhib rau hauv Docker, nws yuav tau txais txhua lub peev xwm zoo ib yam li cov zis, uas yog, nws yuav muaj peev xwm xa cov cav thiab ntsuas, txij li cov neeg sawv cev yuav raug tso tawm sab hauv. 

Metrics thiab cav

Kev xa cov metrics thiab cav yog ib txoj haujlwm nyuaj. Muaj ntau yam ntawm nws qhov kev txiav txim siab.
Kev tsim kho vaj tse yog tsim rau kev ua tiav ntawm kev them nyiaj, thiab tsis yog rau kev xa khoom loj ntawm cov cav. Ntawd yog, cov txheej txheem no yuav tsum tau ua nrog cov khoom siv ntim tsawg kawg nkaus. Peb siv zog los pab peb cov neeg tsim khoom: "Tau ib lub thawv Docker Hub, khiav nws, thiab peb tuaj yeem xa cov cav." 

Qhov thib ob nam yog txwv qhov ntim ntawm cav. Yog tias muaj kev nce siab hauv qhov ntim ntawm cov cav ntoo tshwm sim hauv ntau lub thawv (daim ntawv thov tso tawm ib pawg-txheej nyob rau hauv lub voj), lub load ntawm CPU, kev sib txuas lus, thiab cov cav ua haujlwm nce, thiab qhov no cuam tshuam rau kev ua haujlwm ntawm tus tswv tsev. tag nrho thiab lwm yam ntim ntawm tus tswv tsev, ces qee zaum qhov no ua rau "poob" ntawm tus tswv tsev. 

Qhov thib peb nam yog tias nws yog ib qho tsim nyog los txhawb ntau txoj hauv kev sau cov metrics raws li ua tau tawm ntawm lub thawv. Los ntawm kev nyeem cov ntaub ntawv thiab pov npav Prometheus-qhov kawg mus rau kev siv cov txheej txheem tshwj xeeb.

Thiab qhov kawg nam yog kom txo cov peev txheej siv.

Peb tau xaiv qhov kev daws teeb meem qhib Go hu ua Telegraf. Qhov no yog ib qho kev sib txuas thoob ntiaj teb uas txhawb ntau tshaj 140 hom kev tawm tswv yim tawm tswv yim (cov tswv yim plugins) thiab 30 hom tso zis tawm (tso tawm plugins). Peb tau ua tiav nws thiab tam sim no peb yuav qhia koj seb peb siv nws li cas siv Kubernetes ua piv txwv. 

Production-npaj duab rau k8s

Cia peb hais tias tus tsim tawm xa cov haujlwm ua haujlwm thiab Kubernetes tau txais kev thov los tsim lub pod. Nyob rau lub sijhawm no, lub thawv hu ua Collector tau tsim rau txhua lub pod (peb siv kev hloov pauv webhook). Tus sau yog peb tus neeg sawv cev. Thaum pib, lub thawv no teeb tsa nws tus kheej los ua haujlwm nrog Prometheus thiab lub cav sau.

  • Ua li no, nws siv pod annotations, thiab nyob ntawm nws cov ntsiab lus, tsim, hais, Prometheus kawg-point; 
  • Raws li cov pod specification thiab cov thawv ntim tshwj xeeb, nws txiav txim siab yuav ua li cas xa cov cav.

Peb sau cov cav los ntawm Docker API: cov neeg tsim khoom tsuas yog xav tau muab tso rau hauv stdout lossis stderr, thiab Cov Sau yuav txheeb nws. Cov cav tau sau rau hauv chunks nrog qee qhov kev ncua kom tiv thaiv tau tus tswv tsev overload. 

Metrics yog sau los ntawm cov khoom ua haujlwm (cov txheej txheem) hauv cov thawv. Txhua yam yog tagged: namespace, nyob rau hauv, thiab hais txog, thiab ces hloov dua siab tshiab rau Prometheus hom - thiab yuav muaj nyob rau sau (tshwj tsis yog rau cov cav). Peb kuj xa cov cav, ntsuas thiab cov xwm txheej rau Kafka thiab ntxiv:

  • Cov cav muaj nyob rau hauv Graylog (rau kev tsom xam pom);
  • Cov ntawv teev lus, ntsuas, cov xwm txheej raug xa mus rau Clickhouse rau kev khaws cia ntev.

Txhua yam ua haujlwm zoo ib yam hauv AWS, tsuas yog peb hloov Graylog nrog Kafka nrog Cloudwatch. Peb xa cov cav mus rau ntawd, thiab txhua yam hloov pauv yooj yim heev: nws tam sim ntawd paub meej tias pawg twg thiab lub thawv lawv nyob. Tib yam muaj tseeb rau Google Stackdriver. Ntawd yog, peb lub tswv yim ua haujlwm ob qho tib si ntawm qhov chaw nrog Kafka thiab hauv huab. 

Yog tias peb tsis muaj Kubernetes nrog pods, lub tswv yim yog me ntsis nyuaj, tab sis nws ua haujlwm ntawm tib lub hauv paus ntsiab lus.

Production-npaj duab rau k8s

Cov txheej txheem tib yam raug tua hauv lub thawv, lawv tau orchestrated siv S6. Tag nrho cov txheej txheem tib yam yog khiav hauv tib lub thawv.

Thaum kawg

Peb tau tsim ib qho kev daws teeb meem rau kev tsim thiab tso tawm cov duab, nrog rau kev xaiv rau kev sau thiab xa cov cav thiab ntsuas:

  • Peb tau tsim ib txoj hauv kev rau kev sib sau cov duab, thiab raws li nws peb tsim CI templates;
  • Cov neeg sawv cev sau cov ntaub ntawv yog peb qhov txuas ntxiv Telegraf. Peb tau sim lawv zoo hauv kev tsim khoom;
  • Peb siv kev hloov pauv webhook los siv cov ntim nrog cov neeg sawv cev hauv cov pods; 
  • Kev koom ua ke rau hauv Kubernetes/Rancher ecosystem;
  • Peb tuaj yeem ua tiav tib lub ntim hauv cov tshuab orchestration sib txawv thiab tau txais cov txiaj ntsig peb xav tau;
  • Tsim kom muaj kev tswj hwm lub thawv ntim tag nrho. 

Co-author: Ilya Prudnikov

Tau qhov twg los: www.hab.com

Ntxiv ib saib