Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Viktor Yagofarov no anarako, ary mamolavola ny sehatra Kubernetes ao amin'ny DomClick aho amin'ny maha mpitantana ny fampandrosoana ara-teknika ao amin'ny ekipan'ny Ops (operation). Te hiresaka momba ny firafitry ny fizotran'ny Dev <-> Ops aho, ny endri-javatra amin'ny fampandehanana ny iray amin'ireo cluster k8s lehibe indrindra ao Rosia, ary koa ny fomba amam-panao DevOps/SRE izay ampiharin'ny ekipanay.

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Ekipa Ops

Miisa 15 ny ekipan’ny Ops amin’izao fotoana izao. Ny telo amin’izy ireo no tompon’andraikitra amin’ny birao, ny roa miasa amin’ny fe-potoana hafa ary azo atao, anisan’izany ny alina. Noho izany, misy olona avy amin'ny Ops eo amin'ny fanaraha-maso hatrany ary vonona hamaly ny trangan-javatra misy fahasarotana rehetra. Tsy manana fiovana amin'ny alina isika, izay miaro ny saintsika ary manome ny olona rehetra ho ampy torimaso sy mandany fotoana fialan-tsasatra tsy amin'ny ordinatera ihany.

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Ny tsirairay dia manana fahaiza-manao samihafa: tambajotra, DBA, manam-pahaizana manokana momba ny stack ELK, admin / developer Kubernetes, fanaraha-maso, virtoaly, manam-pahaizana momba ny hardware, sns. Zavatra iray no mampiray ny rehetra - ny tsirairay dia afaka manolo ny tsirairay amintsika amin'ny lafiny iray: ohatra, mampiditra nodes vaovao ao amin'ny k8s cluster, manavao ny PostgreSQL, manoratra CI/CD + Ansible pipeline, automate zavatra amin'ny Python/Bash/Go, mampifandray fitaovana amin'ny Data center. Ny fahaiza-manao matanjaka amin'ny sehatra rehetra dia tsy manakana anao tsy hanova ny lalan'ny asanao ary hanomboka hivoatra amin'ny sehatra hafa. Ohatra, niditra tao amin'ny orinasa iray aho ho manam-pahaizana manokana amin'ny PostgreSQL, ary ankehitriny ny faritra tena andraikitro dia ny cluster Kubernetes. Ao amin'ny ekipa dia raisina an-tanan-droa ny haavony ary tena mivoatra ny fahatsapana ny fampiasana.

Raha ny marina dia mihaza izahay. Ny fepetra takiana amin'ny kandidà dia manara-penitra. Amiko manokana dia zava-dehibe ny hoe hifanaraka amin'ny ekipa ny olona iray, tsy misy fifandirana, fa mahay miaro ny fomba fijeriny ihany koa, te hivoatra ary tsy matahotra ny hanao zava-baovao, manolotra ny heviny. Ary koa, ilaina ny fahaiza-manao fandaharana amin'ny fiteny scripting, fahalalana ny fototry ny Linux sy anglisy. Ny teny anglisy dia ilaina tsotra izao mba ahafahan'ny olona iray raha misy fakap afaka google ny vahaolana amin'ny olana ao anatin'ny 10 segondra, fa tsy ao anatin'ny 10 minitra. Sarotra be izao ny mahita manam-pahaizana manana fahalalana lalina momba ny Linux: mampihomehy, fa ny roa amin'ireo kandidà telo dia tsy afaka mamaly ny fanontaniana hoe "Inona no atao hoe Load Average? Inona no nanaovana azy?”, ary ny fanontaniana hoe “Ahoana ny fomba hanangonana fanariam-pako fototra avy amin'ny fandaharana C” dia heverina ho zavatra avy amin'ny tontolon'ny olombelona mahery vaika... na dinosaure. Tsy maintsy miaritra an'izany isika, satria matetika ny olona dia manana fahaiza-manao hafa, saingy hampianatra Linux izahay. Ny valin'ny fanontaniana hoe "maninona ny injeniera DevOps no mila mahafantatra izany rehetra izany amin'ny tontolon'ny rahona maoderina" dia tsy maintsy avela ivelan'ny faritry ny lahatsoratra, fa amin'ny teny telo: ilaina izany rehetra izany.

Fitaovana ekipa

Ny ekipan'ny Tools dia manana anjara toerana lehibe amin'ny automation. Ny tena asan'izy ireo dia ny mamorona fitaovana sary sy CLI mety ho an'ny mpamorona. Ohatra, ny Confer fampandrosoana anatiny dia mamela anao hamoaka fampiharana ara-bakiteny amin'ny Kubernetes miaraka amin'ny tsindry totozy vitsivitsy, manamboatra ny loharanony, fanalahidy avy amin'ny vault, sns. Teo aloha dia nisy Jenkins + Helm 2, saingy tsy maintsy namolavola ny fitaovako manokana aho mba hanafoanana ny kopia-mametaka ary hampitony ny fiainan'ny rindrambaiko.

Ny ekipan'ny Ops dia tsy manoratra fantsona ho an'ny mpamorona, fa afaka manoro hevitra momba ny olana rehetra amin'ny asa sorany (mbola manana Helm 3 ny sasany).

DevOps

Raha ny momba ny DevOps, dia izao no hitantsika:

Ny ekipan'ny dev dia manoratra kaody, avoaka amin'ny alàlan'ny Confer to dev -> qa/stage -> prod. Ny andraikitra amin'ny fiantohana fa ny kaody dia tsy miadana sy tsy misy lesoka dia miankina amin'ny ekipa Dev sy Ops. Amin'ny antoandro dia tokony hamaly ny trangan-javatra voalohany amin'ny fangatahana ny olona miasa ao amin'ny ekipa Ops, ary amin'ny hariva sy amin'ny alina, ny mpitantana miasa (Ops) dia tokony hamoha ny developer miasa raha fantany fa azo antoka fa tsy ao amin'ny fotodrafitrasa no olana. Ny metrika sy ny fanairana rehetra amin'ny fanaraha-maso dia miseho ho azy na semi-automatique.

Ny faritry ny andraikitry ny Ops dia manomboka amin'ny fotoana namoahana ny fampiharana ho amin'ny famokarana, fa ny andraikitr'i Dev dia tsy mifarana eo - manao zavatra mitovy izahay ary ao anaty sambo iray ihany.

Manoro hevitra ny mpandrindra ny mpamorona raha mila fanampiana amin'ny fanoratana microservice admin izy ireo (ohatra, Mandehana backend + HTML5), ary ny mpandrindra dia manoro hevitra ny mpamorona momba ny olana momba ny fotodrafitrasa na olana mifandraika amin'ny k8s.

Raha ny marina, tsy manana monolith mihitsy izahay, microservices ihany. Ny isan'izy ireo hatreto dia miovaova eo anelanelan'ny 900 sy 1000 ao amin'ny cluster prod k8s, raha refesina amin'ny isa. deployments. Ny isan'ny pods dia miovaova eo anelanelan'ny 1700 sy 2000. Misy eo amin'ny 2000 eo ho eo ny pods ao amin'ny cluster prod.

Tsy afaka manome isa marina aho, satria manara-maso ny microservices tsy ilaina izahay ary manapaka azy ireo semi-automatique. K8s dia manampy antsika hanara-maso ireo singa tsy ilaina inutil-operateur, izay mitahiry loharano sy vola be.

Fitantanana ny loharanon-karena

fanaraha-maso

Ny fanaraha-maso voarafitra tsara sy ahalalana no lasa vato fehizoro amin'ny fampandehanana salohy lehibe. Mbola tsy nahita vahaolana manerantany izay mahafeno ny 100% amin'ny filàna fanaraha-maso rehetra izahay, noho izany dia mamorona vahaolana mahazatra isan-karazany amin'ity tontolo ity izahay.

  • Zabbix. Fanaraha-maso taloha tsara, izay natao indrindra hanara-maso ny toetry ny fotodrafitrasa ankapobeny. Izy io dia milaza amintsika rehefa maty ny node amin'ny resaka fanodinana, fitadidiana, kapila, tambajotra, sy ny sisa. Tsy misy na inona na inona mihoatra ny natoraly, fa manana mpiasan'ny DaemonSet manokana ihany koa izahay, miaraka amin'ny fanampiany, ohatra, manara-maso ny toetry ny DNS ao amin'ny cluster: mitady coredns pods adala izahay, manamarina ny fisian'ny mpampiantrano ivelany. Toa maninona no manahirana an'io, fa amin'ny fifamoivoizana be dia be ity singa ity dia teboka tsy mahomby. Teo aloha aho dia efa voalaza, ny fomba niaretako ny fahombiazan'ny DNS tao anaty cluster.
  • Prometheus Operator. Ny andiana mpanondrana samihafa dia manome topimaso lehibe momba ny singa rehetra ao amin'ny cluster. Manaraka izany dia alaintsika sary an-tsaina izany rehetra izany amin'ny dashboard lehibe ao Grafana, ary mampiasa alertmanager ho fanairana.

Fitaovana mahasoa hafa ho antsika dia ny lisitry ny fidirana. Nanoratra izany izahay taorian'ny imbetsaka nifanena tamina toe-javatra iray izay nifanindry tamin'ny lalan'ny Ingress an'ny ekipa iray hafa, ka niteraka fahadisoana 50x. Alohan'ny handefasana azy any amin'ny famokarana, dia manamarina ny mpamorona fa tsy hisy hisy fiantraikany, ary ho an'ny ekipako dia fitaovana tsara ho an'ny fitiliana voalohany ny olana amin'ny Ingresses. Mampihomehy fa nosoratana ho an'ny admin izy io tamin'ny voalohany ary toa “tsy misy dikany”, saingy rehefa avy tia an'ilay fitaovana ireo ekipa devoly dia niova be ilay izy ary nanomboka tsy nitovy tamin'ny hoe “nanamboatra endrika web ho an'ny admin ny admin. ” Tsy ho ela dia handao ity fitaovana ity izahay ary hamarinina ny toe-javatra toy izany na dia alohan'ny hivoahan'ny fantsona aza.

Ny loharanon'ny ekipa ao amin'ny Cube

Alohan'ny hidirantsika amin'ireo ohatra dia ilaina ny manazava ny fomba anomezantsika loharanon-karena microservices.

Mba hahatakarana hoe iza no ekipa ary firy no mampiasa azy harena (processor, fitadidiana, SSD eo an-toerana), omenay ny baiko tsirairay avy Anaran-tsehatra ao amin'ny "Cube" ary mametra ny fahaizany ambony indrindra amin'ny resaka processeur, fahatsiarovana ary disk, rehefa niresaka momba ny filan'ny ekipa teo aloha. Arak'izany, ny baiko iray, amin'ny ankapobeny, dia tsy hanakana ny cluster manontolo amin'ny fametrahana azy, manome fahatsiarovana an'arivony sy terabytes. Ny fidirana amin'ny namespace dia omena amin'ny alàlan'ny AD (mampiasa RBAC izahay). Namespaces sy ny fetrany dia ampiana amin'ny alàlan'ny fangatahana misintona mankany amin'ny tahiry GIT, ary avy eo dia mihodina ho azy amin'ny alàlan'ny fantsona Ansible ny zava-drehetra.

Ohatra iray amin'ny fizarana loharano ho an'ny ekipa:

namespaces:

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

Fangatahana sy fetra

Cubed" Request dia ny isan'ny loharano voatokana ho an'ny pod (kaontenera docker iray na maromaro) ao anaty cluster. Ny fetra dia ambony indrindra tsy azo antoka. Hitanao matetika amin'ny tabilao ny fomba nametrahan'ny ekipa sasany fangatahana be loatra ho an'ny fampiharana azy rehetra ary tsy afaka mametraka ny fampiharana amin'ny "Cube", satria efa "lany" ny fangatahana rehetra eo ambanin'ny anaran'izy ireo.

Ny fomba tsara hivoahana amin'ity toe-javatra ity dia ny mijery ny tena fandaniana loharanon-karena ary mampitaha izany amin'ny vola nangatahana (Fangatahana).

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000
Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Ao amin'ny pikantsary etsy ambony dia hitanao fa ny CPU "Nangataka" dia mifanandrify amin'ny tena isan'ny kofehy, ary ny fetra dia afaka mihoatra ny tena isan'ny kofehy CPU =)

Andeha hojerentsika amin'ny antsipiriany ny namespace sasany (nifidy ny namespace kube-system aho - ny anaran'ny rafitra ho an'ny singa ao amin'ny "Cube") ary jereo ny tahan'ny fotoana sy ny fitadidiana ny processeur tena ampiasaina amin'ilay nangatahana:

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Mazava ho azy fa betsaka kokoa ny fitadidiana sy ny CPU natokana ho an'ny serivisy rafitra noho ny tena ampiasaina. Raha ny momba ny rafitra kube, dia marina izany: nitranga fa ny nginx ingress controller na nodelocaldns teo amin'ny fara tampony dia namely ny CPU ary nandany RAM be dia be, noho izany dia voamarina ny tahiry toy izany. Fanampin'izany, tsy afaka miantehitra amin'ny tabilao mandritra ny 3 ora farany isika: tsara ny mahita metrika ara-tantara mandritra ny fotoana maharitra.

Natsangana ny rafitra “recommendation”. Ohatra, azonao jerena eto hoe inona no loharano mety tsara kokoa amin'ny fampiakarana ny "fetra" (ny bara ambony avela) mba tsy hitrangan'ny "throttling": ny fotoana nandanian'ny loharanon-karena iray ny CPU na ny fitadidiana ao anatin'ny fotoana voatondro ary miandry mandra-pahatongan'ny "tsy hivaingana":

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Ary ireto ny pods tokony hanakanana ny filany:

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

amin'ny Manakenda + fanaraha-maso loharano, afaka manoratra lahatsoratra mihoatra ny iray ianao, koa mametraha fanontaniana ao amin'ny fanehoan-kevitra. Amin'ny teny vitsivitsy dia azoko lazaina fa sarotra be ny asan'ny automatique toy izany ary mitaky fotoana be sy fifandanjana amin'ny fiasan'ny "varavarankely" sy ny "CTE" Prometheus / VictoriaMetrics (ireo teny ireo dia ao anaty teny nalaina, satria saika misy tsy misy toa an'ity ao amin'ny PromQL, ary tsy maintsy mizara ireo fanontaniana mampatahotra amin'ny efijery maromaro misy lahatsoratra ianao ary manatsara azy ireo).

Vokatr'izany, manana fitaovana hanaraha-maso ny toerana misy ny anaran'izy ireo ao amin'ny Cube ny mpamorona, ary afaka misafidy ho an'ny tenany izy ireo hoe aiza sy amin'ny fotoana inona no ahafahan'ny rindranasa manapaka ny loharanon'izy ireo, ary ireo lohamilina azo omena ny CPU manontolo mandritra ny alina.

fomba fiasa

Ao amin'ny orinasa toy izao lamaody, mifikitra amin'ny DevOps- sy SRE-mpitsabo Rehefa manana microservices 1000 ny orinasa iray, mpamorona 350 eo ho eo ary mpitantana 15 ho an'ny fotodrafitrasa iray manontolo, dia tsy maintsy "manala-damaody" ianao: ao ambadik'ireo "baswords" rehetra ireo dia ilaina maika ny manao automatique ny zava-drehetra sy ny olon-drehetra, ary tsy tokony ho tampotampoka ny mpitantana. amin'ny dingana.

Amin'ny maha Ops, manome metrika sy dashboard isan-karazany ho an'ny mpamorona mifandraika amin'ny tahan'ny valin'ny serivisy sy ny lesoka izahay.

Mampiasa fomba fiasa toy ny: MENA, AMPIASAO и Golden Signalsamin'ny fampifangaroana azy ireo miaraka. Miezaka manamaivana ny isan'ny dashboard izahay mba ho hita indray mipi-maso hoe iza amin'ireo serivisy no manambany (ohatra, kaody valiny isan-tsegondra, fotoana famaliana amin'ny 99 isan-jato), sns. Raha vantany vao ilaina ny metrika vaovao sasany amin'ny dashboard ankapobeny, dia manao sary avy hatrany izahay ary manampy azy ireo.

Efa iray volana aho no tsy nanao sary. Mety ho famantarana tsara izany: midika izany fa ny ankamaroan'ny "faniriana" dia efa tanteraka. Nitranga fa nandritra ny herinandro aho dia nanao sary vaovao indray mandeha isan'andro, fara fahakeliny.

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000

Sarobidy ny vokatra vokatr'izany satria zara raha mandeha any amin'ny admin ny developer amin'ny fanontaniana hoe "aiza no hijerena karazana metrika."

fampidirana ny Service Mesh akaiky dia akaiky ary tokony hanamora ny fiainana ho an'ny rehetra, ny mpiara-miasa ao amin'ny Tools dia efa akaiky ny fampiharana ny abstract "Istio ny olona salama": ny tsingerin'ny fiainan'ny HTTP(s) fangatahana tsirairay dia ho hita amin'ny fanaraha-maso, ary izany dia ho azo atao foana ny mahatakatra "tamin'ny dingana inona no rava ny zava-drehetra" mandritra ny fifandraisana amin'ny serivisy (fa tsy fotsiny). Misoratra anarana amin'ny vaovao avy amin'ny DomClick hub. =)

Fanohanana fotodrafitrasa Kubernetes

Ara-tantara, mampiasa ny dikan-teny voapetaka izahay Kubespray - Andraikitra azo atao amin'ny fametrahana, fanitarana ary fanavaozana ny Kubernetes. Tamin'ny fotoana iray, nesorina tao amin'ny sampana lehibe ny fanohanana ny fametrahana tsy kubeadm, ary tsy naroso ny fizotry ny fifindrana amin'ny kubeadm. Vokatr'izany, ny orinasa Southbridge dia nanao ny fork azy manokana (miaraka amin'ny fanohanan'ny kubeadm sy ny famahana haingana ny olana goavana).

Ny dingana amin'ny fanavaozana ny k8s cluster rehetra dia toa izao:

  • Andeha isika haka Kubespray avy any Southbridge, jereo miaraka amin'ny lohanay, Merjim.
  • Mamoaka ny fanavaozana amin'ny adin-tsaina- "Cube".
  • Mamoaka ny fanavaozana iray isaky ny mandeha izahay (ao amin'ny Ansible ity dia "serial: 1") in Dev- "Cube".
  • Manavao izahay Prod ny sabotsy hariva node iray isaky ny mandeha.

Misy ny fikasana hanolo izany amin’ny ho avy Kubespray ho an'ny zavatra haingana kokoa ary mandehana any kubeadm.

Amin'ny fitambarany dia manana "Cubes" telo izahay: Stress, Dev ary Prod. Mikasa ny hanomboka iray hafa izahay (mafana standby) Prod-“Cube” ao amin'ny foibe data faharoa. adin-tsaina и Dev miaina amin'ny "milina virtoaly" (oVirt ho an'ny Stress sy rahona VMWare ho an'ny Dev). Prod- "Cube" dia miaina amin'ny "metaly miboridana": ireo nodes mitovy amin'ny kofehy CPU 32, fahatsiarovana 64-128 GB ary 300 GB SSD RAID 10 - misy 50 amin'izy ireo. Node telo "manify" natokana ho an'ny "masters" Prod- "Cuba": fahatsiarovana 16 GB, kofehy CPU 12.

Ho an'ny varotra, aleontsika mampiasa "metaly miboridana" ary misoroka ny sosona tsy ilaina toy ny OpenStack: tsy mila "mpifanolo-bodirindrina mitabataba" sy CPU izahay mangalatra fotoana. Ary ny fahasarotan'ny fitantanana dia avo roa heny eo ho eo raha ny OpenStack ao an-trano.

Ho an'ny CI / CD "Cubic" sy ireo singa fotodrafitrasa hafa dia mampiasa mpizara GIT misaraka izahay, Helm 3 (fifindrana somary nampanaintaina avy amin'ny Helm 2 izany, saingy faly izahay amin'ny safidy. atomika), Jenkins, Ansible ary Docker. Tianay ny sampana manasongadina sy ny fametrahana amin'ny tontolo samihafa avy amin'ny tahiry iray.

famaranana

Kubernetes ao amin'ny DomClick: ny fomba hatoriana am-pilaminana amin'ny fitantanana vondron'olona microservices 1000
Izany, amin'ny ankapobeny, ny endriky ny fizotran'ny DevOps ao amin'ny DomClick amin'ny fomba fijerin'ny injeniera iray. Nivadika ho tsy ara-teknika noho ny noheveriko ilay lahatsoratra: noho izany, araho ny vaovao DomClick ao amin'ny Habré: hisy lahatsoratra “hardcore” bebe kokoa momba ny Kubernetes sy ny maro hafa.

Source: www.habr.com

Add a comment