Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Is e m ’ainm Viktor Yagofarov, agus tha mi a’ leasachadh àrd-ùrlar Kubernetes aig DomClick mar mhanaidsear leasachaidh teignigeach ann an sgioba Ops (obrachadh). Bu mhath leam bruidhinn mu structar ar pròiseasan Dev <-> Ops, feartan obrachadh aon de na cruinneachaidhean k8s as motha san Ruis, a bharrachd air na cleachdaidhean DevOps / SRE a tha an sgioba againn a’ buntainn.

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Sgioba Ops

Tha 15 neach aig sgioba Ops an-dràsta. Tha triùir dhiubh an urra ris an oifis, bidh dithis ag obair ann an raon ùine eadar-dhealaichte agus tha iad rim faighinn, a’ gabhail a-steach air an oidhche. Mar sin, tha cuideigin bho Ops an-còmhnaidh aig an monitor agus deiseil gus freagairt a thoirt do thachartas iom-fhillteachd sam bith. Chan eil gluasadan oidhche againn, a ghlèidheas ar psyche agus a bheir cothrom don h-uile duine cadal gu leòr fhaighinn agus ùine cur-seachad a chaitheamh chan ann a-mhàin aig a’ choimpiutair.

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Tha comasan eadar-dhealaichte aig a h-uile duine: luchd-lìonraidh, DBAn, eòlaichean stac ELK, luchd-rianachd / luchd-leasachaidh Kubernetes, sgrùdadh, virtualization, eòlaichean bathar-cruaidh, msaa. Tha aon rud ag aonachadh a h-uile duine - faodaidh a h-uile duine gin againn a chuir na àite gu ìre: mar eisimpleir, cuir a-steach nodan ùra a-steach don bhuidheann k8s, ùraich PostgreSQL, sgrìobh loidhne-phìoban CI / CD + Ansible, fèin-ghluasad rudeigin ann am Python / Bash / Go, ceangail bathar-cruaidh ri Ionad dàta. Cha chuir comasan làidir ann an raon sam bith bacadh ort bho bhith ag atharrachadh do stiùir gnìomhachd agus tòiseachadh air leasachadh ann an raon eile. Mar eisimpleir, chaidh mi a-steach do chompanaidh mar eòlaiche PostgreSQL, agus a-nis is e mo phrìomh raon dleastanais cruinneachaidhean Kubernetes. Anns an sgioba, tha fàilte air àirde sam bith agus tha mothachadh luamhain air a leasachadh gu mòr.

Air an t-slighe, tha sinn a 'sealg. Tha na riatanasan airson tagraichean gu math àbhaisteach. Gu pearsanta, tha e cudromach dhòmhsa gu bheil neach a 'freagairt a-steach don sgioba, gu bheil e neo-chòmhstri, ach cuideachd gu bheil fios aige mar a dhìonas e a bheachd, ag iarraidh leasachadh agus nach eil eagal air rudeigin ùr a dhèanamh, agus a' tabhann a bheachdan. Cuideachd, tha feum air sgilean prògramaidh ann an cànanan sgrìobhaidh, eòlas air bunaitean Linux agus Beurla. Tha feum air Beurla dìreach gus an urrainn do neach ma thachras fakap fuasgladh fhaighinn air an duilgheadas ann an 10 diogan, agus chan ann ann an 10 mionaidean. Tha e a-nis gu math duilich eòlaichean a lorg le eòlas domhainn air Linux: tha e èibhinn, ach chan urrainn dha dithis a-mach à trì tagraichean a’ cheist a fhreagairt “Dè a th’ ann an cuibheasachd luchdan? Dè a tha e air a dhèanamh? Feumaidh sinn cur suas le seo, oir mar as trice tha comasan eile air an leasachadh gu mòr aig daoine, ach teagaisgidh sinn Linux. Feumaidh am freagairt don cheist “carson a dh’ fheumas innleadair DevOps a bhith eòlach air a h-uile càil seo ann an saoghal ùr sgòthan ”a bhith air fhàgail taobh a-muigh raon an artaigil, ach ann an trì faclan: tha seo uile riatanach.

Innealan sgioba

Tha àite cudromach aig sgioba Innealan ann an fèin-ghluasad. Is e am prìomh obair aca innealan grafaigeach agus CLI goireasach a chruthachadh do luchd-leasachaidh. Mar eisimpleir, leigidh an Co-labhairt leasachaidh taobh a-staigh againn leat tagradh a chuir a-steach gu Kubernetes gu litearra le dìreach beagan chlican luchag, na goireasan aige a rèiteachadh, iuchraichean bho seilear, msaa. Roimhe sin, bha Jenkins + Helm 2 ann, ach bha agam ri an inneal agam fhèin a leasachadh gus cuir às do leth-bhreacan agus èideadh a thoirt do chuairt-beatha a’ bhathar-bog.

Cha bhith an sgioba Ops a’ sgrìobhadh loidhnichean-phìoban airson luchd-leasachaidh, ach faodaidh iad comhairle a thoirt seachad air cùisean sam bith san sgrìobhadh aca (tha Helm 3 aig cuid fhathast).

DevOps

A thaobh DevOps, tha sinn ga fhaicinn mar seo:

Bidh sgiobaidhean dev a’ sgrìobhadh còd, ga sgaoileadh tro Confer gu dev -> qa/stage -> prod. Tha e an urra ris na sgiobaidhean Dev agus Ops dèanamh cinnteach nach bi an còd a’ fàs nas slaodaiche agus nach eil mearachdan ann. Tron latha, bu chòir don neach a tha air dleasdanas bho sgioba Ops freagairt a thoirt do thachartas leis an tagradh aige, agus air an fheasgar agus air an oidhche, bu chòir don rianadair air dleasdanas (Ops) an leasaiche a dhùsgadh ma tha e eòlach air. cinnteach nach eil an duilgheadas anns a’ bhun-structar. Bidh a h-uile meatrach agus rabhadh ann an sgrùdadh a’ nochdadh gu fèin-ghluasadach no gu leth-fèin-ghluasadach.

Bidh raon dleastanais Ops a’ tòiseachadh bhon mhionaid a thèid an tagradh a chuir a-steach gu cinneasachadh, ach chan eil uallach Dev a ’tighinn gu crìch an sin - bidh sinn a’ dèanamh an aon rud agus tha sinn san aon bhàta.

Bidh luchd-leasachaidh a’ toirt comhairle do luchd-rianachd ma tha feum aca air cuideachadh a’ sgrìobhadh meanbh-sheirbheis rianachd (mar eisimpleir, Go backend + HTML5), agus bidh luchd-rianachd a’ toirt comhairle do luchd-leasachaidh mu chùisean bun-structair no cùisean co-cheangailte ri k8s.

Co-dhiù, chan eil monolith againn idir, dìreach microservices. Tha an àireamh aca gu ruige seo ag atharrachadh eadar 900 agus 1000 anns a’ bhuidheann prod k8s, ma thèid a thomhas a rèir àireamh cleachdadh. Bidh an àireamh de phògan ag atharrachadh eadar 1700 agus 2000. Tha timcheall air 2000 pod an-dràsta anns a' chòmhlan prod.

Chan urrainn dhomh àireamhan mionaideach a thoirt seachad, leis gu bheil sinn a’ cumail sùil air meanbh-sheirbheisean neo-riatanach agus gan gearradh a-mach gu leth-fèin-ghluasadach. Bidh K8s gar cuideachadh gus sùil a chumail air buidhnean neo-riatanach gnìomhaiche gun fheum, a shàbhaileas mòran ghoireasan agus airgead.

Stiùireadh ghoireasan

Sgrùdadh

Bidh sgrùdadh le deagh structar agus fiosrachail gu bhith na chlach-oisinn ann an obrachadh cruinneachadh mòr. Chan eil sinn fhathast air fuasgladh uile-choitcheann a lorg a bhiodh a’ còmhdach 100% de na feumalachdan sgrùdaidh, agus mar sin bidh sinn bho àm gu àm a’ cruthachadh diofar fhuasglaidhean àbhaisteach san àrainneachd seo.

  • Zabbix. Seann sgrùdadh math, a tha gu sònraichte airson sùil a chumail air staid iomlan a’ bhun-structair. Tha e ag innse dhuinn nuair a bhàsaicheas nód a thaobh giollachd, cuimhne, diosgan, lìonra, agus mar sin air adhart. Chan eil dad os-nàdarrach, ach tha DaemonSet de riochdairean air leth againn cuideachd, le cuideachadh bhuapa, mar eisimpleir, bidh sinn a’ cumail sùil air staid DNS anns a’ bhuidheann: bidh sinn a’ coimhead airson pods coredns gòrach, bidh sinn a’ dèanamh cinnteach gu bheil luchd-aoigheachd a-muigh rim faighinn. Bhiodh e coltach gur e sin carson a tha dragh ort le seo, ach le tòrr trafaic tha am pàirt seo na fhìor phuing fàiligeadh. mi mar-thà air a mhìneachadh, mar a bha mi a’ strì le coileanadh DNS ann am brabhsair.
  • Gnìomhaiche-ciùil Prometheus. Tha seata de luchd-às-mhalairt eadar-dhealaichte a 'toirt sealladh farsaing air a h-uile pàirt den bhuidheann. An uairsin, bidh sinn a’ faicinn seo gu lèir air clàran-dannsa mòra ann an Grafana, agus a’ cleachdadh manaidsear rabhaidh airson rabhaidhean.

Bha inneal feumail eile dhuinn liosta-inntrigeadh. Sgrìobh sinn e às deidh grunn thursan thachair sinn ri suidheachadh far an robh aon sgioba a’ dol thairis air slighean Ingress sgioba eile, a’ leantainn gu mearachdan 50x. A-nis mus tèid iad a-steach gu cinneasachadh, bidh luchd-leasachaidh a’ dèanamh cinnteach nach bi buaidh aig duine sam bith, agus airson an sgioba agam tha seo na inneal math airson a bhith a’ lorg duilgheadasan le Ingresses an toiseach. Tha e èibhinn gun deach a sgrìobhadh an toiseach airson luchd-rianachd agus bha e a’ coimhead caran “clumsy”, ach às deidh dha na sgiobaidhean dev tuiteam ann an gaol leis an inneal, dh’ atharraich e gu mòr agus thòisich e a ’coimhead gun a bhith coltach ri“ rinn rianaire aghaidh lìn airson luchd-rianachd. ” A dh'aithghearr trèigidh sinn an inneal seo agus thèid suidheachaidhean mar sin a dhearbhadh eadhon mus tèid an loidhne-phìoban a sgaoileadh.

Goireasan sgioba anns an Cube

Mus tèid sinn a-steach do na h-eisimpleirean, is fhiach mìneachadh mar a bhios sinn a’ riarachadh ghoireasan air a shon meanbh-sheirbheisean.

Gus tuigsinn dè na sgiobaidhean agus dè an àireamh a bhios gan cleachdadh goireasan (pròiseasar, cuimhne, SSD ionadail), bidh sinn a 'riarachadh gach àithne fhèin ainm-àite anns an “Cube” agus cuir crìoch air na comasan as àirde aige a thaobh pròiseasar, cuimhne agus diosc, às deidh dhaibh beachdachadh air feumalachdan nan sgiobaidhean roimhe. A rèir sin, cha chuir aon àithne, san fharsaingeachd, bacadh air a’ bhuidheann gu lèir airson a chleachdadh, a’ riarachadh mìltean de choraichean agus terabytes cuimhne. Bithear a’ faighinn cothrom air àrainn ainmean tro AD (bidh sinn a’ cleachdadh RBAC). Bithear a’ cur ainmean-àite agus na crìochan aca tro iarrtas tarraing gu stòr GIT, agus an uairsin thèid a h-uile càil a sgaoileadh gu fèin-ghluasadach tron ​​loidhne-phìoban Ansible.

Eisimpleir de bhith a’ riarachadh ghoireasan do sgioba:

namespaces:

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

Iarrtasan agus crìochan

Ciùbach" iarrtas tha an àireamh de stòrasan glèidhte airson pod (aon no barrachd shoithichean docker) ann am buidheann. Is e cuingealachadh an ìre as àirde nach eil cinnteach. Chì thu gu tric air na grafaichean mar a tha cuid de sgioba air cus iarrtasan a shuidheachadh dhaibh fhèin airson a h-uile tagradh agus chan urrainn dhaibh an tagradh a chuir chun “Cube”, leis gu bheil a h-uile iarrtas fon ainm aca air a bhith “air a chaitheamh”.

Is e an dòigh cheart a-mach às an t-suidheachadh seo coimhead air an fhìor chaitheamh ghoireasan agus coimeas a dhèanamh eadar e agus an t-suim a chaidh iarraidh (Iarrtas).

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices
Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Anns na seallaidhean-sgrìn gu h-àrd chì thu gu bheil CPUan “Iarraichte” air am maidseadh ris an fhìor àireamh de snàithleanan, agus faodaidh crìochan a dhol thairis air an fhìor àireamh de snàithleanan CPU =)

A-nis leig dhuinn sùil mhionaideach a thoirt air cuid de dh’ ainmean-àite (thagh mi ainm-àite kube-system - ainm an t-siostaim airson na pàirtean den “Cube” fhèin) agus faic an co-mheas de ùine pròiseasar a chaidh a chleachdadh agus cuimhne ris an fhear a chaidh iarraidh:

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Tha e follaiseach gu bheil tòrr a bharrachd cuimhne agus CPU glèidhte airson seirbheisean siostam na thathas a’ cleachdadh dha-rìribh. A thaobh an t-siostam kube, tha seo reusanta: thachair e gun do bhuail rianadair ingress nginx no nodelocaldns aig an ìre as àirde an CPU agus ag ithe tòrr RAM, agus mar sin an seo tha a leithid de thèarmann air fhìreanachadh. A bharrachd air an sin, chan urrainn dhuinn a bhith an urra ri clàran airson na 3 uairean mu dheireadh: tha e ion-mhiannaichte meatrach eachdraidheil fhaicinn thar ùine mhòr.

Chaidh siostam de “mholaidhean” a leasachadh. Mar eisimpleir, an seo chì thu dè na goireasan a bhiodh na b’ fheàrr dheth a bhith ag àrdachadh na “crìochan” (am bàr ceadaichte gu h-àrd) gus nach tachair “smeòrach”: an àm nuair a tha goireas air CPU no cuimhne a chaitheamh mu thràth anns an t-sliseag ùine ainmichte agus a’ feitheamh gus am bi e “neo-reòta”:

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Agus seo na pods a bu chòir casg a chuir air am biadh:

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

air a ' smeòrach + sgrùdadh ghoireasan, faodaidh tu barrachd air aon artaigil a sgrìobhadh, mar sin faighnich ceistean anns na beachdan. Ann am beagan fhaclan, is urrainn dhomh a ràdh gu bheil an obair airson a leithid de mheatraigean a dhèanamh fèin-ghluasadach gu math duilich agus gu feum e tòrr ùine agus gnìomh cothromachaidh le gnìomhan “uinneag” agus “CTE” Prometheus / VictoriaMetrics (tha na teirmean sin ann an luachan, leis gu bheil cha mhòr ann. chan eil dad mar seo ann am PromQL, agus feumaidh tu ceistean eagallach a roinn ann an grunn scrionaichean teacsa agus an dèanamh nas fheàrr).

Mar thoradh air an sin, tha innealan aig luchd-leasachaidh airson sùil a chumail air na h-àiteachan ainm aca ann an Cube, agus bidh e comasach dhaibh taghadh dhaibh fhèin càite agus dè an uair a dh’ fhaodas na goireasan aca a bhith “gearradh,” agus dè na frithealaichean a gheibh an CPU gu lèir fad na h-oidhche.

Dòighean-obrach

Anns a 'chompanaidh mar a tha e an-dràsta fasanta, tha sinn a 'cumail ri DevOps- agus SRE- neach-dreuchd Nuair a tha 1000 meanbh-sheirbheisean aig companaidh, timcheall air 350 luchd-leasachaidh agus 15 rianairean airson a’ bhun-structair gu lèir, feumaidh tu “a bhith fasanta”: air cùl na “faclan-luirg” sin tha feum èiginneach air a h-uile càil agus a h-uile duine a dhèanamh fèin-ghluasadach, agus cha bu chòir do luchd-rianachd a bhith nan cnap-starra. ann am pròiseasan.

Mar Ops, bidh sinn a’ toirt seachad grunn mheatairean agus clàran-deasachaidh do luchd-leasachaidh co-cheangailte ri ìrean freagairt seirbheis agus mearachdan.

Bidh sinn a’ cleachdadh dhòighean-obrach leithid: DEARG, USE и Comharran Òirle bhith gan cur còmhla. Bidh sinn a’ feuchainn ris an àireamh de chlàran-dannsa a lùghdachadh gus am bi e soilleir gu mionaideach dè an t-seirbheis a tha a’ crìonadh an-dràsta (mar eisimpleir, còdan freagairt gach diog, ùine freagairt le 99mh sa cheud), agus mar sin air adhart. Cho luath ‘s a bhios feum air cuid de mheatairean ùra airson deas-bhòrdan coitcheann, bidh sinn gan tarraing sa bhad agus gan cur ris.

Chan eil mi air grafaichean a tharraing airson mìos. Is dòcha gur e soidhne math a tha seo: tha e a’ ciallachadh gu bheil a’ mhòr-chuid de na “miannan” air an coileanadh mar-thà. Thachair e tron ​​​​t-seachdain gun tarraing mi graf ùr co-dhiù aon uair san latha.

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices

Tha an toradh a tha mar thoradh air sin luachmhor oir a-nis is ann ainneamh a bhios luchd-leasachaidh a’ dol gu luchd-rianachd le ceistean “far am bu chòir dhaibh coimhead air meatrach de sheòrsa air choreigin.”

Gnìomhachadh Mogal seirbheis dìreach timcheall air an oisean agus bu chòir dha beatha a dhèanamh mòran nas fhasa don h-uile duine, tha co-obraichean bho Innealan mu thràth faisg air a bhith a’ buileachadh an eas-chruthach “Istio neach fallain”: bidh cearcall beatha gach iarrtas HTTP(ean) ri fhaicinn ann an sgrùdadh, agus bidh e bidh e an-còmhnaidh comasach tuigsinn “aig an ìre aig an do bhris a h-uile càil” rè eadar-obrachadh eadar-sheirbheis (agus chan e a-mhàin). Subscribe to naidheachdan bhon mhòr-ionad DomClick. =)

Taic bun-structair Kubernetes

Gu h-eachdraidheil, bidh sinn a’ cleachdadh an dreach paiste Kubespray - Dreuchd iomchaidh airson a bhith a’ cleachdadh, a’ leudachadh agus ag ùrachadh Kubernetes. Aig àm air choreigin, chaidh taic airson ionadan neo-kubeadm a ghearradh bhon phrìomh mheur, agus cha deach am pròiseas atharrachadh gu kubeadm a mholadh. Mar thoradh air an sin, rinn companaidh Southbridge am forc fhèin (le taic kubeadm agus fuasgladh sgiobalta airson duilgheadasan èiginneach).

Tha am pròiseas airson a h-uile buidheann k8s ùrachadh a’ coimhead mar seo:

  • Gabh Kubespray bho Southbridge, thoir sùil air an t-snàthainn againn, Merjim.
  • Tha sinn a’ sgaoileadh an ùrachadh gu Stress- "Cube".
  • Bidh sinn a’ sgaoileadh an ùrachadh aon nód aig aon àm (ann an Ansible is e seo “sreath: 1”) a-steach Dev- "Cube".
  • Bidh sinn ag ùrachadh bhualadh oidhche Shathairne aon nód aig aon àm.

Tha planaichean ann airson a chur na àite san àm ri teachd Kubespray airson rudeigin nas luaithe agus rachaibh gu cubeadm.

Gu h-iomlan tha trì “Cubes” againn: Stress, Dev agus Prod. Tha sinn an dùil fear eile a chuir air bhog (fuireach teth) Prod-“Cube” anns an dàrna ionad dàta. Stress и Dev fuireach ann an “innealan brìgheil” (oVirt for Stress agus sgòth VMWare airson Dev). bhualadh- Tha “Cube” a’ fuireach air “meatailt lom”: tha iad sin nan nodan co-ionann le snàithleanan 32 CPU, 64-128 GB de chuimhne agus 300 GB SSD RAID 10 - tha 50 dhiubh ann uile gu lèir. Tha trì nodan “tana” coisrigte do “mhaighstirean” bhualadh- “Cuba”: 16 GB de chuimhne, 12 snàithlean CPU.

Airson reic, is fheàrr leinn “meatailt lom” a chleachdadh agus sreathan neo-riatanach mar OpenStack: chan fheum sinn “nàbaidhean fuaimneach” agus CPU goid ùine. Agus tha iom-fhillteachd rianachd timcheall air dùblachadh a thaobh OpenStack a-staigh.

Airson CI/CD “Cubic” agus co-phàirtean bun-structair eile bidh sinn a’ cleachdadh frithealaiche GIT air leth, Helm 3 (b’ e gluasad caran dòrainneach a bh’ ann bho Helm 2, ach tha sinn glè thoilichte leis na roghainnean atamach), Jenkins, Ansible agus Docker. Tha sinn dèidheil air meuran feart agus cleachdadh gu diofar àrainneachdan bho aon stòr.

co-dhùnadh

Kubernetes aig DomClick: mar as urrainn dhut cadal gu sìtheil a’ riaghladh cruinneachadh de 1000 microservices
Is e seo, gu coitcheann, cò ris a tha pròiseas DevOps coltach aig DomClick bho shealladh innleadair gnìomhachd. Thionndaidh a-mach nach robh an artaigil cho teicnigeach na bha mi an dùil: mar sin, lean na naidheachdan DomClick air Habré: bidh barrachd artaigilean “hardcore” ann mu Kubernetes agus barrachd.

Source: www.habr.com

Cuir beachd ann