Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Lero ndikukonzekera kulankhula za momwe mungalembere mapulogalamu ndi zomwe mukufuna kuti pulogalamu yanu igwire ntchito bwino ku Kubernetes. Kuti pasakhale mutu ndi pulogalamuyo, kuti musamapangire ndikumanga "zingwe" mozungulira - ndipo chilichonse chimagwira ntchito momwe Kubernetes adafunira.

Phunziro ili ndi gawo la "Slurm Night School pa Kubernetes" Mutha kuwona zokambirana zotseguka za Sukulu Yamadzulo pa Youtube, m'magulu a playlist. Kwa iwo omwe amakonda zolemba m'malo mwa kanema, takonzekera nkhaniyi.

Dzina langa ndi Pavel Selivanov, pakali pano ndine injiniya wamkulu wa DevOps ku Mail.ru Cloud Solutions, timapanga mitambo, timapanga kasamalidwe kubernetes ndi zina zotero. Ntchito zanga tsopano zikuphatikiza kuthandizira pakukula, kutulutsa mitambo iyi, kutulutsa mapulogalamu omwe timalemba ndikupanga mwachindunji zida zomwe timapereka kwa ogwiritsa ntchito.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Ndakhala ndikuchita DevOps, ndikuganiza kotsiriza, mwinamwake, zaka zitatu. Koma, kwenikweni, ndakhala ndikuchita zomwe DevOps imachita mwina pafupifupi zaka zisanu tsopano. Izi zisanachitike, ndimakonda kwambiri zinthu za admin. Ndinayamba kugwira ntchito ndi Kubernetes kalekale - mwina pafupifupi zaka zinayi zadutsa kuchokera pamene ndinayamba kugwira nawo ntchito.

Nthawi zambiri, ndidayamba pomwe Kubernetes anali mtundu 1.3, mwina, ndipo mwina 1.2 - akadali wakhanda. Tsopano sikulinso paukhanda wake - ndipo zikuwonekeratu kuti pali kufunikira kwakukulu pamsika kwa akatswiri omwe angafune kuchita Kubernetes. Ndipo makampani amafuna kwambiri anthu oterowo. Chifukwa chake, nkhani iyi idawonekera.

Ngati tilankhula molingana ndi dongosolo la zomwe ndilankhule, zikuwoneka motere, m'mabulaketi palembedwa (TL;DR) - "kutalika; osawerenga". Ulaliki wanga lero ukhala ndi mindandanda yosatha.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

M'malo mwake, ine sindimakonda ulaliki woterewu ukapangidwa, koma uwu ndi mutu womwe ndikukonzekera ulalikiwu, sindinadziwe momwe ndingakonzekerere izi mosiyanasiyana.

Chifukwa, mokulira, chidziwitsochi ndi "ctrl+c, ctrl+v", kuchokera, mwa zina, Wiki yathu mu gawo la DevOps, pomwe talemba zofunika kwa opanga: "anyamata, kuti tiyambitse ntchito yanu Kubernetes, ziyenera kukhala chonchi. "

Ndicho chifukwa chake chiwonetserocho chinakhala mndandanda waukulu kwambiri. Pepani. Ndiyesetsa kunena momwe ndingathere kuti zisatope ngati zingatheke.

Zomwe tikuwona pano:

  • izi ndi, choyamba, zipika (zolemba ntchito?), choti muchite nawo ku Kubernetes, choti muchite nawo, zomwe ziyenera kukhala;
  • zoyenera kuchita ndi kasinthidwe ku Kubernetes, njira zabwino kwambiri komanso zoyipa zosinthira pulogalamu ya Kubernetes ndi iti;
  • Tiyeni tikambirane momwe macheke opezeka ali ambiri, momwe akuyenera kuwoneka;
  • tiyeni tiyankhule za kutseka kwachisomo kuli;
  • tiyeni tikambirane za chuma kachiwiri;
  • Tiyeni tigwire pa mutu wa kusungirako deta kamodzinso;
  • ndipo pamapeto ndikuwuzani kuti mawu odabwitsawa amtundu wamtambo ndi chiyani. Cloudnativeness, monga chiganizo cha mawu awa.

Mitengo

Ndikupangira kuyamba ndi zipika - pomwe mitengoyi iyenera kukankhidwa ku Kubernetes. Tsopano mwayambitsa pulogalamu ku Kubernetes. Malinga ndi ma classics, mapulogalamu am'mbuyomu nthawi zonse ankalemba zipika penapake mufayilo. Mapulogalamu oyipa adalemba zipika ku fayilo mu bukhu lanyumba la wopanga yemwe adayambitsa pulogalamuyo. Mapulogalamu abwino adalemba zipika ku fayilo kwinakwake /var/log.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Momwemonso, olamulira abwino anali ndi zinthu zina zomwe zidakonzedwa m'mapangidwe awo kuti zipikazi zizitha kuzungulira - rsyslog yomweyo, yomwe imayang'ana zipikazi ndipo zikachitika zinazake, zimakhala zambiri, zimapanga zosunga zobwezeretsera, zimayika zipika pamenepo. , amachotsa mafayilo akale, kupitilira sabata, miyezi isanu ndi umodzi ndi zina zambiri. Mwachidziwitso, tiyenera kukhala ndi zofunikira kuti chifukwa chakuti pulogalamuyo imalemba zipika, malo omwe ali pa maseva opanga (ma seva olimbana?) samatha. Ndipo, motero, kupanga konseko sikunayime chifukwa cha zipika.

Tikamasamukira kudziko la Kubernetes ndikuyendetsa chinthu chomwecho kumeneko, chinthu choyamba chimene mungamvetsere ndi chakuti anthu, monga momwe adalembera zipika mu fayilo, akupitiriza kuwalemba.

Zikuwonekeratu kuti ngati tilankhula za Kubernetes, malo oyenera olembera zipika kwinakwake kuchokera ku chidebe cha docker ndikungolemba kuchokera pakugwiritsa ntchito kupita ku zomwe zimatchedwa Stdout / Stderr, ndiko kuti, mitsinje yokhazikika ya opareshoni, zotuluka zolakwika zokhazikika . Iyi ndiye njira yolondola kwambiri, yosavuta komanso yomveka yoyika zipika mu Docker makamaka ku Kubernetis. Chifukwa ngati pulogalamu yanu ilemba zolemba ku Stdout / Stderr, ndiye kuti zili kwa Docker ndi Kubernetes kuwonjezera kuti musankhe chochita ndi mitengoyi. Docker imangopanga mafayilo ake apadera mumtundu wa JSON.

Apa funso likubwera, kodi mudzatani ndi zipikazi? Njira yosavuta ndiyomveka bwino, tili ndi kuthekera kochita kubectl logs ndipo yang'anani zipika izi za "mapodo" awa. Koma, mwina, iyi si njira yabwino kwambiri - china chake chiyenera kuchitidwa ndi zipika.

Pakalipano, tiyeni tiyankhule nthawi yomweyo, popeza tinakhudza mutu wa zipika, za chinthu monga matabwa ayenera kuwoneka. Ndiko kuti, izi sizikugwira ntchito mwachindunji kwa Kubernetes, koma tikayamba kuganizira zoyenera kuchita ndi zipika, zingakhale bwino kuganiziranso izi.

Tikufuna chida chamtundu wina, mwamtendere, chomwe chingatenge zipikazi zomwe docker yathu imayika m'mafayilo ake ndikuwatumiza kwinakwake. Mwambiri, nthawi zambiri timayambitsa mtundu wina wa wothandizira mkati mwa Kubernetes mu mawonekedwe a DaemonSet - okhometsa zipika, omwe amangouzidwa komwe matabwa omwe Docker amasonkhanitsa ali. Ndipo wotolerayu amangowatenga, mwinanso kuwagawa m'njira, mwina kuwalemeretsa ndi zina zowonjezera, ndipo pamapeto pake, amawatumiza kuti akasungidwe kwinakwake. Kusiyanasiyana kuli kotheka kale kumeneko. Chodziwika kwambiri mwina ndi Elasticsearch, komwe mungasungire zipika ndipo mutha kuzipeza mosavuta. Kenaka, pogwiritsa ntchito pempho, pogwiritsa ntchito Kibana, mwachitsanzo, pangani ma grafu potengera iwo, pangani zidziwitso zochokera pa iwo, ndi zina zotero.

Lingaliro lofunika kwambiri, ndikufuna kubwerezanso, ndikuti mkati mwa Docker, makamaka mkati mwa Kubernetes, kusunga zipika zanu mufayilo ndi lingaliro loyipa kwambiri.

Chifukwa choyamba, zimakhala zovuta kuyika zipika mkati mwa chidebe mufayilo. Choyamba muyenera kulowa mu chidebecho, perekani pamenepo, ndiyeno muyang'ane zipika. Chotsatira ndichakuti ngati muli ndi zipika mu fayilo, ndiye kuti zotengerazo nthawi zambiri zimakhala ndi malo ocheperako ndipo palibe zofunikira zomwe nthawi zambiri zimafunikira kuti zigwire ntchito wamba ndi zipika. Zikwirireni, yang'anani, tsegulani mumkonzi wamawu. Mphindi yotsatira ndi pamene tili ndi zipika mu fayilo mkati mwa chidebe, ngati chidebe ichi chichotsedwa, mukumvetsa, matabwa adzafa nawo. Chifukwa chake, kuyambiranso kulikonse kwa chidebe kumatanthauza kuti palibenso zipika. Apanso, njira yoyipa.

Ndipo mfundo yomaliza ndikuti mkati mwazotengera nthawi zambiri mumakhala ndi pulogalamu yanu ndipo ndizomwe - nthawi zambiri ndi njira yokhayo yomwe imayenda. Palibe zolankhula konse za njira iliyonse yomwe ingasinthe mafayilo ndi zipika zanu. Zipika zikangoyamba kulembedwa ku fayilo, izi zikutanthauza kuti, ndikhululukireni, tidzayamba kutaya seva yopanga. Chifukwa, choyamba, ndizovuta kupeza, palibe amene amawatsata, ndipo palibe amene amawalamulira - motero, fayilo imakula kosatha mpaka malo a seva atha. Chifukwa chake, ndikunenanso kuti kulowa mu Docker, makamaka ku Kubernetes, ku fayilo ndi lingaliro loyipa.

Mfundo yotsatira, apa ndikufuna kuyankhulanso za izi - popeza tikukhudza mutu wa zipika, zingakhale bwino kulankhula za momwe mitengo imawonekera kuti ikhale yabwino kugwira nawo ntchito. Monga ndanenera, mutuwu sunagwirizane mwachindunji ndi Kubernetes, koma umagwirizana kwambiri ndi mutu wa DevOps. Pamutu wa chitukuko chikhalidwe ndi ubwenzi pakati pa madipatimenti awiri osiyana - Dev ndi Ops, kotero kuti aliyense womasuka.

Izi zikutanthauza kuti lero, zipika ziyenera kulembedwa mumtundu wa JSON. Ngati muli ndi ntchito yosamvetsetseka yanu, yomwe imalemba zipika m'mawonekedwe osamvetsetseka chifukwa mumayika mtundu wina wa kusindikiza kapena chinachake chonga icho, ndiye nthawi ya google mtundu wina wa chimango, mtundu wina wa wrapper umene umakulolani kuti mugwiritse ntchito kudula mitengo mwachizolowezi; yambitsani magawo odula mitengo mu JSON pamenepo, chifukwa JSON ndi mawonekedwe osavuta, kuyiyika ndikosavuta.

Ngati JSON yanu sikugwira ntchito molingana ndi njira zina, palibe amene akudziwa, ndiye kuti lembani zipika mumtundu womwe ungathe kugawidwa. Apa, m'malo mwake, ndi bwino kuganizira mfundo yakuti, mwachitsanzo, ngati mukuyendetsa zotengera zambiri kapena mumangopanga ndi nginx, ndipo iliyonse ili ndi zoikamo zake zodula mitengo, ndiye kuti zikuwoneka kuti zingakhale zovuta kwambiri kwa inu. fotokozani iwo. Chifukwa pamwambo uliwonse wa nginx muyenera kulemba zolemba zanu, chifukwa amalemba zipika mosiyana. Apanso, kunali koyenera kuganiza zowonetsetsa kuti zochitika zonse za nginx zinali ndi makonzedwe ofanana odula mitengo ndikulemba zipika zawo zonse mofanana. Zomwezo zimagwiranso ntchito pazantchito zonse.

Pamapeto pake, ndikufunanso kuwonjezera mafuta pamoto kuti, moyenera, zipika zamitundu yambiri ziyenera kupewedwa. Pano pali chinthu, ngati munayamba mwagwirapo ntchito ndi osonkhanitsa matabwa, ndiye kuti mwawona zomwe akulonjezani, kuti azitha kugwira ntchito ndi zipika zamitundu yambiri, kudziwa kusonkhanitsa, ndi zina zotero. M'malo mwake, m'malingaliro anga, palibe wosonkhanitsa m'modzi lero yemwe angasonkhanitse zipika zamitundu yambiri nthawi zonse, mokwanira komanso popanda zolakwika. Mwa njira yaumunthu, kotero kuti ndiyosavuta komanso yopanda cholakwika.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Koma kutsata kwa stack nthawi zonse kumakhala zipika zamizere yambiri komanso momwe mungapewere. Funso apa ndikuti chipika ndi mbiri ya chochitika, ndipo stactrace si chipika kwenikweni. Ngati titolera zipika ndikuziyika kwinakwake ku Elasticsearch ndikujambula ma graph kuchokera kwa iwo, ndikupanga malipoti okhudzana ndi zomwe ogwiritsa ntchito patsamba lanu, ndiye mukapeza zochulukirapo, zikutanthauza kuti chinachake chosayembekezereka chikuchitika. Ndipo ndizomveka kuti muzingoyika ma stack trace kwinakwake mudongosolo lomwe limatha kuwatsata.

Iyi ndi pulogalamu (Sentry yemweyo) yemwe amapangidwa kuti azigwira ntchito ndi stack trace. Itha kupanga ntchito zodzipangira nthawi yomweyo, kugawa kwa wina, kuchenjeza ma stacttraces akachitika, gulu la stacttraces ndi mtundu umodzi, ndi zina zotero. M'malo mwake, sizomveka kunena za stactraces tikamalankhula za zipika, chifukwa izi ndizinthu zosiyana ndi zolinga zosiyanasiyana.

Kukhazikika

Kenako timalankhula za kasinthidwe mu Kubernetes: zoyenera kuchita ndi momwe ntchito mkati mwa Kubernetes ziyenera kukhazikitsidwa. Nthawi zambiri, ndimakonda kunena kuti Docker siyokhudza zotengera. Aliyense akudziwa kuti Docker ikukhudza zotengera, ngakhale omwe sanagwirepo ntchito ndi Docker kwambiri. Ndikubwereza, Docker sikunena za zotengera.

Docker, m'malingaliro anga, ili pafupi ndi miyezo. Ndipo pali miyezo pafupifupi chilichonse: miyezo yopangira pulogalamu yanu, miyezo yoyika pulogalamu yanu.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Ndipo chinthu ichi - tidachigwiritsa ntchito m'mbuyomu, chidangotchuka kwambiri pakubwera kwa zotengera - chinthuchi chimatchedwa ENV (chilengedwe) zosinthika, ndiye kuti, zosintha zachilengedwe zomwe zili mumayendedwe anu. Iyi ndi njira yabwino kwambiri yosinthira pulogalamu yanu, chifukwa ngati muli ndi mapulogalamu ku JAVA, Python, Go, Perl, Mulungu asalole, ndipo onse amatha kuwerenga wosungira, wogwiritsa ntchito database, zosintha zachinsinsi, ndiye kuti ndizabwino. Muli ndi mapulogalamu m'zilankhulo zinayi zosiyana zomwe zakhazikitsidwa mu dongosolo la database chimodzimodzi. Palibenso masinthidwe osiyanasiyana.

Chilichonse chikhoza kukhazikitsidwa pogwiritsa ntchito mitundu ya ENV. Tikamalankhula za Kubernetes, pali njira yabwino yolengezera zosintha za ENV mkati mwa Deployment. Chifukwa chake, ngati tikulankhula zachinsinsi, ndiye kuti titha kukankhira mwachangu deta yachinsinsi kuchokera kumitundu ya ENV (passwords to databases, etc.) kukhala chinsinsi, kupanga gulu lachinsinsi ndikuwonetsa mukufotokozera kwa ENV mu Deployment kuti sitikulengeza mwachindunji. mtengo wa kusinthaku, ndi mtengo wachinsinsi ichi chachinsinsi chidzawerengedwa kuchokera kuchinsinsi. Ili ndiye khalidwe la Kubernetes. Ndipo iyi ndiye njira yabwino kwambiri yosinthira mapulogalamu anu. Pa mlingo wa code, izi zikugwiranso ntchito kwa omanga. Ngati ndinu a DevOps, mutha kufunsa kuti: “Anyamata, chonde phunzitsani pulogalamu yanu kuti iwerenge zamitundu yosiyanasiyana. Ndipo tonse tidzakhala osangalala.”

Ngati aliyense mu kampaniyo awerenga zomwe zatchulidwa m'malo osiyanasiyana, ndiye kuti ndizabwino. Kotero kuti zisachitike kuti ena akudikirira deta ya postgres, ena akuyembekezera dzina lachinsinsi, ena akudikirira chinachake, ena akudikirira dbn yamtundu wina, kotero kuti, molingana, pali kufanana.

Vuto limabwera mukakhala ndi zosinthika zambiri zomwe mumangotsegula Kutumiza - ndipo pali mizere mazana asanu yamitundu yosiyanasiyana. Pachifukwa ichi, mwangotsala pang'ono kusintha zachilengedwe - ndipo simukuyeneranso kudzizunza nokha. Pankhaniyi, zingakhale zomveka kuyamba kugwiritsa ntchito configs. Ndiye kuti, phunzitsani pulogalamu yanu kugwiritsa ntchito configs.

Funso lokhalo ndikuti configs sizomwe mukuganiza. Config.pi sidongosolo losavuta kugwiritsa ntchito. Kapena masinthidwe ena mumtundu wanu, womwe uli ndi mphatso - izi sizomwe ndikutanthauza.

Chimene ndikunena ndikusintha m'mawonekedwe ovomerezeka, ndiko kuti, mulingo wodziwika kwambiri ndi .yaml. Zimamveka bwino momwe mungawerengere, zimawerengeka ndi anthu, zimamveka bwino momwe mungawerengere kuchokera pakugwiritsa ntchito.

Chifukwa chake, kuwonjezera pa YAML, muthanso, mwachitsanzo, kugwiritsa ntchito JSON, kugawa kuli kosavuta monga YAML powerenga makonzedwe a pulogalamu kuchokera pamenepo. Zimakhala zovuta kwambiri kuti anthu aziwerenga. Mutha kuyesa mawonekedwe, a la ini. Ndikosavuta kuwerenga, kuchokera pamalingaliro amunthu, koma zitha kukhala zovuta kuzikonza zokha, chifukwa ngati mungafune kupanga zosintha zanu, mtundu wa ini ukhoza kukhala wovuta kupanga.

Koma mulimonse, mtundu uliwonse womwe mungasankhe, mfundo ndi yakuti kuchokera ku Kubernetes ndi yabwino kwambiri. Mutha kuyika zosintha zanu zonse mkati mwa Kubernetes, mu ConfigMap. Kenako tengani configmap iyi ndikufunsani kuti ikhazikitsidwe mkati mwa pod yanu muzolemba zina, pomwe pulogalamu yanu idzawerengera masinthidwe kuchokera pa configmap ngati kuti ndi fayilo chabe. Izi, kwenikweni, ndizomwe zili bwino kuchita mukakhala ndi zosankha zambiri mu pulogalamu yanu. Kapena ndi mtundu wina wamtundu wovuta, pali zisa.

Ngati muli ndi configmap, ndiye kuti mutha kuphunzitsa bwino ntchito yanu, mwachitsanzo, kuti muzingoyang'ana zosintha mufayilo pomwe configmap imayikidwa, ndikuyikanso pulogalamu yanu pomwe ma configs asintha. Izi zitha kukhala njira yabwino.

Apanso, ndalankhula kale za izi - zinsinsi zachinsinsi siziri mu configmap, zambiri zachinsinsi sizimasinthasintha, zinsinsi zachinsinsi siziri zobisika. Kuchokera pamenepo, gwirizanitsani chidziwitso chachinsinsichi ndi diplomacy. Nthawi zambiri timasunga mafotokozedwe onse a zinthu za Kubernetes, ma deployments, configmaps, services in git. Chifukwa chake, kuyika mawu achinsinsi ku nkhokwe mu git, ngakhale ndi git yanu, yomwe muli nayo mkati mwakampani, ndi lingaliro loyipa. Chifukwa, osachepera, git amakumbukira chilichonse ndikungochotsa mapasiwedi pamenepo sikophweka.

Kuwunika thanzi

Mfundo yotsatira ndi chinthu chotchedwa Health check. Nthawi zambiri, cheke chaumoyo ndikungowona ngati pulogalamu yanu ikugwira ntchito. Nthawi yomweyo, nthawi zambiri timalankhula za mapulogalamu ena apaintaneti, omwe, molingana ndi momwe amawonera thanzi (ndibwino kuti musatanthauzire apa ndi kupitilira apo) iyi idzakhala URL yapadera, yomwe amakonza ngati muyezo, iwo kawirikawiri amachita /health.

Mukalowa ulalowu, motero, ntchito yathu imati "inde, chabwino, chilichonse chili bwino ndi ine, 200" kapena "ayi, chilichonse sichili bwino ndi ine, ena 500." Chifukwa chake, ngati ntchito yathu si http, osati pulogalamu yapaintaneti, tsopano tikulankhula za mtundu wina wa daemon, titha kudziwa momwe tingayang'anire thanzi. Ndiko kuti, sikofunikira, ngati ntchitoyo siili http, ndiye kuti zonse zimagwira ntchito popanda kufufuza thanzi ndipo izi sizingachitike mwanjira iliyonse. Mutha kusintha nthawi ndi nthawi zina mufayilo, mutha kubwera ndi lamulo lapadera la daemon yanu, monga, daemon status, yomwe inganene kuti "inde, zonse zili bwino, daemon ikugwira ntchito, ndi yamoyo."

Ndi cha chiyani? Chinthu choyamba komanso chodziwikiratu mwina ndi chifukwa chake kuyezetsa thanzi kumafunika - kumvetsetsa kuti ntchitoyo ikugwira ntchito. Ndikutanthauza kuti ndi zopusa basi, pamene zili tsopano, zikuwoneka ngati zikugwira ntchito, kotero mutha kukhala otsimikiza kuti zikugwira ntchito. Ndipo zikuwoneka kuti pulogalamuyo ikugwira ntchito, chidebe chikuyenda, chitsanzo chikugwira ntchito, zonse zili bwino - ndiyeno ogwiritsa ntchito adadula kale manambala a foni kuchokera ku chithandizo chaukadaulo ndikuti "ndiwe chiyani ..., iwe ndinagona, palibe chimene chikuyenda.”

Kuwunika thanzi ndi njira yoti muwone momwe wogwiritsa ntchito amawonera kuti imagwira ntchito. Njira imodzi. Tiyeni tiyike motere. Kuchokera pakuwona kwa Kubernetes, iyi ndi njira yodziwitsira nthawi yomwe ntchitoyo ikuyamba, chifukwa timamvetsetsa kuti pali kusiyana pakati pa nthawi yomwe chidebecho chinayambika, kulengedwa ndi kuyambika, komanso pamene ntchitoyo inayambika mwachindunji mu chidebe ichi. Chifukwa ngati titenga pulogalamu ya java yapakati ndikuyesera kuyiyambitsa padoko, ndiye kwa masekondi makumi anayi, kapena mphindi imodzi, kapena khumi, ikhoza kuyamba bwino. Pankhaniyi, mutha kugogoda pamadoko ake, sichingayankhe pamenepo, ndiye kuti, sichinakonzekere kulandira magalimoto.

Apanso, mothandizidwa ndi cheke chathanzi komanso mothandizidwa ndi zomwe tikutembenukira apa, titha kumvetsetsa ku Kubernetes kuti sikuti chidebe chokhacho chakwera mu pulogalamuyi, koma ntchitoyo idayamba, idayankha kale fufuzani zaumoyo, zomwe zikutanthauza kuti titha kutumiza magalimoto kumeneko.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Zomwe ndikunena pano zimatchedwa mayeso a Readiness/Liveness mkati mwa Kubernetes; chifukwa chake, mayeso athu okonzeka ali ndi udindo wa kupezeka kwa pulogalamuyo pakusanja. Ndiye kuti, ngati mayeso okonzeka achitidwa mu pulogalamuyi, ndiye kuti zonse zili bwino, kuchuluka kwa makasitomala kumapita ku pulogalamuyi. Ngati mayeso okonzeka sakuchitidwa, ndiye kuti ntchitoyo sichita nawo gawo, nthawi imeneyi satenga nawo gawo pakulinganiza, imachotsedwa pakulinganiza, kuchuluka kwamakasitomala sikumayenda. Chifukwa chake, kuyesa kwa Liveness mkati mwa Kubernetes ndikofunikira kuti ngati pulogalamuyo ikakamira, iyambiranso. Ngati kuyesa kwa moyo sikugwira ntchito yomwe yalengezedwa ku Kubernetes, ndiye kuti kugwiritsa ntchito sikungochotsedwa pakusanja, kumayambiranso.

Ndipo apa pali mfundo yofunikira yomwe ndikufuna kutchula: kuchokera kumalingaliro othandiza, kuyesa kokonzekera nthawi zambiri kumagwiritsidwa ntchito nthawi zambiri ndipo nthawi zambiri kumafunika kuposa kuyesa moyo. Ndiko kuti, kungolengeza mosaganizira za kukonzeka komanso kuyesa kwa moyo, chifukwa Kubernetes atha kuchita izi, ndipo tiyeni tigwiritse ntchito chilichonse chomwe angachite, si lingaliro labwino kwambiri. Ndifotokoza chifukwa chake. Chifukwa mfundo yachiwiri pakuyezetsa ndikuti lingakhale lingaliro labwino kuyang'ana zomwe zikuchitika pakuwunika thanzi lanu. Izi zikutanthauza kuti ngati muli ndi pulogalamu yapaintaneti yomwe imapereka chidziwitso, chomwe, mwachilengedwe, chiyenera kutenga kwinakwake. Mwachitsanzo, mu database. Chabwino, imasunga zambiri zomwe zimabwera mu REST API iyi mu database yomweyo. Ndiye, chifukwa chake, ngati thanzi lanu likuyankhidwa ngati slashhealth yolumikizidwa, pulogalamuyo imati "200, chabwino, zonse zili bwino," ndipo nthawi yomweyo nkhokwe ya pulogalamu yanu siyikupezeka, ndipo pulogalamu yaumoyo imati "200, chabwino, zonse zili bwino. ”- Uku ndiye kuwunika thanzi. Izi si momwe ziyenera kugwirira ntchito.

Ndiko kuti, pempho lanu, pempho likabwera kwa icho /health, sichimangoyankha, "200, ok", imayamba kupita, mwachitsanzo, kumalo osungirako zinthu, amayesa kulumikizana nawo, amachita zinthu zofunika kwambiri pamenepo, monga kusankha imodzi, ingoyang'ana kuti pali mgwirizano mu database ndipo mutha kufunsa database. Ngati zonsezi zidachitika bwino, yankho ndi "200, chabwino." Ngati sichikuyenda bwino, imanena kuti pali cholakwika, databaseyo siyikupezeka.

Chifukwa chake, pankhaniyi, ndibwereranso ku mayeso a Readiness/Liveness - chifukwa chake mumafunikira mayeso okonzeka, koma kuyesa kwa moyo kumafunsidwa. Chifukwa ngati mufotokoza cheke chaumoyo monga momwe ndanenera, ndiye kuti sichipezeka mu gawo lachitsanzoв или со всех instancemu database, mwachitsanzo. Mutalengeza mayeso okonzeka, macheki athu azaumoyo adayamba kulephera, ndipo chifukwa chake mapulogalamu onse omwe database sikupezeka, amangoyimitsidwa kuti asamalire ndipo kwenikweni "apachikidwa" monyalanyazidwa ndikudikirira nkhokwe zawo. ntchito.

Ngati talengeza kuyesa kwa moyo, ndiye taganizirani, database yathu yasweka, ndipo mu Kubernetes theka la chilichonse chimayamba kuyambiranso chifukwa kuyesa kwa moyo kumalephera. Izi zikutanthauza kuti muyenera kuyambitsanso. Izi siziri zomwe mukufuna, ndidakhala ndi chidziwitso changa pakuchita. Tidali ndi pulogalamu yochezera yomwe idalembedwa mu JS ndikulowetsedwa mu database ya Mongo. Ndipo vuto linali lakuti kunali kumayambiriro kwa ntchito yanga ndi Kubernetes, tinalongosola za kukonzekera, moyo wa mayesero pa mfundo yomwe Kubernetes angakhoze kuchita, kotero tidzagwiritsa ntchito. Chifukwa chake, nthawi ina Mongo adakhala "wopanda pake" ndipo chitsanzocho chidayamba kulephera. Chifukwa chake, malinga ndi kuyesa kwa mvula, nyembazo zidayamba "kupha".

Monga mukudziwira, pamene "aphedwa", uku ndi macheza, ndiko kuti, pali maulumikizidwe ambiri kuchokera kwa makasitomala atapachikidwa. Amakhalanso "aphedwa" - ayi, osati makasitomala, ogwirizana okha - osati onse nthawi imodzi, ndipo chifukwa chakuti samaphedwa nthawi imodzi, ena kale, ena pambuyo pake, samayamba nthawi yomweyo. nthawi. Kuphatikizanso mwachisawawa, sitingathe kulosera molondola za millisecond nthawi yoyambira kugwiritsa ntchito nthawi iliyonse, chifukwa chake amatero nthawi imodzi. Infospot imodzi imadzuka, ikuwonjezeredwa ku kusanja, makasitomala onse amabwera kumeneko, sangathe kupirira katundu wotere, chifukwa ali yekha, ndipo, mwachiwonekere, pali khumi ndi awiri a iwo omwe akugwira ntchito kumeneko, ndipo akugwa. Wotsatira anyamuka, katundu yense ali pa iye, iyenso akugwa. Chabwino, mathithiwa akupitirirabe kugwa. Pamapeto pake, momwe izi zidathetsedwera - tidangoyimitsa mosamalitsa kuchuluka kwa ogwiritsa ntchito pa pulogalamuyi, kuti zochitika zonse ziwuke ndikuyambitsa kuchuluka kwa ogwiritsa ntchito nthawi imodzi kotero kuti zidagawidwa kale pakati pazochitika khumi.

Pakadapanda kuti kuyesa kwa moyo kulengezedwe, zomwe zikanakakamiza zonse kuti ziyambitsenso, pulogalamuyo ikadachita bwino. Koma zonse kuchokera pakulinganiza ndizolephereka kwa ife, chifukwa nkhokwe sizikupezeka ndipo ogwiritsa ntchito onse "agwa". Ndiye, pamene databaseyi ikupezeka, chirichonse chikuphatikizidwa mu kusanja, koma ntchito siziyenera kuyambiranso, ndipo palibe chifukwa chotaya nthawi ndi zothandizira pa izi. Onse ali pano, ali okonzekera magalimoto, kotero magalimoto amangotsegulidwa, zonse zili bwino - kugwiritsa ntchito kuli m'malo, zonse zikupitiriza kugwira ntchito.

Chifukwa chake, kuyezetsa kokonzekera ndi kukhala ndi moyo kumakhala kosiyana, ngakhale kupitilira apo, mutha kupanga macheke osiyanasiyana azaumoyo, mtundu umodzi wa radii, mtundu umodzi wa liv, mwachitsanzo, ndikuwona zinthu zosiyanasiyana. Pamayeso okonzeka, yang'anani kumbuyo kwanu. Ndipo pamayeso a moyo, mwachitsanzo, simuyang'ana kuti kuyesa kwa moyo nthawi zambiri kumangoyankha, ngati kumatha kuyankha konse.

Chifukwa mayeso a moyo, makamaka, ndipamene "tikakamira." Kuzungulira kosatha kwayamba kapena china chake - ndipo palibenso zopempha zomwe zimasinthidwa. Chifukwa chake, ndizomveka kuwalekanitsa - ndikukhazikitsa malingaliro osiyanasiyana mwa iwo.

Ponena za zomwe muyenera kuyankha mukamayezetsa, mukamayesa thanzi. Ndi zowawa kwenikweni. Iwo omwe akudziwa bwino izi amaseka - koma mozama, ndawonapo mautumiki m'moyo wanga omwe amayankha "200" mu XNUMX% ya milandu. Ndiko kuti, wopambana. Koma nthawi yomweyo m'mayankhidwe amalemba "zolakwika izi ndi izi."

Ndiye kuti, kuyankha kumabwera kwa inu - chilichonse chikuyenda bwino. Koma nthawi yomweyo, muyenera kugawa thupi, chifukwa thupi likuti "pepani, pempholi lidatha ndi cholakwika" ndipo izi ndi zenizeni. Ndinaziwona izi m'moyo weniweni.

Ndipo kuti anthu ena asamawone kuti ndizoseketsa, ndipo ena amaziona kuti ndi zowawa kwambiri, ndi bwino kumamatira ku lamulo losavuta. Mu macheke thanzi, ndi mfundo pamene ntchito ndi ukonde ntchito.

Ngati zonse zidayenda bwino, yankhani ndi mayankho mazana awiri. Kwenikweni, yankho lililonse la mazana awiri lidzakuyenererani. Ngati mumawerenga ragsy bwino ndikudziwa kuti mayankho ena ndi osiyana ndi ena, yankhani ndi oyenera: 204, 5, 10, 15, chilichonse. Ngati sizabwino kwambiri, ndiye kuti "ziro ziro ziwiri". Ngati chirichonse chikuyenda molakwika ndipo cheke chaumoyo sichikuyankha, ndiye yankhani ndi mazana asanu. Apanso, ngati mumvetsetsa momwe mungayankhire, kusiyana kwa mayankho kumasiyana bwanji. Ngati simukumvetsa, ndiye kuti 502 ndiye njira yanu yoyankhira macheke ngati china chake chalakwika.

Iyi ndi mfundo ina, ndikufuna kubwereranso pang'ono poyang'ana ntchito zomwe zili pansi. Ngati mutayamba, mwachitsanzo, kuyang'ana ntchito zonse zomwe zili kumbuyo kwa ntchito yanu - zonse zonse. Zomwe timapeza kuchokera ku kamangidwe ka microservice, tili ndi lingaliro loti "kulumikizana kochepa" - ndiko kuti, pamene ntchito zanu zimadalirana pang'ono. Ngati mmodzi wa iwo alephera, ena onse opanda magwiridwe antchito amangopitilirabe kugwira ntchito. Zina mwazinthu sizikugwira ntchito. Chifukwa chake, ngati mutamangiriza macheke onse kwa wina ndi mzake, ndiye kuti mutha kukhala ndi chinthu chimodzi chomwe chikugwa mnyumbayo, ndipo chifukwa chagwa, mayendedwe onse azaumoyo akuyambanso kulephera - ndipo pali zida zambiri zogwirira ntchito. kapangidwe ka microservice No. Zonse zidada pamenepo.

Chifukwa chake, ndikufuna kubwereza izi kuti muyenera kuyang'ana mautumiki omwe ali pansi, omwe popanda zomwe ntchito yanu mu zana lamilandu silingagwire ntchito yake. Ndiye kuti, ndizomveka kuti ngati muli ndi REST API yomwe wogwiritsa ntchito amasungira ku database kapena kubweza kuchokera ku database, ndiye kuti palibe deta, simungatsimikizire kuti mukugwira ntchito ndi ogwiritsa ntchito.

Koma ngati ogwiritsa ntchito anu, mukamawatulutsa mu database, amalemeretsedwa ndi metadata ina, kuchokera ku backend ina, yomwe mumalowetsa musanatumize yankho ku frontend - ndipo backend iyi sikupezeka, izi zikutanthauza kuti mumapereka Yankhani popanda gawo lililonse la metadata.

Kenako, tilinso ndi chimodzi mwazinthu zowawa poyambitsa mapulogalamu.

M'malo mwake, izi sizikugwira ntchito kwa Kubernetes kokha; zidangochitika kuti chikhalidwe chamtundu wina wa chitukuko cha anthu ambiri ndi DevOps makamaka chidayamba kufalikira nthawi yomweyo Kubernetes. Chifukwa chake, mokulira, zikuwoneka kuti muyenera kutseka pulogalamu yanu popanda Kubernetes. Ngakhale Kubernetes asanachitike, anthu adachita izi, koma kubwera kwa Kubernetes, tidayamba kukambirana za izi mochuluka.

Kutsekedwa Kwabwino

Mwambiri, kodi Kutsekedwa kwa Graceful ndi chiyani ndipo chifukwa chiyani ndikofunikira? Izi ndi pamene pulogalamu yanu yawonongeka pazifukwa zina, muyenera kutero app stop - kapena mumalandira, mwachitsanzo, chizindikiro kuchokera ku makina ogwiritsira ntchito, ntchito yanu iyenera kumvetsetsa ndikuchitapo kanthu. Chochitika choipa kwambiri, ndithudi, ndi pamene ntchito yanu ilandira SIGTERM ndipo ili ngati "SIGTERM, tiyeni tipitirize, tigwire ntchito, tisachite kalikonse." Iyi ndi njira yoyipa kwambiri.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Njira yoyipa yofanana ndi pomwe pulogalamu yanu ilandila SIGTERM ndipo imakhala ngati "adatero segterm, zikutanthauza kuti tikutha, sindinawone, sindikudziwa zopempha za ogwiritsa ntchito, sindikudziwa mtundu wanji wa zopempha zomwe ndikuchita pompano, adatero SIGTERM, zikutanthauza kuti tikutha " Ichinso ndi njira yoyipa.

Ndi njira iti yomwe ili yabwino? Mfundo yoyamba ndikuganizira kutsirizidwa kwa ntchito. Njira yabwino ndiyakuti seva yanu iganizirebe zomwe imachita ikalandira SIGTERM.

SIGTERM ndi shutdown yofewa, yopangidwa mwapadera, imatha kulandidwa pamlingo wa code, ikhoza kukonzedwa, kunena kuti tsopano, dikirani, tidzayamba kumaliza ntchito yomwe tili nayo, ndiyeno tidzatuluka.

Kuchokera ku Kubernetes, izi ndi momwe zimawonekera. Tikamanena poto yomwe ikuyenda mu gulu la Kubernetes, "chonde imani, chokani," kapena tayambiranso, kapena zosintha zimachitika Kubernetes akapanganso ma pod, Kubernetes amatumiza uthenga womwewo wa SIGTERM ku pod, ndikudikirira. nthawi ina, ndipo, iyi ndi nthawi yomwe amadikirira, imakonzedwanso, pali gawo lapadera la ma dipuloma ndipo limatchedwa Graceful ShutdownTimeout. Monga mukumvetsetsa, sizimatchedwa kuti pachabe, ndipo sizopanda pake zomwe tikukamba za izo tsopano.

Pamenepo titha kunena mwachindunji kuti tidikire nthawi yayitali bwanji pakati pa nthawi yomwe titumize SIGTERM ku pulogalamuyo komanso tikamvetsetsa kuti pulogalamuyi ikuwoneka kuti yapenga kapena "yakakamira" ndipo sikutha - ndipo tiyenera kutero. tumizani SIGKILL, ndiye kuti, malizani ntchito yake molimbika. Ndiye kuti, chifukwa chake, tili ndi mtundu wina wa daemon womwe ukuyenda, umagwira ntchito. Tikumvetsetsa kuti pafupifupi ntchito zathu zomwe daemon imagwira sizikhala masekondi opitilira 30 nthawi imodzi. Chifukwa chake, SIGTERM ikafika, timamvetsetsa kuti daemon yathu imatha, makamaka, kumaliza masekondi 30 pambuyo pa SIGTERM. Timalemba, mwachitsanzo, masekondi 45 kuti tingonena kuti SIGTERM. Pambuyo pake timadikirira masekondi 45. Mwachidziwitso, panthawiyi chiwanda chimayenera kumaliza ntchito yake ndikudzimaliza yokha. Koma ngati sizikadatha mwadzidzidzi, zikutanthauza kuti zangotsala pang'ono - sizikukonzanso zopempha zathu nthawi zonse. Ndipo mu masekondi 45 mukhoza bwinobwino, kwenikweni, kumukhomerera iye pansi.

Ndipo apa, kwenikweni, ngakhale mbali ziwiri zitha kuganiziridwa. Choyamba, mvetsetsani kuti ngati mwalandira pempho, mudayamba kugwira ntchito mwanjira ina ndipo simunayankhe kwa wogwiritsa ntchito, koma munalandira SIGTERM, mwachitsanzo. Ndizomveka kuwongolera ndikupereka yankho kwa wogwiritsa ntchito. Iyi ndi mfundo yoyamba pankhaniyi. Mfundo yachiwiri apa ndikuti ngati mulemba ntchito yanu, nthawi zambiri mumange zomangazo kuti mulandire pempho la pulogalamu yanu, ndiye kuti muyambe ntchito, yambani kutsitsa mafayilo kuchokera kwinakwake, kutsitsa nkhokwe, ndi zina. - Kuti. Kawirikawiri, wosuta wanu, pempho lanu limapachikika kwa theka la ola ndikudikirira kuti muyankhe - ndiye, mwinamwake, muyenera kugwira ntchito pa zomangamanga. Ndiye kuti, ingoganizirani ngakhale nzeru wamba kuti ngati ntchito zanu zili zazifupi, ndiye kuti ndizomveka kunyalanyaza SIGTERM ndikusintha. Ngati ntchito zanu ndi zazitali, ndiye kuti sizomveka kunyalanyaza SIGTERM pamenepa. Ndizomveka kukonzanso zomangamanga kuti tipewe ntchito zazitali choncho. Kuti ogwiritsa ntchito asamangoyang'ana ndikudikirira. Sindikudziwa, pangani mtundu wina wa websocket pamenepo, pangani mbedza zomwe seva yanu itumiza kale kwa kasitomala, china chilichonse, koma musakakamize wogwiritsa ntchito kuti apachike kwa theka la ola ndikungodikirira gawo mpaka mutatha. muyankheni. Chifukwa sizikudziwika komwe angaswe.

Ntchito yanu ikatha, muyenera kupereka njira yoyenera yotulukira. Ndiye kuti, ngati pulogalamu yanu idafunsidwa kuti itseke, kuyimitsa, ndipo idatha kudziyimitsa nthawi zonse, ndiye kuti simuyenera kubweza mtundu wina wa code yotuluka 1,5,255 ndi zina zotero. Chilichonse chomwe sichiri zero code, makamaka m'makina a Linux, ndikukhulupirira izi, chimatengedwa kuti sichinapambane. Ndiye kuti, zimaganiziridwa kuti ntchito yanu pankhaniyi idatha ndi cholakwika. Chifukwa chake, mwamtendere, ngati ntchito yanu yatha popanda cholakwika, mumati 0 pazotulutsa. Ngati ntchito yanu ikulephera pazifukwa zina, mumati sanali 0 pazotulutsa. Ndipo mukhoza kugwira ntchito ndi chidziwitso ichi.

Ndipo njira yomaliza. Ndizoipa pamene wogwiritsa ntchito wanu atumiza pempho ndikulendewera kwa theka la ola pamene mukulikonza. Koma kawirikawiri, ndikufunanso kunena za zomwe zili zoyenera kuchokera kumbali ya kasitomala. Zilibe kanthu ngati muli ndi pulogalamu yam'manja, kutsogolo, ndi zina. Ndikofunika kukumbukira kuti nthawi zambiri gawo la wogwiritsa ntchito likhoza kuthetsedwa, chirichonse chikhoza kuchitika. Pempho likhoza kutumizidwa, mwachitsanzo, losakonzedwa bwino ndipo palibe yankho lomwe labwezedwa. Kutsogolo kwanu kapena pulogalamu yanu yam'manja - kutsogolo kulikonse, tiyeni tiyike motere - iyenera kuganizira izi. Ngati mumagwira ntchito ndi ma websockets, izi ndizopweteka kwambiri zomwe ndidakhalapo nazo.

Pamene opanga macheza okhazikika sadziwa kuti, zimakhala, websocket imatha kusweka. Kwa iwo, china chake chikachitika pa projekiti, timangosintha masinthidwe, ndipo imayambiranso. Mwachilengedwe, magawo onse okhala nthawi yayitali amang'ambika munkhaniyi. Madivelopa amabwera kudzatithamangira nati: "Anyamata, mukutani, macheza asokonekera kwa makasitomala athu onse!" Timawauza kuti: “Mukuchita chiyani? Kodi makasitomala anu akulephera kulumikizanso? Iwo amati: "Ayi, tikufunika kuti magawowa asasokonezeke." Mwachidule, izi ndizopanda pake. Mbali ya kasitomala iyenera kuganiziridwa. Makamaka, monga ndikunena, ndi magawo a nthawi yayitali monga ma websockets, amatha kusweka ndipo, osadziwika ndi wogwiritsa ntchito, muyenera kuyikanso magawo oterowo. Ndiyeno chirichonse chiri changwiro.

Zida

Kwenikweni, apa ndingokuuzani nkhani yolunjika. Apanso kuchokera ku moyo weniweni. Zodwala kwambiri zomwe ndidamvapo zokhudzana ndi zothandizira.

Zothandizira pankhaniyi, ndikutanthauza, zopempha zamtundu wina, malire omwe mutha kuyika ma pod mumagulu anu a Kubernetes. Chinthu chosangalatsa kwambiri chimene ndinamva kuchokera kwa wopanga ... Mmodzi mwa omanga anzanga kumalo a ntchito yapitayi adanenapo kuti: "Kufunsira kwanga sikudzayamba mumagulu." Ndinayang'ana kuti ndiwone kuti sichinayambe, koma mwina sichinagwirizane ndi zothandizira, kapena iwo anali ataika malire ang'onoang'ono. Mwachidule, kugwiritsa ntchito sikungayambe chifukwa cha zothandizira. Ndimati: "Sizidzayamba chifukwa chazinthu, mumasankha kuchuluka komwe mukufuna ndikuyika mtengo wokwanira." Akuti: “Ndi zinthu zotani?” Ndinayamba kumufotokozera kuti Kubernetes, malire pazopempha ndi blah, blah, blah ayenera kukhazikitsidwa. Bamboyo anamvetsera kwa mphindi zisanu, anagwedeza mutu nati: “Ndinabwera kuno kudzagwira ntchito yokonza mapulani, sindikufuna kudziwa chilichonse chokhudza chuma chilichonse. Ndabwera kudzalemba code ndipo ndi momwemo. " Ndizomvetsa chisoni. Ili ndi lingaliro lomvetsa chisoni kwambiri kuchokera kumalingaliro a wopanga. Makamaka m'dziko lamakono, titero kunena kwake, ma devops opita patsogolo.

N’chifukwa chiyani zipangizo zili zofunika? Pali mitundu iwiri yazinthu ku Kubernetes. Zina zimatchedwa zopempha, zina zimatchedwa malire. Ndi zothandizira tidzamvetsetsa kuti nthawi zonse pali zoletsa ziwiri zokha. Ndiye kuti, malire a nthawi ya CPU ndi malire a RAM pachidebe chomwe chikuyenda ku Kubernetes.

Malire amayika malire apamwamba a momwe chida chingagwiritsire ntchito pulogalamu yanu. Ndiye kuti, ngati mutati 1GB ya RAM m'malire, ndiye kuti pulogalamu yanu sichitha kugwiritsa ntchito 1GB ya RAM. Ndipo ngati mwadzidzidzi akufuna ndikuyesera kuchita izi, ndiye kuti njira yotchedwa oom killer, osakumbukira, ndiko kuti, idzabwera ndikupha ntchito yanu - ndiko kuti, idzayambiranso. Mapulogalamu sangayambenso kutengera CPU. Pankhani ya CPU, ngati pulogalamu ikuyesera kugwiritsa ntchito zambiri, kuposa momwe zafotokozedwera m'malire, CPU idzangosankhidwa mosamalitsa. Izi sizimayambitsa kuyambiranso. Awa ndiye malire - awa ndiye malire apamwamba.

Ndipo pali pempho. Pempho ndi momwe Kubernetes amamvetsetsa momwe ma node omwe ali mugulu lanu la Kubernetes amadzaza ndi mapulogalamu. Ndiko kuti, pempho ndi mtundu wa kudzipereka kwanu. Ikunena zomwe ndikufuna kugwiritsa ntchito: "Ndikufuna kuti mundisungire CPU yochuluka chonchi komanso kukumbukira kwanga." Fanizo losavuta ngati limeneli. Bwanji ngati tili ndi mfundo yomwe ili, sindikudziwa, ma CPU 8 onse. Ndipo pod ifika kumeneko, zomwe zopempha zake zimati 1 CPU, zomwe zikutanthauza kuti node ili ndi ma CPU 7 otsala. Ndiye kuti, mwamsanga pamene 8 pods ifika pa mfundo iyi, iliyonse yomwe ili ndi 1 CPU m'zopempha zawo, node, ngati kuti kuchokera ku Kubernetes, yatha CPU ndi ma pods ambiri omwe ali ndi zopempha sangathe. yakhazikitsidwa pa node iyi. Ngati ma node onse akutha CPU, ndiye Kubernetes ayamba kunena kuti palibe mfundo zoyenera m'gulu kuti muthamangitse ma pods anu chifukwa CPU yatha.

Chifukwa chiyani zopempha ndizofunikira ndipo chifukwa chiyani popanda zopempha, ndikuganiza kuti palibe chifukwa choyambitsa chilichonse ku Kubernetes? Tiyeni tiyerekeze mkhalidwe wongopeka. Mumayambitsa pulogalamu yanu popanda zopempha, Kubernetes sakudziwa kuchuluka kwa zomwe muli nazo, ndi mfundo ziti zomwe mungakankhireko. Chabwino, iye amakankhira, kukankha, kukankha pa mfundo. Nthawi ina, mudzayamba kupeza traffic ku pulogalamu yanu. Ndipo imodzi mwazogwiritsira ntchito mwadzidzidzi imayamba kugwiritsa ntchito chuma mpaka malire omwe ali nawo malinga ndi malire. Iwo likukhalira kuti pali ntchito ina pafupi ndipo amafunanso chuma. Node imayamba kutha mphamvu, mwachitsanzo, OP. Node imayamba kutha mwakuthupi, mwachitsanzo, kukumbukira mwachisawawa (RAM). Node ikatha mphamvu, choyamba docker imasiya kuyankha, kenako cubelet, kenako OS. Adzangokomoka ndipo ZONSE zidzasiya kukugwirirani ntchito. Izi zikutanthauza kuti, izi zipangitsa kuti node yanu itseke ndipo muyenera kuyiyambitsanso. Mwachidule, zinthu sizili bwino.

Ndipo mukakhala ndi zopempha, malirewo sali osiyana kwambiri, osachepera nthawi zambiri kuposa malire kapena zopempha, ndiye kuti mutha kukhala ndi kudzaza koyenera, koyenera kwa mapulogalamu kudutsa magulu a Kubernetes. Nthawi yomweyo, Kubernetes amadziwa pafupifupi kuchuluka kwa zomwe amayika, kuchuluka kwa zomwe zimagwiritsidwa ntchito. Ndiko kuti, ndi mphindi yokha. M’pofunika kuumvetsa. Ndipo ndikofunikira kuwongolera kuti izi zikuwonetsedwa.

Kusunga deta

Mfundo yathu yotsatira ndi yokhudza kusunga deta. Zoyenera kuchita nawo komanso zambiri, zoyenera kuchita ndi kulimbikira ku Kubernetes?

Ine ndikuganiza, kachiwiri, mkati mwathu Sukulu ya Madzulo, panali mutu wokhudza nkhokwe ku Kubernetes. Ndipo zikuwoneka kwa ine kuti ndikudziwa zomwe anzanu adakuuzani atafunsidwa kuti: "Kodi ndizotheka kuyendetsa nkhokwe ku Kubernetes?" Pazifukwa zina, zikuwoneka kwa ine kuti anzanu ayenera kukuuzani kuti ngati mukufunsa funso ngati n'zotheka kuyendetsa database ku Kubernetes, ndiye kuti sizingatheke.

Mfundo apa ndi yosavuta. Zikatero, ndikufotokozeranso, ngati ndinu munthu wabwino kwambiri yemwe amatha kupanga makina osungirako ma network omwe amagawidwa, mvetsetsani momwe mungakwaniritsire nkhokwe munkhaniyi, momwe mbadwa zamtambo zimayenera kugwirira ntchito. m'malo osungiramo zinthu zambiri. Mwinamwake, mulibe funso la momwe mungayendetsere. Ngati muli ndi funso lotere, ndipo mukufuna kuwonetsetsa kuti zonse zikuwonekera ndikuyimirira mpaka kufa mukupanga ndipo sizimagwa, ndiye kuti izi sizichitika. Mukutsimikiziridwa kudziwombera nokha pamapazi ndi njira iyi. Choncho ndi bwino kuti asatero.

Kodi tiyenera kuchita chiyani ndi zomwe pulogalamu yathu ingafune kusungira, zithunzi zina zomwe ogwiritsa ntchito amatsitsa, zinthu zina zomwe pulogalamu yathu imapanga ikamagwira ntchito, poyambira, mwachitsanzo? Zoyenera kuchita nawo ku Kubernetes?

Nthawi zambiri, inde, inde, Kubernetes idapangidwa bwino kwambiri ndipo nthawi zambiri idapangidwira ntchito zopanda malire. Ndiko kuti, kwa mapulogalamu omwe samasunga chidziwitso nkomwe. Izi ndi zabwino.

Koma, ndithudi, njira yabwino simakhalapo nthawi zonse. Ndiye? Mfundo yoyamba komanso yosavuta ndiyo kutenga mtundu wina wa S3, osati wopangidwa kunyumba, womwe sudziwikanso momwe umagwirira ntchito, koma kuchokera kwa wothandizira. Wothandizira wabwino, wamba - ndikuphunzitsani pulogalamu yanu kugwiritsa ntchito S3. Ndiye kuti, wosuta wanu akafuna kukweza fayilo, nenani "apa, chonde, kwezani ku S3." Akafuna kuilandira, nenani: "Nayi ulalo wobwerera ku S3 ndikuwuchotsa pano." Izi ndi zabwino.

Ngati mwadzidzidzi pazifukwa zina njira yabwinoyi siyabwino, muli ndi pulogalamu yomwe simunalembe, simunayipange, kapena ndi cholowa choyipa, sichingagwiritse ntchito protocol ya S3, koma iyenera kugwira ntchito ndi zolemba zakumaloko. zikwatu zakomweko . Tengani china chosavuta kapena chosavuta, tumizani Kubernetes. Ndiko kuti, kumanga Ceph nthawi yomweyo ntchito zina zochepa, zikuwoneka kwa ine, ndi lingaliro loipa. Chifukwa Ceph, ndithudi, ndi yabwino komanso yapamwamba. Koma ngati simukumvetsa zomwe mukuchita, ndiye mukangoyika china chake pa Ceph, mutha kuzichotsa mosavuta ndipo osachichotsanso. Chifukwa, monga mukudziwa, Ceph imasunga deta mumagulu ake mu mawonekedwe a binary, osati mawonekedwe a mafayilo osavuta. Choncho, ngati mwadzidzidzi gulu la Ceph likuphwanyidwa, ndiye kuti pali kuthekera kokwanira komanso kwakukulu kuti simudzapezanso deta yanu kuchokera kumeneko.

Tikhala ndi maphunziro a Ceph, mutha dziwani pulogalamuyo ndikutumiza fomu yofunsira.

Chifukwa chake, ndibwino kuchita chinthu chosavuta ngati seva ya NFS. Kubernetes amatha kugwira nawo ntchito, mutha kuyika chikwatu pansi pa seva ya NFS - ntchito yanu ili ngati chikwatu chakumaloko. Panthawi imodzimodziyo, mwachibadwa, muyenera kumvetsetsa kuti, kachiwiri, muyenera kuchita chinachake ndi NFS yanu, muyenera kumvetsetsa kuti nthawi zina zimakhala zosafikirika ndikuganizira funso la zomwe mungachite pankhaniyi. Mwina iyenera kuthandizidwa kwinakwake pamakina osiyana.

Mfundo yotsatira yomwe ndidakambirana ndi choti muchite ngati pulogalamu yanu ipanga mafayilo mukugwira ntchito. Mwachitsanzo, ikayamba, imapanga fayilo yosasunthika, yomwe imachokera pazidziwitso zina zomwe pulogalamuyo imalandira pokhapokha poyambitsa. Kamphindi bwanji. Ngati palibe zambiri zotere, ndiye kuti simuyenera kudandaula konse, ingoyikirani pulogalamuyi nokha ndikugwira ntchito. Funso lokha apa ndi loti, onani. Nthawi zambiri, mitundu yonse ya machitidwe a cholowa, monga WordPress ndi zina zotero, makamaka ndi mapulagini osinthidwa anzeru, opanga ma PHP ochenjera, nthawi zambiri amadziwa momwe angapangire kuti adzipangire okha fayilo. Chifukwa chake, imodzi imapanga fayilo imodzi, yachiwiri imapanga fayilo yachiwiri. Iwo ndi osiyana. Kusanja kumachitika mugulu lamakasitomala la Kubernetes mwangozi. Chifukwa chake, zikuwoneka kuti sadziwa momwe angagwirire ntchito limodzi. Wina amapereka chidziwitso china, winayo amapereka chidziwitso china. Izi ndi zomwe muyenera kupewa. Ndiye kuti, ku Kubernetes, zonse zomwe mumayambitsa zimatsimikiziridwa kuti zitha kugwira ntchito zingapo. Chifukwa Kubernetes ndichinthu chosuntha. Chifukwa chake, amatha kusuntha chilichonse, nthawi iliyonse yomwe akufuna, popanda kufunsa aliyense. Chifukwa chake, muyenera kudalira izi. Chilichonse chomwe chakhazikitsidwa munthawi imodzi chidzalephera posachedwa. Mukakhala ndi zosungitsa zambiri, zimakhala bwino. Koma kachiwiri, ndikunena, ngati muli ndi mafayilo angapo otere, ndiye kuti mukhoza kuwayika pansi panu, amalemera pang'ono. Ngati pali ochulukirapo pang'ono, mwina simuyenera kuwakankhira mkati mwa chidebecho.

Ndikulangiza kuti pali chinthu chodabwitsa ku Kubernetes, mutha kugwiritsa ntchito voliyumu. Makamaka, pali voliyumu ya mtundu wopanda kanthu dir. Ndiko kuti, Kubernetes adzangopanga chikwatu muzowongolera zake pa seva yomwe mudayambira. Ndipo adzakupatsani inu kuti muzigwiritse ntchito. Pali mfundo imodzi yokha yofunika. Ndiko kuti, deta yanu sidzasungidwa mkati mwa chidebecho, koma m'malo mwa munthu amene mukuyendetsa. Kuphatikiza apo, Kubernetes amatha kuwongolera ma dirs opanda kanthu ngati asinthidwa mwachizolowezi ndipo amatha kuwongolera kukula kwake ndikusalola kuti ipitirire. Chokhacho ndikuti zomwe mwalemba mu dir zopanda kanthu sizitayika panthawi yoyambiranso. Ndiye kuti, ngati pod yanu itagwa molakwika ndikuwukanso, chidziwitso chomwe chili mu dir chopanda kanthu sichingapite kulikonse. Atha kuzigwiritsanso ntchito poyambira kwatsopano - ndipo ndizabwino. Ngati pod yanu ichoka kwinakwake, ndiye kuti mwachibadwa adzachoka popanda deta. Ndiko kuti, pomwe pod yochokera kumalo komwe idakhazikitsidwa ndi dir yopanda kanthu ikatha, dir yopanda kanthu imachotsedwa.

Ndi chiyani chinanso chabwino pa dir yopanda kanthu? Mwachitsanzo, ikhoza kugwiritsidwa ntchito ngati cache. Tiyerekeze kuti pulogalamu yathu imapanga china chake pa ntchentche, imapatsa ogwiritsa ntchito, ndikuchichita kwa nthawi yayitali. Choncho, ntchitoyo, mwachitsanzo, imapanga ndikuipereka kwa ogwiritsa ntchito, ndipo nthawi yomweyo imayisunga kwinakwake, kotero kuti nthawi ina wogwiritsa ntchitoyo abwera ku chinthu chomwecho, adzakhala mofulumira kuti apereke mwamsanga. Empty dir ikhoza kufunsidwa kwa Kubernetes kuti apange kukumbukira. Chifukwa chake, ma cache anu amatha kugwira ntchito pa liwiro la mphezi - potengera kuthamanga kwa disk. Ndiko kuti, muli ndi chikumbutso chopanda kanthu, mu OS imasungidwa kukumbukira, koma kwa inu, kwa wogwiritsa ntchito mkati mwa pod, ikuwoneka ngati chikwatu chapafupi. Simufunikira pulogalamuyo kuti iphunzitse zamatsenga aliwonse. Mukungotenga mwachindunji ndikuyika fayilo yanu mu bukhu, koma, kwenikweni, mu kukumbukira pa OS. Ichi ndi chinthu chothandiza kwambiri potengera Kubernetes.

Kodi Minio ali ndi mavuto otani? Vuto lalikulu ndi Minio ndilakuti kuti chinthu ichi chizigwira ntchito, chikuyenera kuthamanga kwinakwake, ndipo payenera kukhala mtundu wina wa fayilo, ndiko kuti, kusungirako. Ndipo apa tikukumana ndi zovuta zomwe Ceph ali nazo. Ndiye kuti, Minio iyenera kusunga mafayilo ake kwinakwake. Ndi mawonekedwe a HTTP ku mafayilo anu. Kuphatikiza apo, magwiridwe antchitowa ndiwosauka kwambiri kuposa a S3 ya Amazon. M'mbuyomu, sikunathe kuvomereza moyenera wogwiritsa ntchito. Tsopano, monga momwe ndikudziwira, ikhoza kupanga kale zidebe ndi zilolezo zosiyana, koma kachiwiri, zikuwoneka kwa ine kuti vuto lalikulu ndiloti, njira yosungiramo zinthu zakale zochepa.

Kodi Empty dir mu kukumbukira imakhudza bwanji malire? Simakhudza malire mwanjira iliyonse. Zimakhala m'chikumbukiro cha wolandirayo, osati kukumbukira chidebe chanu. Ndiye kuti, chidebe chanu sichiwona chopanda kanthu m'makumbukidwe ngati gawo la kukumbukira kwake. Wothandizira akuwona izi. Chifukwa chake, inde, pakuwona kwa kubernetes, mukayamba kugwiritsa ntchito izi, zingakhale bwino kumvetsetsa kuti mukupereka gawo la kukumbukira kwanu kuti muchotse dir. Ndipo motero, mvetsetsani kuti kukumbukira kumatha kutha osati chifukwa cha ntchito, komanso chifukwa wina amalembera ma dirs opanda kanthu awa.

Cloudnativeness

Ndipo subtopic yomaliza ndi yomwe Cloudnative ili. N’chifukwa chiyani kuli kofunikira? Cloudnativeness ndi zina zotero.

Ndiko kuti, mapulogalamu omwe amatha ndikulembedwa kuti agwire ntchito mumtambo wamakono wamakono. Koma, kwenikweni, Cloudnative ili ndi mbali ina yotere. Kuti izi sizongogwiritsa ntchito zomwe zimaganizira zofunikira zonse za zomangamanga zamakono zamtambo, komanso zimadziwa momwe angagwiritsire ntchito zipangizo zamakono zamakono zamakono, kugwiritsa ntchito ubwino ndi zovuta zomwe zimagwira ntchito m'mitambo iyi. Osamangopita kumtunda ndikugwira ntchito mumitambo, koma gwiritsani ntchito mwayi wogwira ntchito mumtambo.

Zofunikira pakukhazikitsa pulogalamu ku Kubernetes

Tiyeni tingotenga Kubernetes monga chitsanzo. Pulogalamu yanu ikugwira ntchito ku Kubernetes. Pulogalamu yanu imatha nthawi zonse, kapena ma admin a pulogalamu yanu, amatha kupanga akaunti yantchito nthawi zonse. Ndiye kuti, akaunti yovomerezeka ku Kubernetes yokha mu seva yake. Onjezani maufulu ena omwe tikufuna pamenepo. Ndipo mutha kupeza Kubernetes mkati mwa pulogalamu yanu. Kodi mungachite chiyani mwanjira imeneyi? Mwachitsanzo, kuchokera ku pulogalamuyi, landirani zambiri za komwe mapulogalamu anu ena, zochitika zina zofananira zili, ndipo palimodzi mwanjira ina pamwamba pa Kubernetes, ngati pakufunika kutero.

Apanso, tinali ndi mlandu posachedwa. Tili ndi wolamulira m'modzi yemwe amayang'anira pamzere. Ndipo ntchito zina zatsopano zikawoneka pamzerewu, zimapita ku Kubernetes - ndipo mkati mwa Kubernetes zimapanga pod yatsopano. Imapatsa pod iyi ntchito yatsopano ndipo mkati mwa chimango cha pod iyi, pod imagwira ntchitoyo, imatumiza yankho kwa wolamulirayo, ndipo wolamulirayo amachita chinachake ndi chidziwitso ichi. Mwachitsanzo, imawonjezera database. Ndiko kuti, kachiwiri, izi ndizophatikizanso kuti ntchito yathu ikuyenda ku Kubernetes. Titha kugwiritsa ntchito mawonekedwe a Kubernetes okha kuti tikulitse ndikupangitsa kuti ntchito yathu ikhale yosavuta. Ndiko kuti, musabise matsenga amtundu wina wa momwe mungayambitsire ntchito, momwe mungayambitsire wogwira ntchito. Ku Kubernetes, mumangotumiza pempho mu pulogalamuyi ngati ntchitoyo yalembedwa mu Python.

Zomwezo zimagwiranso ntchito ngati tipitilira Kubernetes. Tili ndi Kubernetes yathu ikuyenda kwinakwake - ndizabwino ngati ili mumtambo wamtundu wina. Apanso, titha kugwiritsa ntchito, ndipo ndiyenera, ndikukhulupirira, kugwiritsa ntchito kuthekera kwamtambo komwe tikuthamangira. Kuchokera ku zinthu zoyambirira zomwe mtambo umatipatsa. Kulinganiza, ndiko kuti, titha kupanga zowerengera zamtambo ndikuzigwiritsa ntchito. Uwu ndi mwayi wachindunji wa zomwe tingagwiritse ntchito. Chifukwa kulinganiza kwamtambo, choyamba, mopusa kumachotsa udindo kwa ife momwe umagwirira ntchito, momwe imapangidwira. Komanso ndizosavuta, chifukwa Kubernetes wokhazikika amatha kuphatikiza ndi mitambo.

Zomwezo zimapitanso pakukulitsa. Kubernetes wamba amatha kuphatikiza ndi opereka mtambo. Amadziwa kumvetsetsa kuti ngati gululo likutha, ndiye kuti, danga la node latha, ndiye kuti muyenera kuwonjezera - Kubernetes mwiniwake adzawonjezera ma node atsopano ku gulu lanu ndikuyamba kuyambitsa ma pods pa iwo. Ndiko kuti, katundu wanu akadzabwera, chiwerengero cha moto chimayamba kuwonjezeka. Manode omwe ali mgululi akatha chifukwa cha ma pod awa, Kubernetes amayambitsa ma node atsopano ndipo, motero, kuchuluka kwa ma pods kumatha kuwonjezeka. Ndipo ndi yabwino kwambiri. Uwu ndi mwayi wachindunji wokulitsa tsango pa ntchentche. Osati mofulumira kwambiri, m'lingaliro lakuti sichiwiri, zimakhala ngati miniti kuti muwonjezere ma node atsopano.

Koma kuchokera ku zomwe ndakumana nazo, kachiwiri, ndichinthu chozizira kwambiri chomwe ndidachiwonapo. Pamene gulu la Cloudnative linakula malinga ndi nthawi ya tsiku. Unali msonkhano wakumbuyo womwe unkagwiritsidwa ntchito ndi anthu kuofesi yakumbuyo. Ndiko kuti, amabwera kudzagwira ntchito pa 9 koloko m'mawa, ayambe kulowa mu dongosolo, ndipo motero, gulu la Cloudnative, kumene likuyenda, likuyamba kuphulika, kuyambitsa ma pods atsopano kuti aliyense amene akubwera kuntchito agwire ntchito ndi ntchitoyo. Akachoka kuntchito 8pm kapena 6pm, magulu a Kubernetes amazindikira kuti palibe amene akugwiritsanso ntchito pulogalamuyi ndikuyamba kuchepa. Ndalama zosungira mpaka 30 peresenti ndizotsimikizika. Inagwira ntchito ku Amazon panthawiyo; panthaŵiyo kunalibe munthu ku Russia amene akanatha kuchita bwino chotero.

Ndikukuwuzani molunjika, zosungidwazo ndi 30 peresenti chifukwa chakuti timagwiritsa ntchito Kubernetes ndikugwiritsa ntchito mwayi wamtambo. Tsopano izi zitha kuchitika ku Russia. Sindidzalengeza kwa aliyense, ndithudi, koma tiyeni tingonena kuti pali opereka omwe angachite izi, perekani kunja kwa bokosi ndi batani.

Pali mfundo imodzi yomaliza yomwe ndikufunanso kuti ndikuwonetseni. Kuti ntchito yanu, zomangamanga zanu zikhale za Cloudnative, ndizomveka kuti potsiriza muyambe kusintha njira yotchedwa Infrastructure as Code. khodi Fotokozani ntchito yanu, malingaliro anu abizinesi monga ma code. Ndipo gwiritsani ntchito nayo ngati code, ndiye kuti, yesani, tulutsani, sungani mu git, ikani CICD kwa iyo.

Ndipo izi ndizomwe zimakulolani, choyamba, kuti mukhale ndi mphamvu nthawi zonse, kuti muzimvetsetsa momwe zilili. Kachiwiri, pewani kugwiritsa ntchito pamanja komwe kumayambitsa zolakwika. Chachitatu, pewani zomwe zimatchedwa kubweza, pomwe mumayenera kugwira ntchito zomwezo nthawi zonse. Chachinayi, kumakupatsani mwayi wochira mwachangu ngati mwalephera. Ku Russia, nthawi zonse ndikakamba za izi, nthawi zonse pamakhala anthu ambiri omwe amati: "Inde, zikuwonekeratu, koma muli ndi njira, mwachidule, palibe chifukwa chokonzekera chilichonse." Koma ndi zoona. Ngati chinachake chikuphwanyidwa muzitsulo zanu, ndiye kuti kuchokera pakuwona njira ya Cloudnative komanso kuchokera ku Infrastructure monga Code, osati kukonza, kupita ku seva, kulingalira zomwe zasweka ndikuzikonza, n'zosavuta. kufufuta seva ndikuipanganso. Ndipo ndidzabwezeretsa zonsezi.

Nkhani zonsezi zikukambidwa mwatsatanetsatane pa Maphunziro a kanema a Kubernetes: Junior, Basic, Mega. Potsatira ulalo mutha kudzidziwa bwino ndi pulogalamuyi ndi zikhalidwe. Chosavuta ndichakuti mutha kudziwa Kubernetes pophunzira kunyumba kapena kugwira ntchito kwa maola 1-2 patsiku.

Source: www.habr.com

Kuwonjezera ndemanga