Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Lebitso la ka ke Viktor Yagofarov, 'me ke ntse ke ntlafatsa sethala sa Kubernetes ho DomClick ke le mookameli oa nts'etsopele ea tekheniki sehlopheng sa Ops (ts'ebetso). Ke kopa ho bua ka sebopeho sa mekhoa ea rona ea Dev <-> Ops, likarolo tsa ho sebetsa e 'ngoe ea lihlopha tse kholo ka ho fetisisa tsa k8s Russia, hammoho le mekhoa ea DevOps / SRE eo sehlopha sa rona se e sebelisang.

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Sehlopha sa Ops

Sehlopha sa Ops hajoale se na le batho ba 15. Ba bararo ba bona ba ikarabella ofising, ba babeli ba sebetsa sebakeng se fapaneng sa nako mme ba fumaneha, ho kenyeletsoa le bosiu. Kahoo, motho e mong ea tsoang Ops o lula a le ka leihlong 'me a itokiselitse ho arabela ketsahalong efe kapa efe e rarahaneng. Ha re na lichifi tsa bosiu, tse bolokang kelello ea rona le ho fa bohle monyetla oa ho robala ka ho lekaneng le ho qeta nako ea boikhathollo eseng feela k'homphieutheng.

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Motho e mong le e mong o na le litsebo tse fapaneng: li-networker, li-DBA, litsebi tsa li-stack tsa ELK, li-admin/bahlahisi ba Kubernetes, ho beha leihlo, ho tsebahatsa, litsebi tsa hardware, joalo-joalo. Ntho e le 'ngoe e kopanya motho e mong le e mong - motho e mong le e mong a ka nkela mang kapa mang oa rona sebaka ho isa bohōleng bo itseng: ho etsa mohlala, hlahisa li-node tse ncha sehlopheng sa k8s, ntlafatsa PostgreSQL, ngola pipeline ea CI/CD + Ansible, automate ho hong ho Python/Bash/Go, hokela hardware ho. Setsi sa data. Bokhoni bo matla sebakeng sefe kapa sefe ha bo u thibele ho fetola tsela eo u e etsang le ho qala ho ntlafatsa sebakeng se seng. Mohlala, ke ile ka kena k'hamphaning ke le setsebi sa PostgreSQL, 'me joale karolo ea ka ea mantlha ea boikarabello ke lihlopha tsa Kubernetes. Sehlopheng, bophahamo leha e le bofe bo amoheleha 'me boikutlo ba ho sebelisa matla bo tsoetse pele haholo.

Ka tsela, re ntse re tsoma. Litlhokahalo ho bakhethoa li maemong a holimo. Ka boeena, ke habohlokoa ho 'na hore motho a kenelle sehlopheng, ha a na likhohlano, empa hape o tseba ho sireletsa maikutlo a hae, o batla ho ntshetsa pele mme ha a tšabe ho etsa ntho e ncha,' me o fana ka maikutlo a hae. Hape, litsebo tsa mananeo a lipuo tsa ho ngola, tsebo ea metheo ea Linux le Senyesemane lia hlokahala. Senyesemane se hlokahala feela hore motho ha a le fakap a khone ho google tharollo ea bothata ka metsotsoana e 10, eseng ka metsotso e 10. Hona joale ho thata haholo ho fumana litsebi tse nang le tsebo e tebileng ea Linux: hoa qabola, empa batho ba babeli ho ba bararo ha ba khone ho araba potso "Karolelano ea Mojaro ke Eng? E entsoe ka eng?", 'Me potso "Joang ho bokella thotobolo ea mantlha ho tsoa lenaneong la C" e nkoa e le ntho e tsoang lefats'eng la supermen ... kapa li-dinosaurs. Re tlameha ho mamella sena, kaha hangata batho ba na le litsebo tse ling tse tsoetseng pele haholo, empa re tla ruta Linux. Karabo ea potso e reng "ke hobane'ng ha moenjiniere oa DevOps a hloka ho tseba sena sohle lefatšeng la kajeno la maru" e tla tlameha ho siuoa ka ntle ho sebaka sa sehlooho, empa ka mantsoe a mararo: sena sohle sea hlokahala.

Lisebelisoa tsa Sehlopha

Sehlopha sa Tools se bapala karolo ea bohlokoa ho automation. Mosebetsi oa bona o ka sehloohong ke ho theha lisebelisoa tse bonolo tsa graphical le CLI bakeng sa bahlahisi. Mohlala, Confer ea rona ea nts'etsopele ea kahare e u lumella ho kenya ts'ebeliso ho Kubernetes ka ho penya litoeba tse 'maloa feela, ho hlophisa lisebelisoa tsa eona, linotlolo tse tsoang ho vault, joalo-joalo. Nakong e fetileng, ho ne ho e-na le Jenkins + Helm 2, empa ke ile ka tlameha ho iketsetsa sesebelisoa sa ka sa ho tlosa kopi-peista le ho tlisa ho tšoana ho lifecycle ea software.

Sehlopha sa Ops ha se ngolle liphaephe bakeng sa batho ba ntlafatsang, empa se ka eletsa litabeng leha e le life tse ngotsoeng (batho ba bang ba ntse ba e-na le Helm 3).

Li-DevOps

Ha e le DevOps, re e bona tjena:

Lihlopha tsa Dev li ngola khoutu, li e ntše ka Confer to dev -> qa/stage -> prod. Boikarabello ba ho etsa bonnete ba hore khoutu ha e khoehlise ebile ha e na liphoso ke lihlopha tsa Dev le Ops. Motšehare, motho ea sebetsang ho tsoa sehlopheng sa Ops o lokela ho qala ka ho arabela ketsahalong e nang le kopo ea hae, 'me mantsiboea le bosiu, molaoli ea sebetsang (Ops) o lokela ho tsosa moqapi oa mosebetsi haeba a tseba. bonnete ba hore bothata ha bo teng ka har'a lisebelisoa. Melemo le litlhokomeliso tsohle tse shebiloeng li hlaha ka bohona kapa ka mokhoa o ikhethileng.

Sebaka sa boikarabello sa Ops se qala ho tloha ha kopo e qala ho hlahisoa, empa boikarabello ba Dev ha bo felle moo - re etsa ntho e ts'oanang 'me re ka sekepeng se le seng.

Bahlahisi ba eletsa batsamaisi haeba ba hloka thuso ea ho ngola microservice ea tsamaiso (mohlala, Go backend + HTML5), 'me batsamaisi ba eletsa ba ntlafatsang ka litaba tsa litšebeletso tsa motheo kapa litaba tse amanang le k8s.

Ka tsela, ha re na monolith ho hang, ke li-microservices feela. Palo ea tsona ho fihlela joale e ntse e fetoha lipakeng tsa 900 le 1000 sehlopheng sa prod k8s, haeba e lekantsoe ka palo. deployments. Palo ea li-pods e fetoha pakeng tsa 1700 le 2000. Hona joale ho na le li-pods tse ka bang 2000 sehlopheng sa lihlahisoa.

Ha ke khone ho fana ka linomoro tse hlakileng, kaha re beha leihlo li-microservices tse sa hlokahaleng ebe re li khaola ka bohona. K8s e re thusa ho boloka tlaleho ea mekhatlo e sa hlokahaleng sesebedisoa se se nang thuso, e bolokang lisebelisoa le chelete e ngata.

Tsamaiso ea lisebelisoa

Tlhokomelo

Tlhokomelo e hlophisitsoeng hantle le e nang le tsebo e fetoha motheo oa ts'ebetso ea sehlopha se seholo. Ha re e-so fumane tharollo e akaretsang e ka koahelang 100% ea litlhoko tsohle tsa ho beha leihlo, kahoo nako le nako re theha litharollo tse fapaneng tsa moetlo tikolohong ena.

  • Zabbix. Tlhokomelo e ntle ea khale, e reretsoeng haholo-holo ho latela maemo a kakaretso a lisebelisoa. E re bolella ha node e shoa mabapi le ts'ebetso, memori, disks, marang-rang, joalo-joalo. Ha ho letho le phahametseng tlhaho, empa re boetse re na le DaemonSet e arohaneng ea baemeli, ka thuso ea eona, ka mohlala, re lekola boemo ba DNS sehlopheng: re batla li-pods tse hlokang kelello tsa coredns, re hlahloba ho fumaneha ha mabotho a ka ntle. Ho ka bonahala eka ke hobane'ng ha u tšoenyehile ka sena, empa ka bongata bo boholo ba sephethephethe karolo ena ke ntlha e tebileng ea ho hlōleha. Ke se ke ntse ke hlalositsoe, kamoo ke ileng ka loana le ts'ebetso ea DNS sehlopheng.
  • Moemeli oa Prometheus. Sehlopha sa barekisi ba fapaneng se fana ka kakaretso e kholo ea likarolo tsohle tsa sehlopha. Ka mor'a moo, re bona tsena tsohle ka mahlo a kelello ho li-dashboards tse kholo tsa Grafana, 'me re sebelisa alertmanager bakeng sa litlhokomeliso.

Sesebelisoa se seng sa bohlokoa ho rona e ne e le lenane-kenyeletso. Re e ngotse ka mor'a makhetlo a 'maloa re ile ra kopana le boemo boo sehlopha se seng se neng se feta litsela tsa Ingress tsa sehlopha se seng, se bakang liphoso tse 50x. Hona joale pele ba romela tlhahiso, bahlahisi ba hlahloba hore ha ho motho ea tla ameha, 'me bakeng sa sehlopha sa ka sena ke sesebelisoa se setle sa tlhahlobo ea pele ea mathata le Ingresses. Hoa makatsa hore ebe qalong e ne e ngoletsoe li-admins 'me e ne e shebahala e le "bohlasoa", empa ka mor'a hore lihlopha tsa dev li ratane le sesebelisoa, li ile tsa fetoha haholo' me tsa qala ho shebahala li sa tšoane le "mookameli o entse sefahleho sa marang-rang bakeng sa batsamaisi. ” Haufinyane re tla lahla sesebelisoa sena mme maemo a joalo a tla netefatsoa le pele peipi e qala.

Lisebelisoa tsa sehlopha ho Cube

Pele re kena mehlaleng, ho bohlokoa ho hlalosa hore na re abela lisebelisoa joang microservices.

Ho utloisisa hore na ke lihlopha life le hore na li sebelisa bokae lisebelisoa (processor, memori, SSD ea lehae), re fana ka taelo e 'ngoe le e' ngoe ea eona namespace ho "Cube" le ho fokotsa bokhoni ba eona bo phahameng ka ho fetisisa mabapi le processor, memori le disk, kaha ba kile ba buisana ka litlhoko tsa lihlopha. Ka hona, taelo e le 'ngoe, ka kakaretso, e ke ke ea thibela sehlopha sohle bakeng sa ho romelloa, ho fana ka li-cores tse likete le li-terabytes tsa memori. Ho fihlella sebaka sa mabitso ho fanoa ka AD (re sebelisa RBAC). Libaka tsa mabitso le meeli ea tsona li eketsoa ka kopo ea ho hula sebakeng sa polokelo ea GIT, ebe ntho e 'ngoe le e' ngoe e phuthoa ka bo eona ka phala ea Ansible.

Mohlala oa ho abela sehlopha lisebelisoa:

namespaces:

  chat-team:
    pods: 23
    limits:
      cpu: 11
      memory: 20Gi
    requests:
      cpu: 11
      memory: 20Gi

Likopo le meeli

Khubetsa" Request ke palo ea lisebelisoa tse tiisitsoeng tse boloketsoeng bakeng sa poto (sejana se le seng kapa ho feta) ka har'a sehlopha. Moeli ke boholo bo sa tiisetsoeng. Hangata u ka bona lirapeng hore na sehlopha se seng se ipehetse likopo tse ngata haholo bakeng sa lits'ebetso tsohle tsa sona 'me ha se khone ho kenya kopo ho "Cube", kaha likōpo tsohle tlas'a sebaka sa bona sa mabitso li se li "sentsoe".

Tsela e nepahetseng ea ho tsoa boemong bona ke ho sheba tšebeliso ea sebele ea lisebelisoa le ho e bapisa le chelete e kopiloeng (Kopo).

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000
Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Lits'oants'ong tse kaholimo u ka bona hore li-CPU tse "Kopiloeng" li tsamaellana le palo ea 'nete ea likhoele,' me Meeli e ka feta palo ea 'nete ea likhoele tsa CPU =)

Joale ha re shebeng sebaka sa mabitso ka botlalo (ke khethile sebaka sa mabitso kube-system - sebaka sa mabitso sa sistimi bakeng sa likarolo tsa "Cube" ka boeona) 'me re bone karo-karolelano ea nako ea processor e hlileng e sebelisitsoeng le mohopolo ho ea kopiloeng:

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Ho hlakile hore memori e mengata le CPU e boloketsoe lits'ebeletso tsa sistimi ho feta kamoo e hlileng e sebelisoang. Tabeng ea tsamaiso ea kube-system, sena se nepahetse: ho ile ha etsahala hore molaoli oa nginx ingress kapa nodelocaldns tlhōrōng ea bona e otla CPU 'me e je RAM e ngata, kahoo mona polokelo e joalo e nepahetse. Ho feta moo, re ke ke ra itšetleha ka lichate bakeng sa lihora tse 3 tse fetileng: ke ntho e lakatsehang ho bona metrics ea nalane ka nako e telele.

Ho ile ha qaptjoa tsamaiso ea "likhothaletso". Ka mohlala, mona u ka bona hore na ke lisebelisoa life tse ka bang molemo ho phahamisa "meeli" (e ka holimo e lumelletsoeng bar) e le hore "ho senya" ho se ke ha etsahala: nako eo mohloli o seng o sebelisitse CPU kapa mohopolo nakong e behiloeng le e emetse ho fihlela e "sa hatelle":

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Mona ke li-pods tse lokelang ho fokotsa takatso ea tsona:

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

ka throttling + ho lekola lisebelisoa, o ka ngola sengoloa se fetang se le seng, kahoo botsa lipotso maikutlong. Ka mantsoe a seng makae, nka re mosebetsi oa ho iketsetsa metrics e joalo o thata haholo mme o hloka nako e ngata le ho leka-lekanya ketso le "fensetere" mesebetsi le "CTE" Prometheus / VictoriaMetrics (mantsoe ana a qotsitsoe, kaha ho na le hoo e ka bang ha ho letho le kang lena ho PromQL, 'me u tlameha ho arola lipotso tse tšosang ka li-skrini tse' maloa tsa mongolo le ho li ntlafatsa).

Ka lebaka leo, bahlahisi ba na le lisebelisoa tsa ho beha leihlo libaka tsa bona tsa mabitso ho Cube, 'me ba khona ho ikhethela hore na ke hokae le ka nako efe eo lisebelisoa li ka "khaoloang," le hore na ke lisebelisoa life tse ka fuoang CPU eohle bosiu bohle.

Mekhoa

Khamphaning joalo ka ha e le teng hona joale fesheneng, re khomarela DevOps- le SEL- setsebi Ha k'hamphani e na le li-microservices tse 1000, bahlahisi ba ka bang 350 le li-admins tse 15 bakeng sa lisebelisoa tsohle, u tlameha ho "ba fesheneng": ka morao ho "baswords" tsena kaofela ho na le tlhokahalo e potlakileng ea ho iketsetsa ntho e 'ngoe le e' ngoe le bohle, 'me li-admins ha lia lokela ho ba bothata. ka mekhoa.

Joalo ka Ops, re fana ka metrics le li-dashboard tse fapaneng bakeng sa bahlahisi ba amanang le litefiso tsa karabelo ea lits'ebeletso le liphoso.

Re sebelisa mekhoa e joalo: RED, SEBELISA и Lipontšo Tsa Khautaka ho di kopanya mmoho. Re leka ho fokotsa palo ea li-dashboards e le hore ha u habanya feela ho hlake hore na ke tšebeletso efe e ntseng e nyenyefatsa hona joale (mohlala, li-code codes ka motsotsoana, nako ea ho arabela ka 99th percentile), joalo-joalo. Hang ha metrics e meng e ncha e hlokahala bakeng sa li-dashboards tse akaretsang, re li taka hanghang ebe rea li eketsa.

Ke na le khoeli ke sa toroe kerafo. Mohlomong ena ke sesupo se setle: ho bolela hore boholo ba "batla" bo se bo phethahetse. Ho ile ha etsahala hore har'a beke ke toroe kerafo e ncha bonyane hang ka letsatsi.

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000

Sephetho se bohlokoa hobane hona joale bahlahisi ha ba ee ho balaoli ka lipotso "moo ba ka shebang mofuta o itseng oa metric."

Ts'ebetsong Mesh ea tšebeletso e haufi le sekhutlo 'me e lokela ho nolofaletsa motho e mong le e mong bophelo, basebetsi-'moho le lisebelisoa ba se ba ntse ba le haufi le ho kenya ts'ebetsong "Istio ea motho ea phetseng hantle": potoloho ea bophelo ea kopo e' ngoe le e 'ngoe ea HTTP e tla bonahala ka ho beha leihlo, 'me e tla lula e khona ho utloisisa "ka nako efe ntho e 'ngoe le e' ngoe e ile ea robeha" nakong ea litšebelisano tsa litšebeletso (eseng feela). Ingolise ho litaba tse tsoang ho DomClick hub. =)

Tšehetso ea litšebeletso tsa motheo tsa Kubernetes

Ho latela nalane, re sebelisa mofuta o patiloeng Hobespray - Karolo e loketseng ea ho tsamaisa, ho holisa le ho ntlafatsa Kubernetes. Ka nako e 'ngoe, ts'ehetso ea lits'ebetso tseo e seng tsa kubeadm e ile ea khaoloa lekaleng le leholo, mme ts'ebetso ea ho fetohela ho kubeadm e ne e sa rereloa. Ka lebaka leo, k'hamphani ea Southbridge e iketselitse fereko ea eona (ka tšehetso ea kubeadm le tokiso e potlakileng bakeng sa mathata a bohlokoa).

Mokhoa oa ho nchafatsa lihlopha tsohle tsa k8s o shebahala tjena:

  • Nka Hobespray ho tsoa Southbridge, hlahloba khoele ea rona, Merjim.
  • Re ntse re hlahisa apdeite ho Khatello ea Kelello- "Cube".
  • Re hlahisa ntjhafatso e le 'ngoe ka nako (ho Ansible sena ke "serial: 1") ho Dev- "Cube".
  • Rea ntlafatsa prod ka Moqebelo mantsiboea node e le 'ngoe ka nako.

Ho na le merero ea ho e nkela sebaka nakong e tlang Hobespray bakeng sa ntho e potlakileng mme o ye ho kubeadm.

Ka kakaretso re na le "Cubes" tse tharo: Stress, Dev le Prod. Re rera ho qala e 'ngoe (standby e chesang) Prod-"Cube" setsing sa bobeli sa data. Khatello ea Kelello и Dev phela ka "mechineng ea sebele" (oVirt for Stress le VMWare cloud for Dev). prod- "Cube" e phela ka "tšepe e se nang letho": tsena ke li-node tse tšoanang tse nang le likhoele tse 32 tsa CPU, 64-128 GB ea memori le 300 GB SSD RAID 10 - ho na le tse 50 ka kakaretso. Li-node tse tharo tse "tšesaane" li nehetsoe ho "masters" prod- "Cuba": 16 GB ea memori, likhoele tse 12 tsa CPU.

Bakeng sa thekiso, re khetha ho sebelisa "tšepe e se nang letho" le ho qoba likarolo tse sa hlokahaleng tse kang OpenStack: ha re hloke "baahelani ba lerata" le CPU utsoa nako. 'Me ho rarahana ha tsamaiso ho batla ho imena habeli tabeng ea OpenStack ka tlung.

Bakeng sa CI/CD "Cubic" le likarolo tse ling tsa litšebeletso tsa motheo re sebelisa seva se arohaneng sa GIT, Helm 3 (e ne e le phetoho e bohloko ho tloha Helm 2, empa re thabile haholo ka likhetho. atomiki), Jenkins, Ansible le Docker. Re rata makala a likarolo le ho isoa libakeng tse fapaneng ho tloha polokelong e le 'ngoe.

fihlela qeto e

Kubernetes ho DomClick: mokhoa oa ho robala ka khotso ho laola sehlopha sa li-microservices tse 1000
Sena ke, ka kakaretso, hore na ts'ebetso ea DevOps e shebahala joang ho DomClick ho latela pono ea moenjiniere oa ts'ebetso. Sengoliloeng se ile sa fetoha se seng sa botekgeniki ho feta kamoo ke neng ke lebelletse: ka hona, latela litaba tsa DomClick ho Habré: ho tla ba le lingoliloeng tse "hardcore" tse mabapi le Kubernetes le tse ling.

Source: www.habr.com

Eketsa ka tlhaloso