Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

Ko Viktor Yagofarov toku ingoa, kei te whakawhanake ahau i te papa Kubernetes i DomClick hei kaiwhakahaere whanaketanga hangarau i roto i te roopu Ops (mahi). E hiahia ana ahau ki te korero mo te hanganga o to maatau Dev <-> Ops tukanga, nga ahuatanga o te whakahaere i tetahi o nga kohinga k8s nui rawa atu i Russia, me nga mahi DevOps/SRE e whakamahia ana e to taatau roopu.

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

Ops Team

I tenei wa 15 nga tangata o te roopu Ops. Tokotoru o ratou he kawenga mo te tari, tokorua e mahi ana i te waahi rerekee, kei te waatea, tae atu ki te po. No reira, ko tetahi mai i Ops kei te aro turuki i nga wa katoa me te reri ki te whakautu ki tetahi maiki o nga uauatanga. Karekau he huringa po, e tiaki ana i to tatou hinengaro me te whai waahi ki nga tangata katoa kia nui te moe me te noho waatea ehara i te rorohiko anake.

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

He rereke nga pukenga o ia tangata: nga whatunga, nga DBA, nga tohunga taapu ELK, nga kaiwhakahaere / kaiwhakawhanake Kubernetes, te aroturuki, te mariko, nga tohunga taputapu, me era atu. Kotahi te mea e whakakotahi ana i nga tangata katoa - ka taea e te katoa te whakakapi tetahi o tatou ki tetahi waahanga: hei tauira, whakauru i nga pona hou ki roto i te k8s tautau, whakahou i te PostgreSQL, tuhia he paipa CI/CD + Ansible, whakaaunoa i tetahi mea ki te Python/Bash/Go, hono taputapu ki Pokapū raraunga. Ko nga pukenga kaha i roto i nga waahi katoa e kore e aukati i a koe ki te whakarereke i to huarahi mahi me te tiimata ki te whakapai ake i etahi atu waahi. Hei tauira, i uru atu ahau ki tetahi kamupene hei tohunga mo PostgreSQL, inaianei ko taku tino kawenga ko nga tautau Kubernetes. I roto i te roopu, he pai te ahua o te teitei me te tino whakawhanaketanga o te huanga.

Ma te ara, kei te whakangau matou. He tino paerewa nga whakaritenga mo nga kaitono. Ko ahau ake, he mea nui ki a au kia uru te tangata ki roto i te kapa, kaore he tautohetohe, engari e mohio ana ki te tiaki i tana tirohanga, e hiahia ana ki te whakawhanake me te kore e mataku ki te mahi hou, me te tuku i ona whakaaro. Ano, ko nga pukenga hotaka i roto i nga reo tuhi, me mohio ki nga kaupapa o te Linux me te reo Ingarihi. Ko te reo Ingarihi he mea noa kia taea e te tangata i roto i te kaupapa o te fakap google he otinga mo te raruraru i roto i te 10 hēkona, kaua i roto i te 10 meneti. He tino uaua inaianei ki te kimi i nga tohunga mohio hohonu mo te Linux: he rorirori, engari e rua o nga kaitono e toru kaore e taea te whakautu i te patai "He aha te Uta Wawaenga? He aha te mea?”, me te patai "Me pehea te whakahiato i te putunga matua mai i te kaupapa C" ka whakaarohia he mea mai i te ao o nga supermen... nga mokoweri ranei. Me whakamanawanui tatou i tenei, na te mea kua tino whakawhanakehia e te tangata etahi atu pukenga, engari ma matou e whakaako Linux. Ko te whakautu ki te patai "he aha te miihini DevOps me mohio ki enei mea katoa i roto i te ao hou o nga kapua" me waiho i waho o te waahanga o te tuhinga, engari i roto i nga kupu e toru: ko enei katoa e hiahiatia ana.

Utauta Kapa

He nui te mahi a te roopu Utauta ki te mahi aunoatanga. Ko ta raatau mahi nui ko te hanga i nga taputapu whakairoiro me nga taputapu CLI mo nga kaihanga. Hei tauira, ko ta matou Whakaaetanga Whakawhanaketanga o roto ka taea e koe te whakaputa tono ki a Kubernetes me te iti noa o nga pao kiore, te whirihora i ana rauemi, nga taviri mai i te wharangi, aha atu. I mua, i reira ko Jenkins + Helm 2, engari me hanga e au taku ake taputapu hei whakakore i te kape-whakapiri me te kawe i te rite ki te huringa ora rorohiko.

Karekau te roopu Ops e tuhi paipa mo nga kaiwhakawhanake, engari ka taea e ratou te tohutohu mo nga take kei roto i a raatau tuhinga (kei a etahi taangata kei te Helm 3 tonu).

DevOps

Mo DevOps, ka kite tatou penei:

Ka tuhia e nga roopu Dev he waehere, hurihia ma te Whakaae ki te dev -> qa/stage -> prod. Ko te kawenga mo te whakarite kia kore te waehere e puhoi haere me te kore he hapa kei nga roopu Dev me Ops. I te awatea, ko te tangata e mahi ana i te roopu Ops me whakautu tuatahi ki tetahi aitua me tana tono, a i te ahiahi me te po, me whakaara e te kaiwhakahaere (Ops) te kaiwhakawhanake e mahi ana mena ka mohio ia mo kia mohio kaore te raruraru i roto i te hanganga. Ko nga inenga me nga matohi katoa i roto i te aroturuki ka puta aunoa, haurua-aunoa ranei.

Ko te waahi kawenga a Ops ka timata mai i te wa i tukuna ai te tono ki te whakaputa, engari kaore te kawenga a Dev e mutu i reira - ka mahi ano matou, kei te poti kotahi.

Ka tohutohu nga kaihanga ki nga kaiwhakahaere mena ka hiahia awhina ratou ki te tuhi i tetahi ratonga miihini whakahaere (hei tauira, Haere ki muri + HTML5), ka tohutohu nga kaiwhakahaere ki nga kaiwhakawhanake mo nga take hanganga, take ranei e pa ana ki te k8s.

Ma te ara, kaore he monolith, ko nga microservices anake. Ko to ratou nama i tenei wa ka rerekee i waenga i te 900 ki te 1000 i roto i te huinga k8s prod, mena ka inehia ma te tau. Tuhinga o mua. He rereke te maha o nga pene i waenga i te 1700 ki te 2000. I tenei wa, kei te 2000 nga pene kei roto i te kohinga hua.

Kaore e taea e au te whakaatu i nga nama tika, na te mea ka aro turuki matou i nga ratonga moroiti kore e tika ana, ka tapahia ki waho. Ka awhina a K8s ki a maatau ki te whai i nga hinonga koretake useless-operator, e whakaora ana i te maha o nga rauemi me te moni.

Te whakahaere rauemi

Aroturuki

Ko te aro turuki i te hanganga pai me te whakamohiotanga ka noho hei kohatu kokonga i roto i te whakahaerenga o te roopu nui. Kaore ano kia kitea he otinga mo te ao katoa ka kapi i te 100% o nga hiahia aroturuki katoa, na reira ka waihangahia e matou etahi otinga ritenga rereke i roto i tenei taiao.

  • Zabbix. He pai te aro turuki i nga mea tawhito, ko te mea tuatahi ki te whai i te ahuatanga o te hanganga. Ka korero mai ki a tatou ka mate te node mo te tukatuka, te mahara, te kopae, te whatunga, me era atu. Kaore he mea tipua, engari kei a maatau ano he DaemonSet motuhake o nga kaihoko, me te awhina, hei tauira, ka aro turuki tatou i te ahua o DNS i roto i te kohinga: ka rapuhia e tatou nga putea poauau, ka tirohia te waatea o nga ope o waho. Ko te ahua nei he aha te raruraru ki tenei, engari me te nui o te hokohoko he waahi kino tenei waahanga. Ko ahau kē whakaahuatia, me pehea taku uaua ki te mahi DNS i roto i te roopu.
  • Kaiwhakahaere Prometheus. Ko te huinga o nga kaihokohoko rereke e whakaatu ana i nga waahanga katoa o te kohinga. I muri mai, ka tirohia e matou enei mea katoa i runga i nga papatohu nui i Grafana, me te whakamahi i te kaiwhakahaere mataara mo nga matohi.

Ko tetahi atu taputapu whai hua mo matou ko rarangi-whakauru. I tuhia e matou i muri i nga wa maha ka pa ki tetahi ahuatanga i inaki ai tetahi kapa i nga ara Ingress o tetahi atu kapa, ka 50x nga hapa. Inaianei i mua i te tuku ki te whakaputanga, ka tirohia e nga kaiwhakawhanake karekau he tangata e pa, a mo taku roopu he taputapu pai tenei mo te tātaritanga tuatahi o nga raru me Ingresses. He mea rorirori i te tuatahi i tuhia mo nga kaiwhakahaere me te ahua "he koretake", engari i muri i te aroha o nga roopu kaiwhakawhanake ki te taputapu, ka rereke te ahua, ka tiimata te ahua kaore i rite "he kaiwhakahaere i hanga he kanohi tukutuku mo nga kaiwhakahaere. ” Kaore e roa ka whakarerea e matou tenei taputapu ka whakamanahia nga ahuatanga penei i mua i te whakaputanga o te paipa.

Nga rauemi a te roopu i te Cube

I mua i to uru ki nga tauira, he mea tika kia whakamarama me pehea te tohatoha rauemi mo ratonga moroiti.

Kia mohio ai ko wai nga roopu me nga rahinga e whakamahi ana i a raatau rauemi (tukatuka, mahara, SSD rohe), ka tohatoha maatau ia whakahau ingoa mokowā i roto i te "Cube" me te whakawhāiti i ona kaha morahi i roto i nga tikanga o te tukatuka, te mahara me te kōpae, i mua i te korero mo nga hiahia o nga roopu. No reira, kotahi te whakahau, i te nuinga o te waa, e kore e aukati i te kahui katoa mo te tuku, ka tohatoha i nga mano o nga matua me nga terabytes o te mahara. Ko te uru ki te mokowāingoa ka tukuna ma AD (ka whakamahi matou i te RBAC). Ko nga mokowā ingoa me o raatau rohe ka taapirihia ma te tono kume ki te putunga GIT, katahi ka hurihia nga mea katoa ma te paipa Ansible.

He tauira mo te tohatoha rauemi ki te roopu:

namespaces:

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

Nga tono me nga rohe

Tapatapahi" tono ko te maha o nga rawa kua rahuitia mo pene (kotahi, neke atu ranei nga ipu docker) i roto i te tautau. Ko te tepe he morahi kore-kore. Ka kite koe i nga kauwhata he maha nga tono a etahi roopu mo ana tono katoa, a kaore e taea te tuku tono ki te "Cube", i te mea kua "whakapau" nga tono katoa i raro i o raatau mokowā ingoa.

Ko te huarahi tika kia puta mai i tenei ahuatanga ko te titiro ki te whakapaunga rawa me te whakataurite ki te moni i tonoa (Tono).

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices
Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

I roto i nga whakaahua o runga ake nei ka kite koe ka rite nga PTM "Tono" ki te maha o nga miro, a ka taea e nga Tepe te nui ake i te maha o nga miro CPU =)

Inaianei kia ata tirohia etahi mokowāingoa (i whiriwhiria e au te mokowāingoa kube-system - te mokowā ingoa pūnaha mō ngā wāhanga o te “Cube” ake) ka kite i te ōwehenga o te wā pūtukatuka me te mahara ki te mea i tonoa:

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

E kitea ana he nui ake te mahara me te PTM kua rahuitia mo nga ratonga punaha kaore i te whakamahia. I roto i te take o te kube-system, he tika tenei: i puta ko te nginx ingress controller or nodelocaldns i to ratou tihi ka pa ki te PTM ka pau te nui o te RAM, na konei ka tika te rahui. I tua atu, kaore e taea e taatau te whakawhirinaki ki nga mahere mo nga haora 3 kua hipa: he pai ki te kite i nga inenga o mua mo te waa roa.

I whakawhanakehia he punaha "tohutohu". Hei tauira, i konei ka taea e koe te kite ko wai nga rauemi ka pai ake ki te whakanui i nga "tepe" (te pae o runga e whakaaetia ana) kia kore ai e puta te "tere": ko te wa kua pau kee tetahi rauemi i te PTM, te mahara ranei i roto i te waahanga wa kua whakaritea. kei te tatari kia "whakarereke":

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

Anei nga pene hei aukati i o raatau hiahia:

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

i runga i te tarai + te aro turuki i nga rauemi, ka taea e koe te tuhi neke atu i te kotahi tuhinga, na patai nga paatai ​​​​i roto i nga korero. I roto i nga kupu torutoru, ka taea e au te kii he tino uaua te mahi o te whakaaunoa i aua inenga me te nui o te waa me te whakataurite i nga mahi me nga mahi "matapihi" me te "CTE" Prometheus / VictoriaMetrics (kei roto enei kupu i nga korukī, i te mea kua tata Karekau he penei i roto i te PromQL, a me wehe e koe nga patai whakamataku ki te maha o nga mata o te kuputuhi me te arotau i a raatau).

Ko te mutunga, he taputapu nga kaiwhakawhanake mo te aro turuki i o raatau mokowā ingoa i Cube, a ka taea e ratou te whiriwhiri ma ratou ake ko hea me te wa e taea ai e nga tono te "tapahia" a raatau rauemi, me nga kaitoro ka taea te hoatu i te PTM katoa i te po katoa.

Tikanga

I roto i te kamupene i tenei wa huatau, piri matou ki DevOps- me He Hua-kaiwhakamahi Mena he 1000 nga miihini miihini a tetahi kamupene, tata ki te 350 nga kaiwhakawhanake me te 15 nga kaiwhakahaere mo te hanganga katoa, me "ahua" koe: kei muri i enei "puru" katoa he hiahia tere ki te whakaaunoa i nga mea katoa me nga tangata katoa, a kaua nga kaiwhakahaere e waiho hei putea. i roto i nga tukanga.

Hei Ops, ka whakaratohia e matou nga momo inenga me nga papatohu mo nga kaihanga e pa ana ki nga reiti whakautu ratonga me nga hapa.

Ka whakamahia e matou nga tikanga penei: RED, WHAKAMAHI и Tohu kourama te whakakotahi i a raatau. Ka ngana matou ki te whakaiti i te maha o nga papatohu kia titiro kau atu ko tehea ratonga kei te whakaheke i tenei wa (hei tauira, nga waehere whakautu mo ia hekona, te wa whakautu ma te 99 ōrau), aha atu. I te wa e tika ana etahi inenga hou mo nga papatohu whanui, ka tuhi tonu ka taapirihia.

Karekau au i tuhi kauwhata mo te marama. He tohu pai pea tenei: ko te tikanga kua tutuki te nuinga o nga "hiahia". I puta i te wiki ka tuhi au i etahi kauwhata hou i te iti rawa kotahi i te ra.

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices

He mea nui te hua i puta na te mea he uaua nga kaiwhakawhanake ki te haere ki nga kaiwhakahaere me nga patai "kei hea te titiro ki etahi momo ine."

Te whakatinanatanga Mata Ratonga kei te tata tonu nei, me whakangawari ake te oranga mo te katoa, kua tata kee nga hoa mahi mai i nga Utauta ki te whakatinana i te "Istio o te tangata hauora": ko te huringa ora o ia tono HTTP ka kitea i roto i te aro turuki. Ka taea tonu te mohio "i te wa i pakaru ai nga mea katoa" i te wa o te mahi-mahi (kaore anake) te taunekeneke. Ohauru ki nga korero mai i te DomClick hub. =)

Tautoko hanganga Kubernetes

I nga wa o mua, ka whakamahia e matou te putanga papaki Kubespray — Te mahi tika mo te tuku, te whakawhānui me te whakahou i nga Kubernetes. I etahi wa, ka tapahia te tautoko mo nga whakaurunga kore-kubeadm mai i te peka matua, a, kaore i whakaarohia te huringa ki te kubeadm. Ko te mutunga mai, i hanga e te kamupene Southbridge tana ake marau (me te tautoko kubeadm me te whakatika tere mo nga raru nui).

Ko te tikanga mo te whakahou i nga tautau k8s katoa he penei te ahua:

  • Tangohia Kubespray mai i Southbridge, tirohia me ta maatau miro, Merjim.
  • Kei te tukuna e matou te whakahou ki ahotea- "Cube".
  • Ka hurihia e matou te whakahou i tetahi node i te wa kotahi (i roto i te Ansible he "rangatū: 1") i roto Dev- "Cube".
  • Ka whakahouhia e matou Tuhinga i te ahiahi o te Hatarei kotahi node i ia wa.

He mahere ki te whakakapi i te waa kei te heke mai Kubespray mo tetahi mea tere ake ka haere ki kubeadm.

I roto i te katoa e toru tatou "Cubes": Stress, Dev me Prod. Kei te whakamahere matou ki te whakarewa i tetahi atu (tūtatari wera) Prod-"Cube" i roto i te pokapū raraunga tuarua. ahotea и Dev noho i roto i nga "miihini mariko" (oVirt mo te Stress me te kapua VMWare mo Dev). Tuhinga- Ko te "Cube" e noho ana i runga i te "metara kore": he rite enei node me nga miro CPU 32, 64-128 GB o te mahara me te 300 GB SSD RAID 10 - he 50 o ratou katoa. E toru nga pona "angiangi" kua whakatapua ki nga "rangatira" Tuhinga- "Cuba": 16 GB o te mahara, 12 nga miro CPU.

Mo nga hoko, he pai ake taatau ki te whakamahi i te "whakarewa kore" me te karo i nga paparanga koretake penei Tuwhera: e kore matou e hiahia "nohonoho ngangau" me te PTM tahae wa. A ko te uaua o te whakahaeretanga ka tata ki te rua o nga keehi mo te OpenStack o-whare.

Mo te CI / CD "Cubic" me etahi atu waahanga hangahanga ka whakamahia e matou he tūmau GIT motuhake, Helm 3 (he tino mamae te whakawhiti mai i te Helm 2, engari he tino koa matou ki nga whiringa. ahau), Jenkins, Ansible me Docker. He pai ki a matou nga manga ahua me te tuku ki nga taiao rereke mai i tetahi putunga.

mutunga

Kubernetes i DomClick: me pehea te moe marie i te wa e whakahaere ana i te roopu o te 1000 microservices
Koinei te ahua o te mahi DevOps i DomClick mai i te tirohanga a te miihini mahi. Ko te tuhinga i puta he iti ake te hangarau i taku i tumanako ai: na reira, whai i nga korero DomClick i runga i te Habré: ka nui ake nga tuhinga "pakeke" mo Kubernetes me etahi atu.

Source: will.com

Tāpiri i te kōrero