Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Anio aho dia mikasa ny hiresaka momba ny fomba hanoratana fangatahana sy ny fepetra takiana amin'ny fampiharana anao mba hiasa tsara amin'ny Kubernetes. Mba tsy hisian'ny aretin'andoha amin'ny fampiharana, ka tsy mila mamorona sy manangana "cratch" manodidina azy ianao - ary mandeha araka ny nokasain'ny Kubernetes ny zava-drehetra.

Ity lahateny ity dia ampahany amin'ny "Slurm Night School ao amin'ny Kubernetes" Azonao atao ny mijery ny lahateny teorika misokatra amin'ny Sekoly hariva ao amin'ny Youtube, navondrona ho playlist. Ho an'ireo izay tia lahatsoratra fa tsy video, nomaninay ity lahatsoratra ity.

Pavel Selivanov no anarako, amin'izao fotoana izao aho no injeniera lehibe DevOps ao amin'ny Mail.ru Cloud Solutions, manao rahona izahay, manao kubernetes fitantanana sy ny sisa. Ny asako izao dia misy fanampiana amin'ny fampandrosoana, manodina ireo rahona ireo, manodina ireo rindranasa soratanay ary mamolavola mivantana ireo fitaovana omenay ireo mpampiasa anay.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Nanao DevOps aho, mieritreritra aho nandritra ny telo taona farany. Saingy, raha ny fitsipika, dia nanao izay ataon'ny DevOps aho nandritra ny dimy taona teo ho eo izao. Talohan'izay dia nandray anjara betsaka tamin'ny zavatra admin aho. Efa ela aho no nanomboka niara-niasa tamin'i Kubernetes - angamba efa-taona teo ho eo no lasa nanomboka niasa tamin'io.

Amin'ny ankapobeny, nanomboka tamin'ny Kubernetes dia version 1.3, angamba, ary angamba 1.2 - fony izy mbola kely. Ankehitriny dia tsy ao anatin'ny fahazazany intsony - ary miharihary fa misy fitakiana goavana eny an-tsena ho an'ireo injeniera maniry ny hanao Kubernetes. Ary ny orinasa dia manana fangatahana avo be amin'ny olona toy izany. Noho izany, raha ny marina, ity lahateny ity dia niseho.

Raha miresaka momba ny drafitra izay horesahako isika dia toa izao, ao anaty fononteny dia voasoratra (TL;DR) - "lava loatra; aza mamaky". Ny famelabelarako anio dia ahitana lisitra tsy misy farany.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Raha ny marina, ny tenako dia tsy tia famelabelarana toy izany rehefa natao izy ireo, saingy lohahevitra toy izany izany rehefa nanomana an'ity famelabelarana ity aho dia tsy nahatakatra ny fomba handaminana ity fampahalalana ity amin'ny fomba hafa.

Satria, amin'ny ankapobeny, ity fampahalalana ity dia "ctrl+c, ctrl+v", avy amin'ny, ankoatry ny zavatra hafa, ny Wiki ao amin'ny fizarana DevOps, izay nametrahanay fepetra takiana ho an'ny mpamorona: Kubernetes, tokony ho toy izao izany. "

Izany no nahatonga ny famelabelarana ho lisitra lehibe. Miala tsiny. Hiezaka aho hilaza araka izay azo atao mba tsy hankaleo raha azo atao.

Inona no hojerentsika izao:

  • ireto dia, voalohany, logs (rakitra fampiharana?), inona no tokony hatao amin'izy ireo ao amin'ny Kubernetes, inona no hatao amin'izy ireo, inona no tokony ho izy;
  • inona no tokony hatao amin'ny fanamafisana ao amin'ny Kubernetes, inona no fomba tsara indrindra sy ratsy indrindra hanamboarana fampiharana ho an'ny Kubernetes;
  • Andeha isika hiresaka momba ny fanamarinana ny fidirana amin'ny ankapobeny, ny tokony ho endriky ny;
  • andao hiresaka ny atao hoe fanakatonana mahafinaritra;
  • andao hiresaka momba ny loharanon-karena indray;
  • Andeha isika hikasika ny lohahevitra momba ny fitahirizana angon-drakitra indray;
  • ary amin'ny farany dia holazaiko aminao ny dikan'ity fampiharana rahona mistery ity. Cloudnativeness, ho toy ny adjectif amin'ity teny ity.

hazo

Manoro hevitra aho hanomboka amin'ny logs - amin'ny toerana tokony hanosehana ireo logs ireo amin'ny Kubernetes. Nandefa fampiharana ao amin'ny Kubernetes ianao izao. Araka ny mahazatra, ny fampiharana teo aloha dia nanoratra logs tany ho any amin'ny rakitra iray. Ny rindranasa ratsy dia nanoratra lozisialy tamina rakitra iray tao amin'ny lahatahiry an-tranon'ilay mpamorona namoaka ilay fampiharana. Ny fampiharana tsara dia nanoratra diary tamina rakitra iray tany ho any /var/log.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Arak'izany, ny mpitantana tsara dia manana zavatra namboarina tao amin'ny fotodrafitrasany izay azon'ireo logs ireo mihodina - ny rsyslog mitovy, izay mijery ireo logs ireo ary rehefa misy zavatra mitranga amin'izy ireo dia betsaka izy ireo, mamorona kopia backup, mametraka logs ao. , mamafa ny rakitra taloha, mihoatra ny herinandro, enim-bolana ary mihoatra. Raha ny teoria dia tokony hanana fepetra isika mba tsy ho lany ny habaka eo amin'ny servera famokarana (server de combat?) fotsiny satria manoratra logs ny fampiharana. Ary, araka izany, ny famokarana manontolo dia tsy nijanona noho ny hazo.

Rehefa mifindra any amin'ny tontolon'ny Kubernetes isika ary manao zavatra mitovy amin'izany any, ny zavatra voalohany azonao tandremana dia ny hoe manohy manoratra azy ireo ny olona, ​​rehefa nanoratra logs tao anaty rakitra.

Hita fa raha miresaka momba an'i Kubernetes isika, ny toerana mety hanoratana logs any amin'ny toerana iray avy amin'ny kaontenera docker dia ny manoratra azy ireo fotsiny avy amin'ny fampiharana mankany amin'ny antsoina hoe Stdout/Stderr, izany hoe ny stream output mahazatra amin'ny rafitra miasa, ny output fahadisoana mahazatra. Ity no fomba marina indrindra, tsotra ary lojika indrindra amin'ny fametrahana logs ao amin'ny Docker ary indrindra ao amin'ny Kubernetis. Satria raha manoratra logs amin'ny Stdout/Stderr ny fampiharanao, dia anjaran'i Docker sy ny Kubernetes add-on ny manapa-kevitra izay hatao amin'ireo logs ireo. Docker dia hanangana ny rakitra manokana amin'ny endrika JSON.

Mipetraka eto ny fanontaniana, inona no hataonao manaraka amin'ireo logs ireo? Ny fomba tsotra indrindra dia mazava, manana ny fahafahana manao izany isika kubectl logs ary jereo ireto diarin'ireo "pods" ireo. Saingy, angamba, tsy safidy tsara izany - zavatra hafa tokony hatao amin'ny logs.

Amin'izao fotoana izao, andeha isika hiresaka amin'ny fotoana iray ihany, satria nikasika ny lohahevitra momba ny hazo izahay, momba ny zavatra tokony ho endriky ny hazo. Izany hoe, tsy mihatra mivantana amin'ny Kubernetes izany, fa rehefa manomboka mieritreritra izay tokony hatao amin'ny logs isika, dia tsara ny mieritreritra an'izany koa.

Mila karazana fitaovana isika, amin'ny fomba am-pitiavana, izay hitondra ireo diary izay apetraky ny docker ao amin'ny rakitra ary handefa azy ireo any amin'ny toerana iray. Amin'ny ankapobeny, mazàna izahay dia manangana karazana mpandraharaha ao anatin'ny Kubernetes amin'ny endrika DaemonSet - mpanangom-bokatra, izay lazaina fotsiny hoe aiza no misy ny hazo angonin'i Docker. Ary ity mpandraharaha mpanangom-bokatra ity dia maka azy ireo fotsiny, na dia manara-maso azy ireo eny an-dalana aza, mety mampanan-karena azy ireo amin'ny fampahalalana meta fanampiny ary, amin'ny farany, mandefa azy ireo ho tahiry any ho any. Efa azo atao ny variana any. Ny mahazatra indrindra dia ny Elasticsearch, izay ahafahanao mitahiry logs ary azonao alaina mora foana avy eo. Avy eo, mampiasa fangatahana, mampiasa Kibana, ohatra, manangana grafika mifototra amin'izy ireo, manangana fanairana mifototra amin'izy ireo, sns.

Ny hevitra manan-danja indrindra, tiako averina indray, dia ny ao anatin'ny Docker, indrindra ao anatin'ny Kubernetes, ny fitehirizana ny dianao ao anaty rakitra dia hevitra ratsy.

Satria voalohany, sarotra ny mampiditra ny logs ao anaty container amin'ny rakitra. Tsy maintsy miditra ao amin'ny kaontenera aloha ianao, mandehana any, ary avy eo mijery ny logs. Ny teboka manaraka dia ny hoe raha manana logs ao anaty rakitra ianao, dia matetika ny kaontenera dia manana tontolo minimalista ary tsy misy fitaovana ilaina amin'ny asa mahazatra miaraka amin'ny logs. Aleveno izy ireo, jereo, sokafy amin'ny tonian-dahatsoratra. Ny fotoana manaraka dia rehefa manana logs ao anaty rakitra ao anaty container isika, raha voafafa io container io, azonao atao, ny logs dia ho faty miaraka aminy. Araka izany, ny famerenana indray ny kaontenera dia midika fa tsy misy logs intsony. Indray, safidy ratsy.

Ary ny teboka farany dia ny ao anatin'ny kaontenera dia matetika misy ny fampiharana anao ary izany no izy - matetika no hany dingana mandeha. Tsy misy resaka mihitsy momba izay dingana mety hanodina rakitra miaraka amin'ny diarinao. Raha vao manomboka soratana amin'ny rakitra iray ny logs, dia midika izany fa, miala tsiny, hanomboka hamoy ny lohamilina famokarana isika. Satria, voalohany, sarotra ny mahita azy ireo, tsy misy manara-maso azy ireo, miampy tsy misy mifehy azy ireo - araka izany, mitombo tsy misy farany ny rakitra mandra-pahatapitry ny habaka ao amin'ny server. Noho izany, lazaiko indray fa hevitra ratsy ny fidirana ao amin'ny Docker, indrindra ao amin'ny Kubernetes, amin'ny rakitra iray.

Ny teboka manaraka, eto aho dia te hiresaka momba izany indray - satria miresaka momba ny lohahevitry ny hazo isika, dia tsara ny miresaka momba ny fomba tokony hijerena ny logs mba hahamora ny fiaraha-miasa amin'izy ireo. Araka ny nolazaiko dia tsy mifandray mivantana amin'ny Kubernetes ny lohahevitra, fa mifandray tsara amin'ny lohahevitra DevOps. Momba ny kolontsaina fampandrosoana sy ny finamanana eo amin'ireo sampana roa samihafa ireo - Dev sy Ops, mba hahazoan'ny rehetra aina.

Midika izany fa amin'izao fotoana izao, ny logs dia tokony hosoratana amin'ny endrika JSON. Raha manana fampiharana tsy takatry ny sainao manokana ianao, izay manoratra logs amin'ny endrika tsy takatry ny saina satria mampiditra karazana printy na zavatra toy izany ianao, dia izao no fotoana hanaovana google karazana framework, karazana wrapper izay ahafahanao mampihatra ny fanoratana ara-dalàna; Ampifanaraho ao amin'ny JSON ny mari-pamantarana logging, satria endrika tsotra ny JSON, tsotra ny famafazana azy.

Raha tsy mandeha araka ny fepetra sasany ny JSON-nao, dia tsy misy mahalala hoe inona, fara faharatsiny, manorata logs amin'ny endrika azo alaina. Eto, raha ny tokony ho izy, dia mendrika ny mieritreritra ny zava-misy fa, ohatra, raha toa ianao ka mitantana andian-kaontenera na dingana fotsiny miaraka amin'ny nginx, ary samy manana ny firafitry ny logging azy, dia mety ho toa tsy mety aminao izany. zarao azy ireo. Satria isaky ny ohatra nginx vaovao dia mila manoratra ny parser anao manokana ianao, satria samy hafa ny fanoratana logs. Averina indray, mety ho mendrika ny hieritreretana ny hahazoana antoka fa ireo tranga nginx rehetra ireo dia mitovy ny fikirakirana logiciel ary nanoratra ny diany rehetra tamin'ny fomba mitovy. Toy izany koa ny fampiharana rehetra.

Amin'ny farany, te-hanampy solika amin'ny afo ihany koa aho izay, raha ny tsara indrindra, dia tokony hialana ny logs misy endrika maromaro. Ity ny zava-misy, raha efa niara-niasa tamin'ny mpanangom-bokatra ianao, dia azo inoana fa efa hitanao ny zavatra nampanantenainy anao, fa afaka miara-miasa amin'ny diary maromaro izy ireo, mahafantatra ny fomba fanangonana azy ireo, sns. Raha ny marina, raha ny hevitro dia tsy misy mpanangom-bokatra iray amin'izao fotoana izao afaka manangona logs maromaro amin'ny ankapobeny, feno ary tsy misy hadisoana. Amin'ny fomba maha-olombelona, ​​ka mety sy tsy misy diso.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Fa ny trace stack dia diary misy andalana marobe sy ny fomba hisorohana azy ireo. Ny fanontaniana eto dia ny hoe ny log dia rakitsoratra momba ny hetsika iray, ary ny stactrace dia tsy dia log. Raha manangona lozisialy izahay ary mametraka azy ireo any amin'ny toerana iray ao amin'ny Elasticsearch ary avy eo manao sary avy amin'izy ireo, manangana tatitra momba ny asan'ny mpampiasa ao amin'ny tranokalanao, dia rehefa mahazo trace ianao dia midika izany fa misy toe-javatra tsy ampoizina amin'ny fampiharana anao. Ary misy dikany ny mampiakatra ho azy ny trace stack any amin'ny toerana iray izay afaka manara-maso azy ireo.

Ity dia rindrankajy (Ilay Sentry ihany) izay natao manokana hiasa amin'ny trace stack. Afaka mamorona asa mandeha ho azy avy hatrany, manendry azy ireo amin'ny olona iray, mailo rehefa misy stacttraces, vondrona ireo stacttraces amin'ny karazana iray, sy ny sisa. Amin'ny ankapobeny, tsy dia misy dikany loatra ny miresaka momba ny stactraces rehefa miresaka momba ny logs isika, satria ireo, raha ny marina, dia zavatra samy hafa manana tanjona samihafa.

fanahafana

Avy eo dia miresaka momba ny fanamafisana ao amin'ny Kubernetes isika: inona no tokony hatao amin'izany sy ny fomba tokony hamboarina ny fampiharana ao anatin'ny Kubernetes. Amin'ny ankapobeny, matetika aho no milaza fa tsy momba ny container i Docker. Fantatry ny rehetra fa ny Docker dia momba ny kaontenera, na dia ireo izay tsy niara-niasa tamin'i Docker betsaka aza. Averiko indray, tsy momba ny container ny Docker.

Docker, araka ny hevitro, dia momba ny fenitra. Ary misy fitsipika ho an'ny saika ny zava-drehetra: fenitra amin'ny fananganana ny fampiharanao, fenitra amin'ny fametrahana ny rindranasao.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Ary ity zavatra ity - nampiasainay teo aloha, nanjary nalaza indrindra tamin'ny fahatongavan'ny kaontenera - io zavatra io dia antsoina hoe ENV (environment) variables, izany hoe, ny fari-piainan'ny tontolo iainana izay ao amin'ny rafitra fiasanao. Amin'ny ankapobeny dia fomba tsara indrindra hanamboarana ny rindranasao izany, satria raha manana fampiharana amin'ny JAVA, Python, Go, Perl, Andriamanitra mandrara, ary afaka mamaky ny mpampiantrano angon-drakitra, mpampiasa angon-drakitra, ny tenimiafina momba ny tenimiafina database, dia mety izany. Manana fampiharana amin'ny fiteny efatra samy hafa ianao ao amin'ny drafitra angona amin'ny fomba mitovy. Tsy misy configs hafa intsony.

Ny zava-drehetra dia azo amboarina amin'ny alàlan'ny variable ENV. Rehefa miresaka momba an'i Kubernetes isika dia misy fomba tsara hanambarana ny fari-piadidiana ENV ao anatin'ny Deployment. Noho izany, raha miresaka momba ny angon-drakitra miafina isika, dia afaka manosika avy hatrany ny angon-drakitra miafina avy amin'ny fari-piadidiana ENV (tenimiafina mankany amin'ny tahiry, sns) ho tsiambaratelo, mamorona cluster miafina ary manondro ao amin'ny famaritana ENV ao amin'ny Deployment fa tsy manambara mivantana isika. ny sandan'ity fari-pahalalana ity, ary ny sandan'ity tenimiafina tenimiafina ity dia hovakiana avy amin'ny tsiambaratelo. Fihetsika mahazatra Kubernetes izany. Ary ity no safidy tsara indrindra hanamboarana ny fampiharanao. Eo amin'ny sehatry ny kaody fotsiny dia mihatra amin'ny mpamorona indray izany. Raha DevOps ianao dia afaka manontany hoe: “Ry lehilahy, ampianaro ny fampiharana anao hamaky ny fari-piainan'ny tontolo iainana. Ary ho faly isika rehetra.

Raha mamaky ny fari-piainan'ny tontolo iainana mitovy ny olona rehetra ao amin'ny orinasa, dia tsara izany. Mba tsy hitranga fa ny sasany miandry ny postgres database, ny hafa miandry ny anaran'ny database, ny hafa miandry zavatra hafa, ny hafa miandry dbn karazana, ka, araka izany, dia misy ny fitoviana.

Ny olana dia tonga rehefa manana fari-piainana be dia be ianao ka manokatra Deployment fotsiny - ary misy andalana dimanjato amin'ny fari-piainan'ny tontolo iainana. Amin'ity tranga ity, manana fari-piafaran'ny tontolo iainana fotsiny ianao - ary tsy mila mampijaly tena intsony ianao. Amin'ity tranga ity dia mety ny manomboka mampiasa configs. Izany hoe, mampiofana ny fampiharana anao hampiasa configs.

Ny fanontaniana tokana dia ny hoe tsy araka ny eritreritrao ny config. Config.pi dia tsy config mora ampiasaina. Na ny config sasany amin'ny endrikao manokana, raha tsy izany dia nomena talenta - tsy io ihany koa ny config tiako lazaina.

Ny tiako holazaina dia ny fanamafisana amin'ny endrika azo ekena, izany hoe, ny fenitra malaza indrindra dia ny .yaml. Mazava ny fomba famakiana azy, azo vakiana amin'ny olona izy io, mazava ny famakiana azy avy amin'ny fampiharana.

Noho izany, ho fanampin'ny YAML, azonao atao koa, ohatra, ny mampiasa JSON, ny parsing dia mety amin'ny YAML amin'ny resaka famakiana ny fanitsiana fampiharana avy any. Miharihary fa sarotra kokoa ho an'ny olona ny mamaky. Azonao atao ny manandrana ny format, a la ini. Tena mety ny mamaky, amin'ny fomba fijerin'olombelona, ​​​​saingy mety ho sarotra ny manodina azy ho azy, amin'ny heviny hoe raha te-hamorona ny configs anao manokana ianao, dia mety ho sarotra ny mamorona ny format ini.

Na izany na tsy izany, na inona na inona endrika nofidinao, ny teboka dia ny fomba fijery Kubernetes dia tena mety. Azonao atao ny mametraka ny config anao manontolo ao anatin'ny Kubernetes, ao amin'ny ConfigMap. Ary raiso ity configmap ity ary angataho izy mba hapetraka ao anatin'ny pod ao amin'ny lahatahiry manokana, izay hamakian'ny fampiharanao ny configuration avy amin'ity configmap ity ho toy ny rakitra fotsiny. Izany, raha ny marina, no tsara atao rehefa manana safidy maro ianao amin'ny fampiharana anao. Na karazana rafitra saro-takarina fotsiny izany, misy akany.

Raha manana configmap ianao dia azonao atao tsara ny mampianatra ny rindranasao, ohatra, manara-maso ho azy ny fanovana ao amin'ny rakitra misy ny configmap, ary mamerina mandeha ho azy ny fampiharana anao rehefa miova ny config. Safidy tsara indrindra izany amin'ny ankapobeny.

Efa niresaka momba izany indray aho - tsy ao amin'ny configmap ny fampahalalana miafina, ny fampahalalana miafina dia tsy amin'ny variables, ny fampahalalana miafina dia tsy ao anaty tsiambaratelo. Avy eo, ampifandraiso amin'ny diplaomasia io fampahalalana miafina io. Matetika izahay dia mitahiry ny famaritana rehetra momba ny zavatra Kubernetes, fametrahana, configmaps, serivisy ao amin'ny git. Noho izany, ny fametrahana ny tenimiafina amin'ny angon-drakitra ao amin'ny git, na dia ny git anao aza, izay anananao anatiny ao amin'ny orinasa, dia hevitra ratsy. Satria, farafaharatsiny, tsaroan'i git ny zava-drehetra ary tsy mora ny manala ny tenimiafina avy ao.

Fanamarinana ara-pahasalamana

Ny teboka manaraka dia ity antsoina hoe fanamarinana ara-pahasalamana ity. Amin'ny ankapobeny, ny fanamarinana ara-pahasalamana dia manamarina fotsiny fa mandeha ny fampiharanao. Amin'izay fotoana izay ihany, matetika isika no miresaka momba ny fampiharana amin'ny tranonkala sasany, izay, araka izany, avy amin'ny fomba fijerin'ny fizahana ara-pahasalamana (tsara kokoa ny tsy handika eto ary bebe kokoa) dia ho URL manokana izany, izay ataon'izy ireo toy ny manara-penitra, matetika izy ireo /health.

Rehefa miditra amin'ity URL ity, araka izany, ny fampiharana anay dia miteny hoe "eny, okay, tsara amiko ny zava-drehetra, 200" na "tsia, tsy mety amiko ny zava-drehetra, 500 eo ho eo." Noho izany, raha tsy http ny fampiharana ataontsika, fa tsy fampiharana tranonkala, dia miresaka momba ny karazana daemon isika izao, afaka mamantatra ny fomba fanaovana fitiliana ara-pahasalamana. Izany hoe, tsy ilaina izany, raha tsy http ny fampiharana, dia mandeha daholo ny zava-drehetra tsy misy fisavana ara-pahasalamana ary tsy azo atao izany. Azonao atao ny manavao tsindraindray ny fampahalalana sasany ao amin'ny rakitra, azonao atao ny manolotra baiko manokana ho an'ny daemon anao, toy ny, daemon status, izay hilaza hoe "eny, tsara ny zava-drehetra, miasa ny daemon, velona izy."

Inona no anton'izany? Ny zavatra voalohany sy mazava indrindra dia angamba ny antony ilaina ny fisavana ara-pahasalamana - mba hahatakarana fa miasa ny fampiharana. Ny tiako tenenina dia adala fotsiny, rehefa miakatra izao dia toa mandeha ihany, ka azo antoka fa miasa. Ary hita fa mandeha ny fampiharana, mandeha ny kaontenera, mandeha ny ohatra, tsara ny zava-drehetra - ary avy eo dia efa notapahin'ny mpampiasa ny nomeraon-telefaona rehetra tamin'ny fanohanana ara-teknika ary nilaza hoe "inona ianao ..., ianao renoky ny torimaso, tsy nisy niasa.

Ny fisavana ara-pahasalamana dia fomba iray hijerena amin'ny fomba fijerin'ny mpampiasa fa miasa izany. Iray amin'ireo fomba. Andeha hojerentsika izany. Raha ny fomba fijerin'i Kubernetes dia fomba iray ihany koa ahafantarana hoe rahoviana no manomboka ny fampiharana, satria takatsika fa misy fahasamihafana eo amin'ny fotoana nanombohana, namoronana ary natomboka ny kaontenera, ary ny fotoana natomboka mivantana tao amin'ity kaontenera ity. Satria raha maka fampiharana java antonony isika ary manandrana mametraka azy ao amin'ny dock, dia mandritra ny efapolo segondra, na iray minitra, na folo mihitsy aza, dia afaka manomboka tsara. Amin'ity tranga ity dia azonao atao farafaharatsiny ny mandondona ny seranan-tsambony, tsy hamaly eo izy, izany hoe tsy mbola vonona ny handray fifamoivoizana.

Indray mandeha, miaraka amin'ny fanampian'ny fizahana ara-pahasalamana sy noho ny fanampian'ny zava-misy fa mitodika eto isika, dia afaka mahatakatra ao amin'ny Kubernetes fa tsy ny kaontenera ihany no niakatra tao amin'ny fampiharana, fa ny fampiharana mihitsy no nanomboka, dia efa mamaly ny fitiliana ara-pahasalamana, izay midika fa afaka mandefa fifamoivoizana any.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Ny lazaiko izao dia antsoina hoe Test Readiness/Liveness ao anatin'ny Kubernetes; araka izany, ny andrana fahavononanay dia tompon'andraikitra amin'ny fisian'ny fampiharana amin'ny fifandanjana. Izany hoe, raha atao ao amin'ny fampiharana ny fitsapana fahavononana, dia mety ny zava-drehetra, mankany amin'ny fampiharana ny fifamoivoizana mpanjifa. Raha tsy vita ny fitsapana fahavononana, dia tsy mandray anjara fotsiny ny fampiharana, ity tranga manokana ity dia tsy mandray anjara amin'ny fifandanjana, esorina amin'ny fifandanjana, tsy mandeha ny fifamoivoizana mpanjifa. Noho izany, ilaina ny fitsapana Liveness ao anatin'ny Kubernetes mba hahafahana mamerina azy indray raha toa ka mijanona ny fampiharana. Raha toa ka tsy mandeha amin'ny rindranasa iray nambara ao amin'ny Kubernetes ny fitsapana fahavelomana, dia tsy esorina amin'ny fifandanjana fotsiny ilay fampiharana fa averina indray.

Ary ity misy teboka manan-danja izay tiako holazaina: amin'ny fomba fijery azo ampiharina, ny fitsapana fahavononana dia matetika ampiasaina matetika ary ilaina kokoa noho ny fitsapana amin'ny fiainana. Izany hoe, manambara tsy misy dikany tsotra izao ny fitsapana fahavononana sy ny fahavelomana, satria afaka manao izany i Kubernetes, ary andao hampiasa izay rehetra azony atao, dia tsy hevitra tsara. Hazavaiko ny antony. Satria ny teboka faharoa amin'ny fitsapana dia tsara ny manamarina ny serivisy fototra amin'ny fisavana ara-pahasalamanao. Midika izany fa raha manana fampiharana amin'ny tranonkala ianao izay manome fampahalalana sasantsasany, izay ho azy, dia tsy maintsy maka avy any ho any. Ao amin'ny database, ohatra. Eny, mitahiry ny fampahalalana izay miditra amin'ity REST API ity ao anaty tahiry iray ihany. Avy eo, mifanaraka amin'izany, raha toa ka mamaly toy ny slashhealth mifandray fotsiny ny fitsirihana ara-pahasalamanao, ny fampiharana dia milaza hoe "200, okay, tsara daholo ny zava-drehetra", ary miaraka amin'izay koa dia tsy azo idirana ny angon-drakitra momba ny fampiharana anao, ary ny fampiharana ara-pahasalamana dia milaza hoe "200, okay, tsara ny zava-drehetra. ” - Fitsaboana ara-pahasalamana ratsy izany. Tsy toy izany no tokony hiasa.

Izany hoe, ny fangatahanao, rehefa misy fangatahana tonga ao /health, tsy mamaly fotsiny hoe "200 ok", dia mandeha aloha ohatra any amin'ny base de données, manandrana mifandray aminy, manao zavatra tena fototra ao, toy ny mifidy iray, manamarina fotsiny fa misy fifandraisana ao amin'ny database ary azonao atao ny manontany ny database. Raha nahomby izany rehetra izany dia ny valiny dia "200, ok." Raha tsy tafita dia milaza fa misy lesoka, tsy misy ny database.

Noho izany, amin'io lafiny io dia miverina amin'ny fitsapana fahavononana/Liveness indray aho - nahoana ianao no tena mila fitsapana fahavononana, fa ny fitsapana fahavelomana no resahina. Satria raha mamaritra ny fisavana ara-pahasalamana araka ny voalazako teo ianao dia ho hita fa tsy hita ao amin'ny ampahany ohatra.в или со всех instanceao anaty tahiry, ohatra. Rehefa nanambara fitsapana fahavononana ianao dia nanomboka tsy nahomby ny fitsirihana ara-pahasalamanay, ary noho izany ny fampiharana rehetra izay tsy azo idirana ny angon-drakitra dia nesorina fotsiny amin'ny fifandanjana izy ireo ary raha ny marina dia "mihantona" fotsiny ao anaty fanjakana tsy voakarakara ary miandry ny angon-drakitra ho azy ireo. asa.

Raha nanambara fitsapana momba ny fiainana izahay, dia alaivo sary an-tsaina hoe rava ny angon-drakitray, ary ao amin'ny Kubernetes-nao dia manomboka miverina indray ny antsasaky ny zava-drehetra satria tsy nahomby ny fitsapana momba ny fiainana. Midika izany fa mila manomboka indray ianao. Tsy izany mihitsy no tadiavinao fa nanana traikefa manokana tamin'ny fampiharana mihitsy aza aho. Nanana fampiharana amin'ny chat izahay izay nosoratana tamin'ny JS ary nampidirina tao amin'ny angon-drakitra Mongo. Ary ny olana dia teo am-piandohan'ny asako niaraka tamin'i Kubernetes, nofaritanay ny fahavononana, ny fahaveloman'ny fitsapana amin'ny foto-kevitra hoe vitan'i Kubernetes izany, ka hampiasainay izany. Noho izany, tamin'ny fotoana iray i Mongo dia nanjary "menaka" kely ary nanomboka tsy nahomby ny santionany. Noho izany, araka ny fitsapana ny orana, nanomboka "mamono" ny pods.

Araka ny azonao, rehefa "vonoina" izy ireo, dia chat izany, izany hoe misy fifandraisana maro avy amin'ny mpanjifa mihantona eo. Izy ireo koa dia "vonoina" - tsia, tsy mpanjifa, fifandraisana fotsiny - tsy miaraka amin'ny fotoana iray ihany, ary noho ny tsy famonoana azy ireo amin'ny fotoana iray, ny sasany aloha, ny sasany any aoriana, dia tsy manomboka miaraka. fotoana. Miampy kisendrasendra manara-penitra, tsy afaka maminavina miaraka amin'ny fahamarinan'ny milisegondra ny ora fanombohan'ny fampiharana isaky ny mandeha isika, noho izany dia manao izany izy ireo amin'ny fotoana iray. Ny infospot iray dia miakatra, ampidirina amin'ny fifandanjana, tonga any ny mpanjifa rehetra, tsy mahatanty entana toy izany, satria irery, ary raha lazaina amin'ny teny iray, dia misy am-polony izy ireo miasa ao, ary latsaka. Mitsangana ny manaraka, eo aminy ny entana rehetra, lavo koa izy. Eny, mbola mitohy mikoriana ihany ireny riandrano ireny. Amin'ny farany, ny fomba namaha izany - tsy maintsy nanakana tanteraka ny fifamoivoizan'ny mpampiasa amin'ity fampiharana ity izahay, avelao hiakatra ny tranga rehetra ary manomboka indray mandeha ny fifamoivoizana rehetra ka efa nozaraina tamin'ireo tranga folo.

Raha tsy noho ny nambara ity fitsapana momba ny fiainana ity, izay hanery azy rehetra hanomboka indray, dia ho nikarakara azy tsara ny fampiharana. Saingy ny zava-drehetra avy amin'ny fifandanjana dia kilemaina ho antsika, satria tsy azo idirana ny angon-drakitra ary "lavo" ny mpampiasa rehetra. Avy eo, rehefa tonga io tahiry io, dia tafiditra ao anaty fifandanjana ny zava-drehetra, saingy tsy mila manomboka indray ny fampiharana, ary tsy mila mandany fotoana sy loharano amin'izany. Efa eto avokoa izy ireo, vonona amin'ny fifamoivoizana, ka misokatra ny fifamoivoizana, milamina ny zava-drehetra - efa misy ny fampiharana, mitohy ny zava-drehetra.

Noho izany, samy hafa ny fitsapana fahavononana sy fahavelomana, ankoatra izany, afaka manao fitiliana ara-pahasalamana samihafa ianao, karazana radii iray, karazana liv, ohatra, ary manamarina zavatra samihafa. Mandritra ny fitsapana fahavononana, jereo ny lamosinao. Ary amin'ny fitsapam-piainana, ohatra, dia tsy manamarina avy amin'ny fomba fijery ianao fa ny fitsapana amin'ny fiainana dia amin'ny ankapobeny dia fampiharana mamaly fotsiny, raha afaka mamaly mihitsy.

Satria ny fitsapana fahavelomana, amin'ny ankapobeny, dia rehefa “miraikitra” isika. Nanomboka na zavatra hafa ny loop tsy misy fiafarany - ary tsy misy fangatahana voakarakara intsony. Noho izany dia misy dikany ny manasaraka azy ireo - ary mampihatra lojika samihafa ao aminy.

Momba izay tokony hovalianao rehefa manao fitiliana ianao, rehefa manao fitsirihana ara-pahasalamana. Tena maharary ihany. Mety hihomehy ireo izay mahafantatra an'io - fa raha ny marina, nahita serivisy aho teo amin'ny fiainako izay mamaly "200" amin'ny XNUMX% amin'ny tranga. Izany hoe iza no tafita. Saingy amin'ny fotoana iray ihany ao amin'ny vatan'ny valinteny dia manoratra izy ireo hoe "fahadisoana toy izany sy izany."

Izany hoe, tonga aminao ny satan'ny valin-teny - mahomby ny zava-drehetra. Saingy amin'ny fotoana iray ihany, tsy maintsy manara-maso ny vatana ianao, satria ny vatana dia milaza hoe "miala tsiny, ny fangatahana dia niafara tamin'ny fahadisoana" ary izany no zava-misy. Hitako teo amin’ny tena fiainana izany.

Ary mba tsy hitan'ny olona sasany mampihomehy izany, ary ny hafa dia tena maharary, dia mbola mendrika ny hanaraka fitsipika tsotra. Amin'ny fisavana ara-pahasalamana, ary amin'ny fitsipika rehefa miasa amin'ny fampiharana tranonkala.

Raha mandeha tsara ny zava-drehetra, dia valio amin'ny valiny roanjato. Amin'ny ankapobeny, ny valiny roa zato dia mety aminao. Raha mamaky tsara ny ragsy ianao ary fantatrao fa tsy mitovy amin'ny hafa ny satan'ny valinteny sasany dia valio amin'izay mety: 204, 5, 10, 15, na inona na inona. Raha tsy dia tsara loatra, dia "aotra roa aotra" fotsiny. Raha mandeha ratsy ny zava-drehetra ary tsy mamaly ny fitsirihana ara-pahasalamana, dia valio amin'ny dimanjato. Averina indray, raha azonao ny fomba hamaliana, ny maha-samihafa ny sata valinteny samihafa. Raha tsy azonao dia 502 no safidinao hamaly ny fitsirihana ara-pahasalamana raha misy tsy mety.

Hevitra iray hafa ity, te-hiverina kely momba ny fanamarinana ny serivisy fototra aho. Raha manomboka ianao, ohatra, manamarina ny serivisy fototra rehetra izay mijoro ao ambadiky ny fampiharanao - ny zava-drehetra amin'ny ankapobeny. Ny azontsika avy amin'ny fomba fijerin'ny maritrano microservice dia manana foto-kevitra toy ny "fifandraisana ambany" isika - izany hoe rehefa mifampiankina kely ny serivisy. Raha tsy mahomby ny iray amin'izy ireo, ny hafa rehetra tsy misy an'io fampiasa io dia hanohy hiasa fotsiny. Tsy mandeha fotsiny ny sasany amin'ireo fampiasa. Noho izany, raha mifamatotra ny fisavana ara-pahasalamana rehetra ianao dia hiafara amin'ny zavatra iray tsy mahomby amin'ny fotodrafitrasa, ary satria nianjera izany, dia manomboka tsy mahomby koa ny fitsirihana ara-pahasalamana rehetra amin'ny serivisy rehetra - ary misy fotodrafitrasa bebe kokoa amin'ny ankapobeny ho an'ny rafitra microservice manontolo No. Nanjary maizina ny zava-drehetra tao.

Noho izany, tiako averina indray fa mila manamarina ny serivisy fototra ianao, izay tsy afaka manao ny asany ny fangatahanao amin'ny zato isan-jaton'ny tranga. Izany hoe, lojika fa raha manana REST API ianao izay ahafahan'ny mpampiasa mitahiry ao amin'ny angon-drakitra na maka avy amin'ny angona, dia tsy afaka miantoka ny fiaraha-miasa amin'ny mpampiasa anao raha tsy misy angona.

Fa raha ny mpampiasa anao, rehefa esorinao ao amin'ny angon-drakitra izy ireo, dia manankarena amin'ny metadata hafa, avy amin'ny backend hafa, izay ampidirinao alohan'ny handefasana valiny amin'ny frontend - ary tsy misy ity backend ity, midika izany fa omenao ny anao valiny tsy misy ampahany amin'ny metadata.

Manaraka, manana iray amin'ireo olana maharary ihany koa isika rehefa manomboka fampiharana.

Raha ny marina, izany dia tsy mihatra amin'ny Kubernetes amin'ny ankapobeny ihany fa ny kolontsain'ny karazana fampandrosoana faobe ary ny DevOps manokana dia nanomboka niparitaka tamin'ny fotoana mitovy amin'ny Kubernetes. Noho izany, amin'ny ankapobeny, hita fa mila manakatona ny fampiharana anao ianao raha tsy misy Kubernetes. Na dia talohan'ny Kubernetes aza dia nanao izany ny olona, ​​saingy tamin'ny fahatongavan'ny Kubernetes dia nanomboka niresaka momba izany izahay faobe.

Fiatoana mahafinaritra

Amin'ny ankapobeny, inona no atao hoe Graceful Shutdown ary nahoana no ilaina izany? Izany dia momba ny hoe rehefa mianjera ny fampiharana anao noho ny antony sasany, dia mila manao izany ianao app stop - na ianao mahazo, ohatra, famantarana avy amin'ny rafitra miasa, ny fampiharana dia tsy maintsy mahatakatra izany ary manao zavatra momba izany. Ny toe-javatra ratsy indrindra, mazava ho azy, dia rehefa mahazo SIGTERM ny fangatahanao ary toy ny "SIGTERM, andao isika, miasa, tsy manao na inona na inona." Safidy tena ratsy ity.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Safidy saika ratsy ihany koa dia rehefa mahazo SIGTERM ny fampiharana anao ary toy ny hoe "hoy izy ireo hoe segterm, midika izany fa mifarana isika, tsy hitako, tsy fantatro ny fangatahan'ny mpampiasa, tsy fantatro hoe inona fangatahana izay efa niasako izao, hoy izy ireo SIGTERM, midika izany fa mifarana isika " Safidy ratsy koa izany.

Inona no safidy tsara? Ny teboka voalohany dia ny fijerena ny fahavitan'ny asa. Ny safidy tsara dia ny mbola hijeren'ny mpizara anao ny ataony raha mahazo SIGTERM izy.

SIGTERM dia soft shutdown, natao manokana, azo trandrahana amin'ny niveau kaody, azo ovaina, lazao fa andraso aloha fa vitantsika aloha ny asa izay ananantsika dia hivoaka.

Amin'ny fomba fijery Kubernetes dia toy izao ny endriny. Rehefa miteny amin'ny pod iray izay mandeha ao amin'ny cluster Kubernetes isika hoe "azafady, atsaharo, mandehana," na atomboka indray isika, na misy fanavaozana mitranga rehefa mamerina ny pods i Kubernetes, dia mandefa hafatra SIGTERM mitovy amin'ny pod i Kubernetes, miandry ny fotoana iray, ary , io no fotoana andrasany, dia voarindra ihany koa, misy mari-pamantarana manokana amin'ny diplaoma ary antsoina hoe Graceful ShutdownTimeout. Araka ny efa azonao dia tsy hoe tsy misy dikany izany, ary tsy hoe tsy misy dikany izany no resahantsika ankehitriny.

Eto isika dia afaka milaza manokana hoe hafiriana no tokony hiandrasantsika eo anelanelan'ny fotoana handefasana ny SIGTERM amin'ny fampiharana ary rehefa takatsika fa toa lasa adala ny fampiharana na "miraikitra" ary tsy hifarana - ary mila manao izany isika. alefaso SIGKILL izany, izany hoe mamita ny asany. Izany hoe, araka izany, dia manana karazana daemon mihazakazaka isika, manao asa. Fantatsika fa amin'ny ankapobeny dia tsy maharitra mihoatra ny 30 segondra ny hetsika iasan'ny daemon. Noho izany, rehefa tonga ny SIGTERM, dia takatsika fa ny daemon-tsika dia afaka mamarana 30 segondra aorian'ny SIGTERM, raha be indrindra. Manoratra izany isika, ohatra, 45 segondra raha sanatria ka milaza fa SIGTERM. Aorian'izay dia miandry 45 segondra isika. Raha ny teoria, nandritra izany fotoana izany dia tokony ho nahavita ny asany ny demonia ary nifarana ny tenany. Saingy raha tsy afaka tampoka izany dia midika izany fa mety ho tafahitsoka izy io - tsy mikarakara ny fangatahanay intsony izy io. Ary ao anatin'ny 45 segondra dia azonao atao tsara, raha ny marina, ny fantsika azy.

Ary eto, raha ny marina, na dia lafiny 2 azo raisina. Voalohany, fantaro fa raha nahazo fangatahana ianao dia nanomboka niasa tamin'ny fomba iray ary tsy nanome valiny ho an'ny mpampiasa, fa nahazo SIGTERM ianao, ohatra. Misy dikany ny manadio azy ary manome valiny ho an'ny mpampiasa. Ity no teboka voalohany amin'io lafiny io. Ny teboka faharoa eto dia ny hoe raha manoratra ny fampiharana anao manokana ianao, amin'ny ankapobeny dia manangana ny maritrano amin'ny fomba izay ahazoanao fangatahana ho an'ny fampiharanao, dia manomboka asa ianao, manomboka misintona rakitra avy any amin'ny toerana iray, misintona angona, sy ny sisa. Izany. Amin'ny ankapobeny, ny mpampiasa anao, ny fangatahanao dia mihantona mandritra ny antsasak'adiny ary miandry anao hamaly azy - avy eo, azo inoana fa mila miasa amin'ny maritrano ianao. Izany hoe, diniho fotsiny na dia ny saina mahazatra aza fa raha fohy ny asanao, dia misy dikany ny tsy miraharaha ny SIGTERM sy manova azy. Raha lava ny asanao, dia tsy misy dikany ny tsy miraharaha ny SIGTERM amin'ity tranga ity. Misy dikany ny fanavaozana ny maritrano mba hialana amin'ny asa lava toy izany. Mba tsy hiandry fotsiny ny mpampiasa. Tsy haiko, manaova karazana websocket any, manaova hook reverse izay efa alefan'ny servero any amin'ny client, na inona na inona, fa aza terena ny mpampiasa hanantona mandritra ny antsasak'adiny dia miandry session fotsiny ianao. valio izy. Satria tsy azo vinaniana hoe aiza no mety ho tapaka.

Rehefa tapitra ny fampiharanao dia tokony hanome kaody fivoahana mety ianao. Izany hoe, raha nasaina nakatona, najanona, ary afaka nijanona ara-dalàna ny fampiharana anao, dia tsy mila mamerina karazana code exit 1,5,255 sy ny sisa. Na inona na inona tsy code zero, farafaharatsiny amin'ny rafitra Linux, azoko antoka izany, dia heverina ho tsy mahomby. Izany hoe, heverina fa niafara tamin'ny fahadisoana ny fangatahanao tamin'ity tranga ity. Noho izany, amin'ny fomba milamina, raha vita tsy misy hadisoana ny fampiharanao, dia milaza ianao fa 0 amin'ny vokatra. Raha tsy nahomby ny fampiharana anao noho ny antony iray, dia lazainao fa tsy 0 amin'ny vokatra. Ary afaka miasa miaraka amin'ity fampahalalana ity ianao.

Ary ny safidy farany. Ratsy raha mandefa fangatahana ny mpampiasa anao ary mihantona mandritra ny antsasak'adiny eo am-panomananao azy. Fa amin'ny ankapobeny, tiako koa ny milaza momba izay mendrika amin'ny ankapobeny amin'ny lafiny mpanjifa. Tsy maninona raha manana fampiharana finday, front-end, sns. Ilaina ny mitadidy fa amin'ny ankapobeny dia azo atsahatra ny fotoam-piasan'ny mpampiasa, mety hitranga na inona na inona. Mety misy fangatahana alefa, ohatra, tsy voakarakara ary tsy misy valiny miverina. Ny eo anoloana na ny fampiharana findainao - na inona na inona eo anoloana amin'ny ankapobeny, andao hataontsika toy izany - dia tokony handray an-tsaina izany. Raha miasa amin'ny websockets ianao, amin'ny ankapobeny dia ity no fanaintainana ratsy indrindra niainako hatramin'izay.

Rehefa tsy fantatry ny mpamorona amin'ny chat mahazatra sasany izany dia hita fa mety tapaka ny websocket. Ho azy ireo, rehefa misy zavatra mitranga amin'ny proxy dia ovainay fotsiny ny config, ary mamerina indray izany. Mazava ho azy fa rovitra daholo ny fotoam-pivoriana maharitra rehetra amin'ity tranga ity. Nihazakazaka nanatona anay ireo mpamorona ary niteny hoe: “Ry lehilahy, inona no ataonao, rava ny resaka ho an'ny mpanjifanay rehetra!” Hoy izahay: “Inona no ataonao? Tsy afaka mifandray indray ve ny mpanjifanao? Hoy izy ireo: “Tsia, tsy mila rovitra ny fotoam-pivoriana.” Raha fintinina dia tena tsy misy dikany izany. Mila jerena ny lafiny mpanjifa. Indrindra, araka ny lazaiko, miaraka amin'ny fotoam-pivoriana maharitra toy ny websockets, dia mety ho tapaka ary, tsy voamariky ny mpampiasa, dia mila averinao indray ny fivoriana toy izany. Dia tonga lafatra ny zava-drehetra.

loharanon-karena

Raha ny marina, eto aho dia hilaza aminao tantara mahitsy. Avy amin'ny tena fiainana indray. Ny zavatra marary indrindra reko momba ny loharanon-karena.

Loharano amin'ity tranga ity, ny tiako holazaina, karazana fangatahana, fetra azonao apetraka amin'ny pods ao amin'ny cluster Kubernetes anao. Ny zavatra mahatsikaiky indrindra henoko avy amin'ny mpamorona iray... Hoy ny iray tamin'ireo mpiara-miombon'antoka tamiko tany amin'ny toeram-piasana teo aloha: "Tsy manomboka ao anaty cluster ny fampiharana ahy." Nijery aho fa tsy nanomboka izany, fa na tsy mifanaraka amin'ny loharanon-karena, na nametraka fetra faran'izay kely. Raha fintinina dia tsy afaka manomboka ny fampiharana noho ny loharanon-karena. Hoy aho: "Tsy hanomboka izany noho ny loharanon-karena, manapa-kevitra ianao hoe ohatrinona no ilainao ary mametraka sanda sahaza." Hoy izy: “Fitaovana inona?” Nanomboka nanazava taminy aho fa tsy maintsy apetraka ny Kubernetes, fetra amin'ny fangatahana ary blah, blah, blah. Nihaino nandritra ny dimy minitra ilay lehilahy, niondrika ary niteny hoe: “Tonga eto aho mba hiasa amin'ny maha-mpamorona, tsy te hahalala na inona na inona momba ny loharanon-karena aho. Tonga eto aho hanoratra kaody ary izay no izy.” Mampalahelo izany. Hevitra tena mampalahelo izany raha ny fijerin'ny mpamorona. Indrindra fa amin'izao tontolo maoderina izao, raha lazaina amin'ny teny hoe devops mivoatra.

Nahoana no ilaina ny loharanon-karena? Misy karazana loharano 2 ao amin'ny Kubernetes. Ny sasany dia antsoina hoe fangatahana, ny sasany dia antsoina hoe fetra. Amin'ny alàlan'ny loharanon-karena dia ho takatsika fa amin'ny ankapobeny dia misy fameperana fototra roa ihany. Izany hoe, fetran'ny fotoana CPU sy fetran'ny RAM ho an'ny kaontenera mandeha ao amin'ny Kubernetes.

Ny fetra dia mametraka fetra ambony amin'ny fomba fampiasana loharano iray amin'ny fampiharanao. Izany hoe, araka izany, raha milaza 1GB an'ny RAM ao anatin'ny fetra ianao, dia tsy afaka mampiasa mihoatra ny 1GB an'ny RAM ny fampiharanao. Ary raha te hanao izany tampoka izy, dia misy dingana antsoina hoe oom killer, tsy misy fitadidiana, izany hoe, ho avy ary hamono ny fampiharanao - izany hoe, hanomboka indray. Tsy hanomboka ny fampiharana mifototra amin'ny CPU. Raha ny momba ny CPU, raha misy fampiharana manandrana mampiasa betsaka, mihoatra noho ny voafaritra ao amin'ny fetra, ny CPU dia ho voafantina fotsiny. Tsy mitarika amin'ny famerenana indray izany. Ity no fetra - izany no fetra ambony.

Ary misy ny fangatahana. Ny fangatahana dia ny fomba fahafantaran'i Kubernetes ny fomba fenon'ny nodes ao amin'ny cluster Kubernetes anao amin'ny fampiharana. Izany hoe, ny fangatahana dia karazana fanoloran-tena amin'ny fangatahanao. Milaza izay tiako hampiasaina izy io: "Tiako ny hatokanao an'io CPU be io sy io fahatsiarovana be io ho ahy." Analogy tsotra toy izany. Ahoana raha manana node manana, tsy fantatro, CPU 8 amin'ny fitambarany. Ary tonga ny pod iray, izay milaza fa CPU 1 ny fangatahana, midika izany fa manana CPU 7 sisa ny node. Izany hoe, araka izany, raha vantany vao tonga amin'ity node ity ny pods 8, izay samy manana CPU 1 amin'ny fangatahan'izy ireo, ny node, toy ny hoe avy amin'ny fomba fijerin'i Kubernetes, dia lany ny CPU ary tsy azo atao ny pods bebe kokoa miaraka amin'ny fangatahana. natomboka tamin'ity node ity. Raha lany amin'ny CPU ny node rehetra, dia hanomboka hilaza i Kubernetes fa tsy misy node mety ao amin'ny cluster mba hampandehanana ny pods anao satria lany ny CPU.

Nahoana no ilaina ny fangatahana ary nahoana raha tsy misy fangatahana, heveriko fa tsy ilaina ny manomboka na inona na inona ao amin'ny Kubernetes? Andeha isika haka sary an-tsaina ny toe-javatra hypothetical. Mandeha ny fampiharanao ianao raha tsy misy fangatahana, tsy fantatr'i Kubernetes hoe ohatrinona ny anananao, inona no node azonao manosika azy. Eny, manosika, manindrona, manindrona amin'ny nodes izy. Amin'ny fotoana iray dia hanomboka hahazo fifamoivoizana amin'ny fampiharanao ianao. Ary ny iray amin'ireo fampiharana dia manomboka mampiasa loharano hatramin'ny fetra izay ananany araka ny fetra. Hita fa misy fampiharana hafa eo akaiky eo ary mila loharano ihany koa. Ny node dia manomboka tsy misy loharanon-karena, ohatra, OP. Ny node dia manomboka lany ara-batana ny loharanon-karena, ohatra, ny fahatsiarovana fidirana (RAM). Rehefa lany hery ny node iray dia tsy hamaly intsony aloha ny docker, avy eo ny cubelet, avy eo ny OS. Ho lasa tsy mahatsiaro tena fotsiny izy ireo ary ny zavatra rehetra dia tsy hiasa ho anao. Izany hoe, hitarika ny node ho tafahitsoka izany ary mila averinao indray. Raha fintinina dia tsy dia tsara loatra ny zava-misy.

Ary rehefa manana fangatahana ianao dia tsy hafa be ny fetra, farafaharatsiny tsy mihoatra ny fetra na fangatahana, dia afaka manana famenoana ara-dalàna sy ara-drariny toy izany ianao manerana ny node amin'ny cluster Kubernetes. Mandritra izany fotoana izany, ny Kubernetes dia saika mahafantatra ny habetsahan'ny zavatra apetrany amin'ny toerana, ny habetsahan'ny zavatra ampiasaina any. Izany hoe, fotoana iray ihany izany. Zava-dehibe ny mahatakatra izany. Ary zava-dehibe ny mifehy fa izany no voalaza.

Fitahirizana data

Ny hevitray manaraka dia momba ny fitahirizana angon-drakitra. Inona no tokony hatao amin'izy ireo ary amin'ny ankapobeny, inona no tokony hatao amin'ny fikirizana ao amin'ny Kubernetes?

Heveriko, indray, ao anatintsika Sekoly hariva, nisy lohahevitra momba ny angon-drakitra tao amin'ny Kubernetes. Ary raha ny fahitako azy dia toa fantatro mihitsy aza izay nolazain'ireo mpiara-miasa aminao raha nanontaniana hoe: “Azo atao ve ny mitantana angona ao amin'ny Kubernetes?” Noho ny antony sasany, toa ahy fa ny mpiara-miasa aminao dia tokony nilaza taminao fa raha mametraka fanontaniana ianao raha azo atao ny mitantana angona ao amin'ny Kubernetes, dia tsy azo atao izany.

Tsotra ny lojika eto. Raha sanatria, dia hanazava indray aho, raha lehilahy tena mahafinaritra ianao izay afaka manangana rafitra fandeferana amin'ny fitehirizana tambajotra zaraina, fantaro ny fomba hampifanaraka ny angon-drakitra amin'ity tranga ity, ny fomba fiasan'ny rahona ao anaty kaontenera. ao anaty tahiry amin'ny ankapobeny. Azo inoana fa tsy manana fanontaniana momba ny fomba fampandehanana azy ianao. Raha manana fanontaniana toy izany ianao, ary te ho azo antoka fa mivelatra daholo izany rehetra izany ary mijanona ho faty amin'ny famokarana ary tsy latsaka mihitsy, dia tsy hitranga izany. Azo antoka fa hitifitra ny tenanao amin'ity fomba ity ianao. Koa aleo tsy manao izany.

Inona no tokony hataontsika amin'ny angon-drakitra tian'ny rindranasa hotehirizina, sary sasany ampidirin'ny mpampiasa, zavatra sasany vokarin'ny fampiharana antsika mandritra ny fampandehanana azy, amin'ny fanombohana, ohatra? Inona no hatao amin'izy ireo ao Kubernetes?

Amin'ny ankapobeny, ny tena tsara, eny, mazava ho azy, dia tena tsara ny Kubernetes ary tamin'ny voalohany dia noforonina ho an'ny fampiharana tsy misy fanjakana. Izany hoe, ho an'ireo fampiharana izay tsy mitahiry fampahalalana mihitsy. Ity no idealy.

Saingy, mazava ho azy, ny safidy tsara indrindra dia tsy misy foana. De maninona? Ny teboka voalohany sy tsotra indrindra dia ny maka karazana S3, fa tsy vita an-trano, izay tsy mazava ihany koa ny fomba fiasa, fa avy amin'ny mpamatsy sasany. Mpanome tsara sy mahazatra - ary ampianaro ny fampiharanao hampiasa S3. Izany hoe, rehefa te-hampiakatra rakitra ny mpampiasa anao, dia lazao hoe "eto, azafady, ampidiro ao amin'ny S3." Rehefa te-hahazo izany izy dia lazao hoe: "Ity misy rohy mankany amin'ny S3 miverina ary alao avy eto." Ity no idealy.

Raha tampoka noho ny antony iray dia tsy mety io safidy tsara indrindra io, manana fampiharana tsy nosoratanao ianao, tsy mivoatra, na karazana lova mahatsiravina, tsy afaka mampiasa ny protocol S3, fa tsy maintsy miara-miasa amin'ny lahatahiry eo an-toerana lahatahiry eo an-toerana . Makà zavatra tsotra na tsotsotra kokoa, ampidiro ny Kubernetes. Izany hoe, ny fefy avy hatrany an'i Ceph amin'ny asa madinidinika sasany, toa ahy, dia hevitra ratsy. Satria i Ceph, mazava ho azy, dia tsara sy lamaody. Fa raha tsy azonao tsara ny zavatra ataonao, dia rehefa mametraka zavatra ao amin'i Ceph ianao dia afaka mora foana ary tsy afaka miala ao intsony. Satria, araka ny fantatrao, Ceph dia mitahiry ny angona ao amin'ny cluster amin'ny endrika binary, fa tsy amin'ny endrika rakitra tsotra. Noho izany, raha rava tampoka ny kluster Ceph, dia misy ny mety hitranga tsy ho azonao avy eo intsony.

Hanao taranja momba ny Ceph izahay, azonao atao fantaro ny programa ary alefaso ny fangatahana.

Noho izany, tsara kokoa ny manao zavatra tsotra toy ny mpizara NFS. Afaka miara-miasa amin'izy ireo i Kubernetes, afaka mametraka lahatahiry eo ambanin'ny mpizara NFS ianao - toy ny lahatahiry eo an-toerana ny fampiharana anao. Amin'izany fotoana izany, mazava ho azy, mila mahatakatra ianao fa, indray, mila manao zavatra amin'ny NFS ianao, mila mahatakatra fa indraindray dia mety ho lasa tsy azo idirana izany ary diniho ny fanontaniana izay hataonao amin'ity tranga ity. Angamba tokony haverina any amin'ny toerana iray amin'ny milina mitokana.

Ny teboka manaraka noresahiko dia ny tokony hatao raha miteraka rakitra sasantsasany mandritra ny fandidiana ny fampiharanao. Ohatra, rehefa manomboka izy dia mamorona rakitra static, izay mifototra amin'ny fampahalalana sasany izay azon'ny fampiharana amin'ny fotoana fanombohana. Fotoana inona. Raha tsy misy angon-drakitra toy izany, dia tsy mila manelingelina mihitsy ianao, apetraho fotsiny ity fampiharana ity ho anao ary miasa. Ny hany fanontaniana eto dia hoe inona, jereo. Matetika, ny karazana rafitra lova rehetra, toy ny WordPress sy ny sisa, indrindra amin'ny fanovana karazana plugins marani-tsaina, mpamorona PHP marani-tsaina, dia matetika izy ireo no mahafantatra ny fomba hanaovana izany mba hamoronana karazana rakitra ho azy ireo. Noho izany, ny iray dia mamorona rakitra iray, ny faharoa dia mamorona rakitra faharoa. Samy hafa izy ireo. Kisendrasendra fotsiny no mitranga ao amin'ny kluster Kubernetes an'ny mpanjifa. Araka izany, hita fa tsy hainy ny miara-miasa ohatra. Ny iray manome vaovao iray, ny iray manome ny mpampiasa vaovao hafa. Izany no zavatra tokony hohalavirinao. Izany hoe, ao amin'ny Kubernetes, ny zavatra rehetra atombokao dia azo antoka fa afaka miasa amin'ny tranga maro. Satria zavatra mihetsika ny Kubernetes. Noho izany, afaka mamindra na inona na inona izy, na oviana na oviana, tsy misy manontany na iza na iza. Noho izany, mila miantehitra amin'izany ianao. Ny zavatra rehetra natomboka tamin'ny tranga iray dia tsy nahomby na ho ela na ho haingana. Arakaraky ny famandrihan-toerana anananao no tsara kokoa. Fa indray hoy aho, raha manana rakitra vitsivitsy toy izany ianao dia azonao atao ny mametraka azy eo ambaninao, milanja kely izy ireo. Raha misy kely kokoa amin'izy ireo, dia mety tsy tokony hanosika azy ireo ao anaty fitoeran-javatra ianao.

Manoro hevitra aho fa misy zavatra mahafinaritra toy izany ao amin'ny Kubernetes, azonao ampiasaina ny volume. Indrindra indrindra, misy karazana dir poakaty. Izany hoe, i Kubernetes dia hamorona lahatahiry ho azy ao amin'ny lahatahiry serivisy ao amin'ny lohamilina izay nanombohanao. Ary homeny anao izany mba ho azonao ampiasaina. Tsy misy afa-tsy teboka iray manan-danja. Izany hoe, ny angonao dia tsy hotehirizina ao anaty fitoeran-javatra, fa amin'ny mpampiantrano izay iasanao. Ankoatra izany, ny Kubernetes dia afaka mifehy ny dirs tsy misy na inona na inona eo ambanin'ny fanamafisana mahazatra ary afaka mifehy ny habeny ambony indrindra ary tsy mamela azy hihoatra. Ny teboka tokana dia ny hoe tsy very ny zavatra nosoratanao tamin'ny dir poakaty mandritra ny fanombohana pod. Izany hoe, raha lavo tsy nety ny pod-nao ka miakatra indray, dia tsy handeha na aiza na aiza ny fampahalalana ao amin'ny dir foana. Afaka mampiasa izany indray izy amin'ny fanombohana vaovao - ary tsara izany. Raha miala amin'ny toerana iray ny pod-nao, dia mazava ho azy fa hiala tsy misy angona izy. Izany hoe, raha vantany vao nanjavona ny pod avy amin'ny node natomboka tamin'ny dir poakaty, dia voafafa ny dir poakaty.

Inona koa no tsara amin'ny dir poakaty? Ohatra, azo ampiasaina ho cache izy io. Alao sary an-tsaina fa ny fampiharana ataontsika dia miteraka zavatra amin'ny lalitra, manome izany ho an'ny mpampiasa ary manao izany mandritra ny fotoana maharitra. Noho izany, ny fampiharana, ohatra, dia mamokatra sy manome izany ho an'ny mpampiasa, ary miaraka amin'izay koa dia mitahiry izany any amin'ny toerana iray, ka amin'ny manaraka ho avy ny mpampiasa ho an'ny zavatra iray ihany, dia ho haingana kokoa ny manome azy avy hatrany niteraka. Ny dir banga dia azo angatahina amin'ny Kubernetes mba hamorona ho fahatsiarovana. Ary noho izany, ny cache-nao dia afaka miasa amin'ny hafainganam-pandehan'ny tselatra - amin'ny resaka hafainganam-pandehan'ny fidirana kapila. Izany hoe, manana dir poakaty ianao ao anaty fitadidiana, ao amin'ny OS dia voatahiry ao anaty fitadidiana, fa ho anao, ho an'ny mpampiasa ao anaty pod, dia toa ny lahatahiry eo an-toerana fotsiny. Tsy mila ny fampiharana ianao hampianatra manokana ny majika. Maka mivantana fotsiny ianao ary mametraka ny rakitrao ao anaty lahatahiry, fa, raha ny marina, ao amin'ny OS. Ity koa dia endri-javatra tena mety amin'ny resaka Kubernetes.

Inona no olan'ny Minio? Ny olana lehibe amin'ny Minio dia ny hoe raha te hiasa io zavatra io dia mila mandeha any amin'ny toerana iray izy, ary tsy maintsy misy karazana rafitra fichier, izany hoe fitehirizana. Ary eto isika dia miatrika olana mitovy amin'ny an'i Ceph. Izany hoe tsy maintsy mitahiry ny rakitra ao amin'ny toerana iray i Minio. Fifandraisana HTTP amin'ny rakitrao fotsiny izy io. Ankoatr'izay, ny fampiasa dia hita fa mahantra kokoa noho ny an'ny S3 an'ny Amazon. Teo aloha dia tsy afaka nanome alalana ny mpampiasa araka ny tokony ho izy. Ankehitriny, raha ny fahalalako azy, dia efa afaka mamorona siny miaraka amin'ny fanomezan-dàlana isan-karazany, fa indray, toa ahy fa ny tena olana dia, raha ny marina, ny rafitra fitahirizana ambany indrindra.

Ahoana no fiantraikan'ny Empty dir amin'ny fitadidiana ny fetra? Tsy misy fiantraikany amin'ny fetra amin'ny fomba rehetra. Ao amin'ny fahatsiarovana ny mpampiantrano no misy azy, fa tsy ao amin'ny fahatsiarovana ny fitoeranao. Izany hoe, ny fitoeranao dia tsy mahita ny dir foana ao anaty fitadidiana ho ampahany amin'ny fitadidiany. Mahita izany ny mpampiantrano. Noho izany, eny, amin'ny fomba fijerin'ny kubernetes, rehefa manomboka mampiasa an'io ianao dia tsara ny mahatakatra fa ny ampahany amin'ny fitadidianao dia atokanao amin'ny dir foana. Ary araka izany, fantaro fa ny fitadidiana dia mety ho lany tsy noho ny fampiharana ihany, fa koa satria misy manoratra amin'ireo dirs poakaty ireo.

Cloudnativeness

Ary ny subtopic farany dia ny Cloudnative. Nahoana no ilaina izany? Cloudnativeness sy ny sisa.

Izany hoe, ireo fampiharana izay mahavita sy voasoratra mba hiasa amin'ny fotodrafitrasa rahona maoderina. Saingy, raha ny marina, manana lafiny hafa toy izany ny Cloudnative. Izany dia tsy hoe fampiharana izay mandray ny fepetra rehetra amin'ny fotodrafitrasa rahona maoderina, fa mahafantatra ny fomba fiasa miaraka amin'ity fotodrafitrasa rahona maoderina ity, manararaotra ny tombony sy ny tsy fahampian'ny asa ao anatin'ireny rahona ireny. Aza mihoa-pefy fotsiny ary miasa eny amin'ny rahona, fa araraoty ny tombontsoa azo avy amin'ny fiasana amin'ny rahona.

Fepetra amin'ny famolavolana fampiharana amin'ny Kubernetes

Andeha horaisintsika ho ohatra fotsiny ny Kubernetes. Ny fampiharanao dia mandeha amin'ny Kubernetes. Ny fampiharanao dia afaka mamorona kaonty serivisy foana, na ny marimarina kokoa, ny mpandrindra ny fampiharanao. Izany hoe, kaonty ahazoana alalana ao amin'ny Kubernetes mihitsy ao amin'ny mpizara azy. Ampio zo sasany ilainay any. Ary afaka miditra ao amin'ny Kubernetes ianao ao anatin'ny fampiharanao. Inona no azonao atao amin'izany fomba izany? Ohatra, avy amin'ny fampiharana, raiso ny angona momba ny toerana misy ny rindranasao hafa, ny tranga hafa mitovy amin'izany, ary miaraka amin'ny cluster eo an-tampon'ny Kubernetes, raha toa ka ilaina izany.

Mbola nisy tranga ara-bakiteny indray tato ho ato. Manana mpanara-maso iray izahay izay manara-maso ny filaharana. Ary rehefa misy asa vaovao miseho amin'ity filaharana ity dia mankany amin'ny Kubernetes izany - ary ao anatin'ny Kubernetes dia mamorona pod vaovao. Manome asa vaovao ity pod ity ary ao anatin'ny rafitr'ity pod ity, ny pod dia manatanteraka ilay asa, mandefa valiny amin'ny mpanara-maso ny tenany, ary manao zavatra miaraka amin'ity fampahalalana ity ny mpanara-maso. Ohatra, manampy angon-drakitra izany. Izany hoe, averina indray, ity dia tombony amin'ny hoe mandeha amin'ny Kubernetes ny fampiharana anay. Afaka mampiasa ny fonctionnaité Kubernetes naorina mihitsy izahay mba hanitarana sy hanamora kokoa ny fampandehanan'ny fampiharana anay. Izany hoe, aza manafina karazana ody momba ny fomba fandefasana fampiharana, ny fomba fandefasana mpiasa. Ao amin'ny Kubernetes, mandefa fangatahana fotsiny amin'ny fampiharana ianao raha voasoratra amin'ny Python ny fampiharana.

Toy izany koa raha mihoatra ny Kubernetes isika. Manana Kubernetes mandeha any ho any izahay - tsara raha ao anaty karazana rahona. Indray, afaka mampiasa isika, ary na dia tokony, mino aho, mampiasa ny fahaizan'ny rahona izay iarahantsika. Avy amin'ny zavatra fototra omen'ny rahona antsika. Mampifandanja, izany hoe, afaka mamorona rahona balancers sy mampiasa azy ireo. Tombontsoa mivantana amin'izay azontsika ampiasaina izany. Satria ny fampifandanjana rahona, voalohany, dia manaisotra am-pahadalana tsotra izao ny andraikitra amintsika momba ny fomba fiasany, ny fomba fanamboarana azy. Ankoatra izany dia tena mety, satria ny Kubernetes mahazatra dia afaka mitambatra amin'ny rahona.

Toy izany koa ny scaling. Ny Kubernetes mahazatra dia afaka mitambatra amin'ireo mpamatsy rahona. Mahay mahafantatra fa raha lany ny node ny cluster, izany hoe, lany ny habaka node, dia mila ampiana ianao - Ny Kubernetes mihitsy dia hanampy nodes vaovao amin'ny cluster anao ary hanomboka hamoaka pods amin'izy ireo. Izany hoe, rehefa tonga ny entanao dia manomboka mitombo ny isan'ny afo. Rehefa lany ny node ao amin'ny cluster ho an'ireo pods ireo, Kubernetes dia mandefa node vaovao ary, araka izany, dia mbola mety hitombo ny isan'ny pods. Ary tena mety. Ity dia fahafahana mivantana hanamafisana ny cluster amin'ny lalitra. Tsy dia haingana loatra, amin'ny heviny hoe tsy segondra izany, toy ny iray minitra mba hanampiana nodes vaovao.

Saingy avy amin'ny traikefako, indray, io no zavatra mahafinaritra indrindra hitako hatramin'izay. Rehefa nisondrotra araka ny fotoanan'ny andro ny cluster Cloudnative. Izy io dia serivisy backend izay nampiasain'ny olona tao amin'ny birao aoriana. Izany hoe, tonga miasa izy ireo amin'ny 9 ora maraina, manomboka miditra ao amin'ny rafitra, ary mifanaraka amin'izany, manomboka mivonto ny cluster Cloudnative, izay misy azy rehetra, manomboka ny pods vaovao mba hahafahan'ny olona rehetra tonga miasa miaraka amin'ny fampiharana. Rehefa miala amin'ny asany amin'ny 8 ora alina na amin'ny 6 ora hariva izy ireo, dia mahatsikaritra ny cluster Kubernetes fa tsy misy mampiasa ny fampiharana intsony ary manomboka mihena. Ny tahiry hatramin'ny 30 isan-jato dia azo antoka. Niasa tao Amazon izy tamin'izany fotoana izany, tsy nisy olona afaka nanao izany tsara tany Rosia.

Lazaiko anao mivantana, 30 isan-jato ny tahiry satria fotsiny mampiasa Kubernetes izahay ary manararaotra ny fahaizan'ny rahona. Ankehitriny dia azo atao any Rosia izany. Tsy hanao dokam-barotra amin'iza na iza aho, mazava ho azy, fa aleo lazaina fa misy mpamatsy afaka manao izany, manome azy avy hatrany miaraka amin'ny bokotra.

Misy teboka farany tiako hisarika ny sainao koa. Mba hahatonga ny fampiharanao, ny fotodrafitrasa ho Cloudnative, dia misy dikany ny manomboka mampifanaraka ny fomba fiasa antsoina hoe Infrastructure as a Code. kaody Farito ny fampiharanao, ny lojikan'ny orinasanao amin'ny endrika kaody. Ary miaraha miasa aminy toy ny code, izany hoe, andramo, avoaka, tehirizo ao anaty git, ampiharo CICD aminy.

Ary izany indrindra no ahafahanao mifehy ny fotodrafitrasanao, voalohany indrindra, mba hahatakaranao foana hoe inona no misy azy. Faharoa, ialao ny asa tanana izay miteraka fahadisoana. Fahatelo, ialao fotsiny ilay antsoina hoe turnover, rehefa mila manao asa tanana mitovy foana ianao. Fahefatra, mamela anao ho sitrana haingana kokoa raha sendra ny tsy fahombiazana. Any Rosia, isaky ny miresaka momba an'io aho, dia misy foana ny olona marobe izay miteny hoe: "Eny, mazava izany, saingy manana fomba fiasa ianao, raha fintinina, tsy ilaina ny manamboatra na inona na inona." Saingy marina izany. Raha misy zavatra simba ao amin'ny fotodrafitrasanao, dia avy amin'ny fomba fijery Cloudnative sy amin'ny fomba fijerin'ny Infrastructure ho Code, fa tsy manamboatra azy, mandehana any amin'ny server, mamantatra izay tapaka sy manamboatra azy, dia mora kokoa. hamafa ny mpizara ary hamorona azy indray. Ary haveriko amin'ny laoniny izany rehetra izany.

Ireo olana rehetra ireo dia resahina amin'ny antsipiriany kokoa ao amin'ny Kubernetes video cours: Junior, Basic, Mega. Amin'ny fanarahana ny rohy dia azonao atao ny mahafantatra ny programa sy ny fepetra. Ny zavatra mety dia azonao atao ny mifehy ny Kubernetes amin'ny fianarana any an-trano na miasa mandritra ny 1-2 ora isan'andro.

Source: www.habr.com

Add a comment