Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

O loʻu igoa o Viktor Yagofarov, ma o loʻo ou atinaʻeina le Kubernetes platform i DomClick o se pule faʻapitoa tau atinaʻe i le Ops (operation) team. Ou te fia talanoa e uiga i le fausaga o la matou Dev <-> Ops faiga, foliga o le faʻaogaina o se tasi o k8s pito sili ona tele i Rusia, faʻapea foʻi ma faʻataʻitaʻiga DevOps / SRE o loʻo faʻaaogaina e la matou 'au.

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

Ops Team

O le vaega o le Ops e 15 tagata i le taimi nei. E to'atolu i latou e nafa ma le ofisa, e to'alua e faigaluega i se isi sone taimi ma e avanoa, e aofia ai ma le po. O le mea lea, o se tasi mai Ops o loʻo i ai i le mataʻituina ma sauni e tali atu i se faʻalavelave o soʻo se lavelave. E leai ni a matou suiga i le po, lea e faʻasaoina ai o matou mafaufau ma tuʻuina atu i tagata uma le avanoa e lava ai le moe ma faʻaalu taimi paganoa e le gata i le komepiuta.

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

E tofu tagata uma ma agavaa eseese: networkers, DBAs, ELK stack specialists, Kubernetes admins/developers, mataʻituina, virtualization, meafaigaluega faʻapitoa, ma isi. E tasi le mea e tuʻufaʻatasia ai tagata uma - e mafai e tagata uma ona sui soʻo se tasi oi tatou i se tulaga: mo se faʻataʻitaʻiga, faʻafeiloaʻi ni nodes fou i le k8s cluster, faʻafouina PostgreSQL, tusi se CI / CD + Ansible pipeline, faʻaogaina se mea i le Python / Bash / Go, faʻafesoʻotaʻi meafaigaluega i Nofoaga fa'amaumauga. O tomai malolosi i so'o se vaega e le taofia ai oe mai le suia o lau itu o le gaioiga ma amata ona fa'aleleia i isi vaega. Mo se faʻataʻitaʻiga, na ou auai i se kamupani o se PostgreSQL faʻapitoa, ma o laʻu vaega autu o le matafaioi o le Kubernetes clusters. I totonu o le 'au, soʻo se maualuga e faʻafeiloaʻi ma o le lagona o le leverage e matua atinaʻe.

I le ala, matou te tuli manu. O manaoga mo sui tauva e fai si tulaga masani. Ia te aʻu lava ia, e taua ia te aʻu le fetaui lelei o se tagata i totonu o le 'au, e le feteʻenaʻi, ae iloa foi le auala e puipuia ai lona manatu, manaʻo e atiina ae ma e le fefe e fai se mea fou, ma ofoina atu ona manatu. E le gata i lea, o tomai faʻapolokalame i gagana tusitusi, malamalama i faʻavae o Linux ma le Igilisi e manaʻomia. E mana'omia le Igilisi ina ia mafai e se tagata pe a fakap ona google se fofo i le faafitauli i le 10 sekone, ae le o le 10 minute. Ua faigata nei ona maua ni tagata tomai faapitoa ma malamalama loloto i Linux: e malie, ae lua mai le tolu sui e le mafai ona taliina le fesili "O le a le Load Average? O le a le mea e fai ai?", ma le fesili "E faʻafefea ona faʻapipiʻi se faʻapipiʻi autu mai se polokalame C" ua manatu o se mea mai le lalolagi o tagata sili ... poʻo tainasoa. E tatau ona tatou onosaʻi i lenei mea, talu ai e masani lava ona faʻalauteleina e tagata isi tomai, ae o le a matou aʻoaʻoina Linux. O le tali i le fesili "aisea e manaʻomia ai e le inisinia DevOps ona iloa nei mea uma i le lalolagi faʻaonaponei o ao" e tatau ona tuʻu i fafo atu o le lautele o le tusiga, ae i upu e tolu: o mea uma e manaʻomia.

Meafaigaluega Au

E taua tele le sao a le au Meafaigaluega i le masini. O la latou galuega autu o le fatuina o faʻataʻitaʻiga faigofie ma CLI meafaigaluega mo tagata atiaʻe. Mo se faʻataʻitaʻiga, o la matou atinaʻe faʻalotoifale Confer e mafai ai ona e faʻasalalau moni se talosaga i Kubernetes ma naʻo ni nai kiliki kisi, faʻatulagaina ana punaoa, ki mai vault, ma isi. I le taimi muamua, sa i ai Jenkins + Helm 2, ae sa tatau ona ou atiaʻe laʻu lava mea faigaluega e faʻaumatia ai kopi-faʻapipiʻi ma aumai le tutusa i le olaga faakomepiuta.

E le tusia e le vaega o le Ops ni paipa mo le au atia'e, ae mafai ona fautua i so'o se mataupu i a latou tusitusiga (o nisi tagata o lo'o i ai pea le Helm 3).

DevOps

Ae mo DevOps, matou te vaʻaia e pei o lenei:

E tusia e 'au a le Dev le fa'ailoga, ta'avale e ala i le Confer to dev -> qa/stage -> prod. O le matafaioi mo le faʻamautinoaina e le faʻagesegese le tulafono ma e leai ni mea sese o loʻo taoto i le Dev ma Ops teams. I le ao, e tatau i le tagata o loʻo tiute mai le vaega o le Ops ona tali muamua i se faʻalavelave i lana talosaga, ma i le afiafi ma le po, e tatau i le pule o le tiute (Ops) ona fafagu i luga le developer o loʻo tiute pe afai na te iloa mo. mautinoa o le faʻafitauli e leʻo i totonu o atinaʻe. O fua fa'atatau uma ma fa'ailo i le mata'ituina e fa'aalia otometi po'o semi-otometi.

O le vaega o le matafaioi a Ops e amata mai le taimi e faʻasalalau ai le talosaga i le gaosiga, ae o le matafaioi a Dev e le muta iina - matou te faia le mea lava e tasi ma o loʻo i totonu o le vaʻa e tasi.

E fautuaina e le au atiaʻe pule pe a latou manaʻomia le fesoasoani i le tusiaina o se admin microservice (mo se faʻataʻitaʻiga, Go backend + HTML5), ma e fautuaina e le au atinaʻe soʻo se faʻafitauli tetele poʻo ni faʻafitauli e fesoʻotaʻi ma k8s.

I le auala, e leai se matou monolith, naʻo microservices. O lo latou numera e fesuisuiai i le va o le 900 ma le 1000 i le prod k8s fuifui, pe a fuaina i numera. avega. Ole numera o pods e fesuisuiai i le va o le 1700 ma le 2000. O loʻo i ai nei pe tusa ma le 2000 pods i totonu o le faʻapipiʻi faʻapipiʻi.

E le mafai ona ou tuʻuina atu numera saʻo, talu ai matou te mataʻituina microservices e le manaʻomia ma tipi i fafo semi-autometi. K8s e fesoasoani ia i matou e siaki mea e le manaʻomia le aoga-faafoe, lea e sefe ai le tele o punaoa ma tupe.

Pulega o punaoa

Mataitu

O le mata'ituina lelei ma fa'amatalaga e avea ma maatulimanu i le fa'agaioiga o se fuifui tele. Matou te leʻi mauaina se fofo lautele e aofia ai le 100% o manaʻoga mataʻituina uma, o lea matou te faia ai i lea taimi ma lea taimi ni fofo masani eseese i lenei siosiomaga.

  • Zabbix. Lelei mata'ituina tuai, lea e fa'amoemoe e mata'ituina le tulaga atoa o atina'e. E taʻu mai ia i tatou pe a mate se node i tulaga o le gaioiga, manatua, tisiki, fesoʻotaʻiga, ma isi. E leai se mea faʻapitoa, ae o loʻo i ai foi a matou DaemonSet eseʻese o sui, faʻatasi ai ma le fesoasoani, mo se faʻataʻitaʻiga, matou te mataʻituina le tulaga o le DNS i totonu o le fuifui: matou te vaʻavaʻai mo coredns pods valea, matou te siakiina le avanoa o 'au i fafo. E foliga mai o le a le mafuaʻaga e faʻalavelave ai i lenei mea, ae faʻatasi ai ma le tele o voluma o fefaʻatauaiga o lenei vaega o se tulaga ogaoga o le toilalo. ua uma ona ou faamatalaina, pe faʻafefea ona ou tauivi ma faʻatinoga DNS i totonu o se fuifui.
  • Prometheus Operator. O se seti o tagata fa'atau oloa eseese e tu'uina atu ai se fa'amatalaga tele o vaega uma o le fuifui. O le isi, matou te vaʻavaʻai i nei mea uma i luga o laupapa tetele i Grafana, ma faʻaoga le alertmanager mo faʻasalalauga.

O le isi meafaigaluega aoga mo i matou lisi-ulufale. Na matou tusia ina ua mavae le tele o taimi na matou fetaiaʻi ai ma se tulaga na faʻafeiloaʻi ai e le tasi au le ala o le Ingress a le isi au, ma iʻu ai i le 50x mea sese. I le taimi nei aʻo leʻi tuʻuina atu i le gaosiga, e siaki e le au atinaʻe e leai se tasi e aʻafia, ma mo laʻu 'au o se meafaigaluega lelei lea mo le suʻesuʻeina muamua o faʻafitauli ma Ingresses. E malie tele i le taimi muamua na tusia ai mo le au pulega ma e foliga mai e "fesoasoani", ae ina ua uma ona fiafia le au dev i le meafaigaluega, na suia tele ma amata ona foliga mai e le pei o le "se admin na faia se web face for admins. ” E le o toe mamao o le a tatou lafoaia lenei meafaigaluega ma o ia tulaga o le a faʻamaonia e tusa lava pe leʻi taʻavale le paipa.

Punaoa a le au i le Cube

Ae tatou te leʻi oʻo i faʻataʻitaʻiga, e taua le faʻamatalaina pe faʻapefea ona tatou faʻasoa punaoa mo microservices.

Ina ia malamalama po'o fea 'au ma po'o le a le aofa'i e fa'aogaina ai latou punaoa (processor, memory, local SSD), matou te tuʻuina atu ia lava poloaiga igoa igoa i le "Cube" ma faʻatapulaʻa ona gafatia maualuga i tulaga o le gaosiga, manatua ma le disk, talu ai ona talanoaina muamua manaʻoga o 'au. E tusa ai, o le tasi poloaiga, i se tulaga lautele, o le a le poloka le fuifui atoa mo le faʻapipiʻiina, tuʻufaʻatasia le faitau afe o cores ma terabytes o manatua. Ole avanoa ile igoa avanoa e tu'uina atu ile AD (matou te fa'aogaina le RBAC). Igoa igoa ma o latou tapulaʻa e faʻaopoopoina e ala i se talosaga toso i le GIT repository, ona otometi lava lea ona taʻavale mea uma e ala i le pipeline Ansible.

O se faʻataʻitaʻiga o le faʻasoaina o punaoa i se 'au:

namespaces:

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

Talosaga ma tapula'a

Cubed" talosaga o le numera o punaoa faʻaagaga faʻaagaga mo pulu (tasi pe sili atu pusa fa'atau) i totonu o se fuifui. O le tapulaa o se maualuga e le fa'amaonia. E masani ona e vaʻai i luga o kalafi pe faʻapefea ona faʻatulagaina e nisi 'au ia lava le tele o talosaga mo ana talosaga uma ma e le mafai ona tuʻuina atu le talosaga i le "Cube", talu ai o talosaga uma i lalo o latou igoa ua uma ona "faʻaalu".

O le auala sa'o e alu ese ai mai lenei tulaga o le va'ava'ai i le fa'aaogaina o punaoa ma fa'atusatusa i le aofa'i o lo'o talosagaina (Talosaga).

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices
Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

I faʻamalama o loʻo i luga e mafai ona e vaʻaia o le "Talosaga" PPU e fetaui ma le numera moni o filo, ma tapulaʻa e mafai ona sili atu nai lo le numera moni o filo CPU =)

Seʻi o tatou vaʻavaʻai i nisi igoa ole igoa ile auiliiliga (Na ou filifilia le namespace kube-system - o le igoa ole igoa mo vaega ole "Cube" lava ia) ma vaʻai i le fua faatatau o le taimi faʻaoga moni ma le manatua i le mea na talosagaina:

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

E manino lava e sili atu le manatua ma le PPU o loʻo faʻaagaga mo auaunaga faʻaoga nai lo le faʻaaogaina moni. I le tulaga o le kube-system, e tauamiotonuina lenei mea: na tupu o le nginx ingress controller poʻo nodelocaldns i lo latou pito i luga na lavea ai le PPU ma faʻaumatia ai le tele o le RAM, o lea e faʻamaonia ai sea faʻaagaaga. E le gata i lea, e le mafai ona tatou faʻalagolago i siata mo le 3 itula mulimuli: e manaʻomia le vaʻaia o fua faʻasolopito i luga o se vaitaimi tele.

Na fausia se faiga o "fautuaga". Mo se faʻataʻitaʻiga, o iinei e mafai ona e vaʻavaʻai poʻo fea punaoa e sili atu le faʻatupuina o le "gata" (le pito i luga o le pa faʻatagaina) ina ia le tupu le "faʻamalo": o le taimi ua uma ona faʻaalu e se punaoa le CPU poʻo le manatua i le taimi atofaina ma o loʻo faʻatali seʻia oʻo ina "tatala":

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

Ma o pusa nei e tatau ona taofia lo latou fia'ai:

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

i fa'atosina + mataʻituina o punaoa, e mafai ona e tusia le sili atu ma le tasi le tusiga, o lea fai fesili i faʻamatalaga. I ni nai upu, e mafai ona ou fai atu o le galuega o le faʻaogaina o ia metrics e matua faigata lava ma e manaʻomia ai le tele o le taimi ma le paleni o gaioiga ma galuega "faʻamalama" ma le "CTE" Prometheus / VictoriaMetrics (o nei faaupuga o loʻo i upusii, talu ai e toetoe lava leai se mea e pei o lenei i le PromQL, ma e tatau ona e vaevae fesili mataʻutia i le tele o laupepa o tusitusiga ma sili ona lelei).

O le iʻuga, o loʻo i ai i le au atinaʻe meafaigaluega mo le mataʻituina o latou igoa ile Cube, ma e mafai ona latou filifili mo i latou lava poʻo fea ma o le a le taimi e mafai ai ona maua a latou punaoa "tipi," ma po o fea sapalai e mafai ona tuʻuina atu i le PPU atoa i le po atoa.

Metotia

I totonu o le kamupani e pei ona i ai nei fa'alelei, matou te tausisi i DevOps- ma SRE-Foma'i A maua e le kamupani le 1000 microservices, e tusa ma le 350 developers ma le 15 admins mo le atinaʻe atoa, e tatau ona e "faʻalelei": i tua atu o nei "baswords" o loʻo i ai se manaʻoga faʻanatinati e faʻaautomatika mea uma ma tagata uma, ma e le tatau ona avea le au pulega ma se fagu. i faiga.

I le avea ai ma Ops, matou te tuʻuina atu fua faʻatatau ma dashboards mo tagata atiaʻe e fesoʻotaʻi ma fua faatatau o tali ma mea sese.

Matou te faʻaaogaina metotia e pei o: LANU MUMU, Faʻaaoga и Faailoga Auroe ala i le tuufaatasia faatasi. Matou te taumafai e faʻaitiitia le numera o dashboards ina ia i le tilotilo i ai e manino po o le a le auaunaga o loʻo faʻaleagaina i le taimi nei (mo se faʻataʻitaʻiga, code tali i le sekone, taimi tali i le 99th percentile), ma isi. O le taimi lava e mana'omia ai nisi o fua fa'atatau fou mo laupapa fa'asalalau lautele, matou te tusia vave ma fa'aopoopo.

Ou te lei tusia kalafi mo le masina. Atonu o se faʻailoga lelei lea: o lona uiga o le tele o "manaʻo" ua uma ona iloa. Na tupu i le gasologa o le vaiaso ou te tusia ai se kalafi fou ia le itiiti ifo ma le tasi i le aso.

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices

O le taunuuga e taua tele ona o le taimi nei e seasea o atu le au atinaʻe i le pulega ma fesili "mea e vaʻai ai i se ituaiga metric."

Faatinoga Mesh Auaunaga o loʻo lata mai ma e tatau ona faʻafaigofieina le olaga mo tagata uma, o paʻaga mai Tools ua latalata i le faʻatinoina o le "Istio o se tagata soifua maloloina": o le taamilosaga o le olaga o HTTP(s) talosaga taitasi o le a iloa i le mataʻituina, ma e o le a mafai i taimi uma ona malamalama "i le a le tulaga na malepe mea uma" i le taimi o fesoʻotaʻiga (ma e le gata). Fa'asoa i tala fou mai le DomClick hub. =)

Kubernetes lagolago tetele

I le tala faasolopito, matou te faʻaaogaina le faʻasologa o patched Kubespray - Matafaioi matafaioi mo le faʻapipiʻiina, faʻalauteleina ma faʻafouina Kubernetes. I se taimi, na vavae ese le lagolago mo mea e le o kubeadm mai le lala autu, ma e leʻi faʻatulagaina le faagasologa o le suiga i le kubeadm. O se taunuuga, na faia e le kamupani Southbridge lana lava tui (faatasi ai ma le kubeadm lagolago ma se faʻavave vave mo faʻafitauli ogaoga).

O le faʻagasologa mo le faʻafouina uma o k8s fuifui e pei o lenei:

  • Tatou ave Kubespray mai Southbridge, siaki le matou filo, Merjim.
  • O loʻo matou faʻasalalau atu le faʻafouga i meafaigatā- “Cube”.
  • Matou te faʻasalalau le faʻafouga tasi le node i le taimi (i le Ansible o le "serial: 1") i totonu Dev- “Cube”.
  • Matou te fa'afouina Prod i le afiafi o le Aso Toonai e tasi le node i le taimi.

O lo'o iai fuafuaga e sui ai i le lumana'i Kubespray mo se mea vave ma alu i kubeadm.

I le aofaʻi e tolu a matou "Cubes": Stress, Dev ma Prod. O loʻo matou fuafua e faʻalauiloa se isi (tutu vevela) Prod-"Cube" i le nofoaga autu lona lua. meafaigatā и Dev ola i "masini virtual" (oVirt mo Stress ma VMWare ao mo Dev). Prod- "Cube" o loʻo ola i luga o le "mea e leai se mea": o mea ia e tutusa ma 32 CPU filo, 64-128 GB o le manatua ma le 300 GB SSD RAID 10 - e 50 i latou i le aofaʻi. E tolu nodes "manifinifi" e faʻamaoni i "matai" Prod- "Cuba": 16 GB o le manatua, 12 CPU filo.

Mo faʻatauga, matou te manaʻo e faʻaaoga le "uamea e leai ni mea" ma aloese mai faʻailoga e le manaʻomia OpenStack: matou te le manaʻomia "tuaoi pisapisao" ma PPU gaoi taimi. Ma o le lavelave o le pulega e tusa ma le faaluaina i le tulaga o le OpenStack i totonu.

Mo CI / CD "Cubic" ma isi vaega faʻapitoa matou te faʻaogaina se isi GIT server, Helm 3 (o se suiga tigaina mai Helm 2, ae matou te matua fiafia lava i filifiliga. Atomic), Jenkins, Ansible ma Docker. Matou te fiafia i lala faʻapitoa ma faʻapipiʻiina i siosiomaga eseese mai le tasi fale teu oloa.

iʻuga

Kubernetes i DomClick: faʻafefea ona moe filemu aʻo pulea se fuifui o 1000 microservices
O le mea lea, i faaupuga lautele, o le a le DevOps process e foliga i DomClick mai le vaaiga a se inisinia gaioiga. O le tusiga na foliga mai e le o se mea faʻapitoa nai lo le mea na ou faʻamoemoeina: o le mea lea, mulimuli i le DomClick talafou i luga o Habré: o le a tele atu tala "malosi" e uiga i Kubernetes ma sili atu.

puna: www.habr.com

Faaopoopo i ai se faamatalaga