Zithunzi zokonzeka kupanga za k8s

Nkhaniyi ikukhudza momwe timagwiritsira ntchito zotengera popanga, makamaka Kubernetes. Nkhaniyi imaperekedwa pakutolera ma metric ndi zipika kuchokera m'mitsuko, komanso zithunzi zomanga.

Zithunzi zokonzeka kupanga za k8s

Ndife ochokera ku kampani ya fintech Exness, yomwe imapanga ntchito zogulitsa pa intaneti ndi zinthu za fintech za B2B ndi B2C. R&D yathu ili ndi magulu ambiri osiyanasiyana, dipatimenti yachitukuko ili ndi antchito 100+.

Timayimira gulu lomwe limayang'anira nsanja kuti opanga athu atolere ndikuyendetsa ma code. Makamaka, tili ndi udindo wotolera, kusunga ndi kupereka lipoti ma metric, malogi, ndi zochitika kuchokera kumapulogalamu. Pakali pano timagwiritsa ntchito zotengera za Docker pafupifupi 50 m'malo opangira, timasunga zosungira zathu zazikulu za XNUMX TB, ndikupereka mayankho omanga omwe amamangidwa mozungulira malo athu: Kubernetes, Rancher, ndi othandizira osiyanasiyana pagulu. 

Chilimbikitso chathu

Kodi chikuyaka ndi chiyani? Palibe amene angayankhe. Kodi malowo ali kuti? Ndizovuta kumvetsa. Yayaka liti? Mutha kudziwa, koma osati nthawi yomweyo. 

Zithunzi zokonzeka kupanga za k8s

Chifukwa chiyani zotengera zina zayima pomwe zina zagwa? Ndi chidebe chiti chomwe chinali ndi mlandu? Kupatula apo, kunja kwa zotengera ndizofanana, koma mkati mwa chilichonse chili ndi Neo yake.

Zithunzi zokonzeka kupanga za k8s

Madivelopa athu ndi anyamata odziwa bwino ntchito. Amapanga ntchito zabwino zomwe zimabweretsa phindu ku kampani. Koma pali zolephera pamene zotengera zomwe zili ndi mapulogalamu zimasokera. Chidebe chimodzi chimadya kwambiri CPU, china chimadya maukonde, chachitatu chimadya ntchito za I / O, ndipo chachinayi sichidziwika bwino chomwe chimachita ndi sockets. Zonse zimagwa ndipo sitimayo ikumira. 

Agents

Kuti timvetse zomwe zikuchitika mkatimo, tidaganiza zoyika othandizira mwachindunji m'makontena.

Zithunzi zokonzeka kupanga za k8s

Othandizirawa akuletsa mapulogalamu omwe amasunga zotengera kuti zisaphwanyike. Ma Agents ndi okhazikika, ndipo izi zimapangitsa kuti pakhale njira yokhazikika yoperekera zotengera. 

Kwa ife, othandizira ayenera kupereka zipika mumtundu wokhazikika, wolembedwa ndi wopindika. Ayeneranso kutipatsa ma metric okhazikika omwe amatha kukulirakulira malinga ndi momwe bizinesi ikugwiritsidwira ntchito.

Othandizira amatanthauzanso zida zogwirira ntchito ndi kukonza zomwe zimatha kugwira ntchito m'njira zosiyanasiyana zoyimba zomwe zimathandizira zithunzi zosiyanasiyana (Debian, Alpine, Centos, etc.).

Pomaliza, othandizira ayenera kuthandizira CI / CD yosavuta yomwe imaphatikizapo mafayilo a Docker. Kupanda kutero, sitimayo idzasweka, chifukwa zotengera zidzayamba kuperekedwa motsatira njanji "zokhota".

Kumanga ndondomeko ndi chandamale chithunzi chipangizo

Kuti chilichonse chikhale chokhazikika komanso chokhazikika, njira ina yomanga yokhazikika iyenera kutsatiridwa. Chifukwa chake, tidaganiza zosonkhanitsa zotengera ndi makontena - uku ndikubwereza.

Zithunzi zokonzeka kupanga za k8s

Apa zotengerazo zikuimiridwa ndi ma autilaini olimba. Panthaŵi imodzimodziyo, anaganiza zoikamo zida zogaŵiramo kuti “moyo usaoneke ngati wa raspberries.” Chifukwa chiyani izi zidachitika, tifotokoza pansipa.
 
Chotsatira chake ndi chida chomangira—chidebe chokhazikika chomwe chimalozera mitundu yogawa ndi mitundu ina ya script.

Kodi timachigwiritsa ntchito bwanji? Tili ndi Docker Hub yomwe ili ndi chidebe. Timaziwonetsera mkati mwa dongosolo lathu kuti tichotse zodalira zakunja. Zotsatira zake ndi chidebe cholembedwa chachikasu. Timapanga template kuti tiyike zogawa zonse ndi zolemba zomwe timafunikira mu chidebe. Pambuyo pake, timasonkhanitsa chithunzi chokonzekera kugwiritsa ntchito: opanga amaika code ndi zina mwazodalira zawo zapadera. 

Ubwino wa njira imeneyi ndi chiyani? 

  • Choyamba, kuwongolera kwathunthu kwa zida zomangira - chidebe chomanga, zolemba ndi zogawa. 
  • Kachiwiri, takwaniritsa zofunikira: timapanga ma tempuleti, apakati komanso okonzeka kugwiritsa ntchito mofananamo. 
  • Chachitatu, zotengera zimatipatsa kunyamula. Lero timagwiritsa ntchito Gitlab, ndipo mawa tidzasinthira ku TeamCity kapena Jenkins ndipo tidzatha kuyendetsa zotengera zathu chimodzimodzi. 
  • Chachinayi, kuchepetsa kudalira. Sizinangochitika mwangozi kuti timayika zida zogawira mu chidebe, chifukwa izi zimatithandiza kupewa kutsitsa pa intaneti nthawi zonse. 
  • Chachisanu, liwiro lomanga lawonjezeka - kupezeka kwa zithunzi zakumaloko kumakuthandizani kuti musataye nthawi pakutsitsa, popeza pali chithunzi chapafupi. 

Mwa kuyankhula kwina, tapeza njira yolumikizira yolamuliridwa komanso yosinthika. Timagwiritsa ntchito zida zomwezo kupanga zotengera zomwe zasinthidwa kwathunthu. 

Momwe ndondomeko yathu yomanga imagwirira ntchito

Zithunzi zokonzeka kupanga za k8s

Msonkhanowo umayambitsidwa ndi lamulo limodzi, ndondomekoyi ikuchitika mu chithunzi (chowonetsedwa mofiira). Wopanga pulogalamuyo ali ndi fayilo ya Docker (yomwe ili yachikasu), timayipereka, m'malo mwazosintha ndi zikhalidwe. Ndipo m'njira timawonjezera mitu ndi zolemba - awa ndi othandizira athu. 

Mutu umawonjezera magawo kuchokera kuzithunzi zofananira. Ndipo footer imayika ntchito zathu mkati, kukonza kukhazikitsidwa kwa ntchito, kudula mitengo ndi othandizira ena, kulowa m'malo olowera, ndi zina. 

Zithunzi zokonzeka kupanga za k8s

Tinaganiza kwa nthawi yayitali ngati tiyike woyang'anira. Pamapeto pake, tinaganiza zomufuna. Tinasankha S6. Woyang'anira amapereka kasamalidwe ka chidebe: amakulolani kuti mulumikizane nayo ngati njira yayikulu ikuphwanyidwa ndikupereka kasamalidwe ka chidebecho popanda kuchipanganso. Mitengo ndi ma metrics ndi njira zomwe zikuyenda mkati mwa chidebecho. Ayeneranso kulamulidwa mwanjira ina, ndipo timachita izi mothandizidwa ndi woyang'anira. Pomaliza, S6 imasamalira kusamalira nyumba, kukonza ma sign ndi ntchito zina.

Popeza timagwiritsa ntchito machitidwe osiyanasiyana oyimba, tikamanga ndikuthamanga, chidebecho chiyenera kumvetsetsa kuti ndi malo otani ndikuchita mogwirizana ndi momwe zinthu zilili. Mwachitsanzo:
Izi zimatipatsa mwayi wopanga chithunzi chimodzi ndikuchiyendetsa m'njira zosiyanasiyana zoyimba, ndipo chidzayambika poganizira zomwe zili m'gulu la orchestration.

 Zithunzi zokonzeka kupanga za k8s

Pachidebe chomwecho timapeza mitengo yosiyanasiyana ku Docker ndi Kubernetes:

Zithunzi zokonzeka kupanga za k8s

Kulipirako kumachitidwa moyang'aniridwa ndi S6. Samalani ndi osonkhanitsa ndi zochitika - awa ndi othandizira athu omwe ali ndi zipika ndi ma metric. Kubernetes alibe, koma Docker ali nawo. Chifukwa chiyani? 

Ngati tiyang'ana ndondomeko ya "pod" (pambuyo pake - Kubernetes pod), tiwona kuti chidebe cha zochitikazo chikuchitidwa mu pod, chomwe chili ndi chidebe chosonkhanitsa chomwe chimagwira ntchito yosonkhanitsa ma metrics ndi mitengo. Titha kugwiritsa ntchito kuthekera kwa Kubernetes: kuyendetsa zotengera mu pod imodzi, munjira imodzi komanso/kapena malo ochezera. dziwitsani othandizira anu ndikuchita zina. Ndipo ngati chidebe chomwecho chikakhazikitsidwa ku Docker, chidzalandira mphamvu zofanana ndi zomwe zimatuluka, ndiye kuti, zidzatha kupereka zipika ndi ma metrics, popeza othandizira adzakhazikitsidwa mkati. 

Metrics ndi zipika

Kupereka ma metric ndi zipika ndi ntchito yovuta. Pali mbali zingapo pa chisankho chake.
Zomangamanga zimapangidwira kuti ziperekedwe kwa malipiro, osati kubweretsa zitsulo zambiri. Ndiko kuti, njirayi iyenera kuchitidwa ndi zofunikira zochepa za chidebe. Timayesetsa kuthandiza opanga athu: "Pezani chotengera cha Docker Hub, chiyendetseni, ndipo titha kupereka zipika." 

Mbali yachiwiri ndikuchepetsa kuchuluka kwa zipika. Ngati kuchuluka kwa zipika kumapezeka m'mitsuko ingapo (ntchitoyo imatulutsa tsatanetsatane mu loop), katundu pa CPU, njira zolumikizirana, ndi makina opangira zipika zimawonjezeka, ndipo izi zimakhudza magwiridwe antchito a wolandirayo monga zonse ndi zotengera zina pa wolandirayo, ndiye nthawi zina izi zimabweretsa "kugwa" kwa wolandirayo. 

Mbali yachitatu ndikuti ndikofunikira kuthandizira njira zambiri zosonkhanitsira ma metrics momwe zingathere kunja kwa bokosilo. Kuchokera pakuwerenga mafayilo ndikuvotera Prometheus-endpoint mpaka kugwiritsa ntchito ma protocol apadera.

Ndipo gawo lomaliza ndikuchepetsa kugwiritsa ntchito zinthu.

Tinasankha njira yotseguka ya Go yotchedwa Telegraf. Ichi ndi cholumikizira chapadziko lonse lapansi chomwe chimathandizira mitundu yopitilira 140 ya njira zolowera (mapulagini olowetsa) ndi mitundu 30 yamayendedwe otulutsa (mapulagini otulutsa). Tamaliza ndipo tsopano tikuuzani momwe timagwiritsira ntchito Kubernetes monga chitsanzo. 

Zithunzi zokonzeka kupanga za k8s

Tinene kuti wopanga mapulogalamu amatumiza ntchito ndipo Kubernetes alandila pempho lopanga pod. Panthawiyi, chidebe chotchedwa Collector chimapangidwira pa pod iliyonse (timagwiritsa ntchito mutation webhook). Wotolera ndiye wothandizira wathu. Pachiyambi, chidebe ichi chimadzikonzekeretsa kuti chigwire ntchito ndi Prometheus ndi dongosolo lotolera zipika.

  • Kuti izi zitheke, zimagwiritsa ntchito zofotokozera za pod, ndipo kutengera zomwe zili, zimapanga, tinene, mapeto a Prometheus; 
  • Kutengera mafotokozedwe a pod ndi zoikamo zinazake zotengera, imasankha momwe angatulutsire zipika.

Timasonkhanitsa zipika kudzera pa Docker API: opanga amangofunika kuziyika mu stdout kapena stderr, ndipo Collector azikonza. Mitengo imasonkhanitsidwa m'machulukidwe ndikuchedwa pang'ono kuti apewe kuchulukira komwe kungachitike. 

Ma metrics amasonkhanitsidwa pazochitika zolemetsa (njira) muzotengera. Chilichonse chimayikidwa: namespace, pansi, ndi zina zotero, ndikusinthidwa kukhala mtundu wa Prometheus - ndipo amapezeka kuti azitolere (kupatula mitengo). Timatumizanso zipika, ma metrics ndi zochitika ku Kafka ndi zina:

  • Zipika zimapezeka mu Graylog (zowunikira);
  • Mitengo, ma metrics, zochitika zimatumizidwa ku Clickhouse kuti zisungidwe kwa nthawi yayitali.

Chilichonse chimagwira ntchito chimodzimodzi mu AWS, timangosintha Graylog ndi Kafka ndi Cloudwatch. Timatumiza zipika kumeneko, ndipo chilichonse chimakhala chosavuta: zimadziwikiratu kuti ndi gulu liti ndi chidebe. N'chimodzimodzinso ndi Google Stackdriver. Ndiko kuti, dongosolo lathu limagwira ntchito ponseponse ndi Kafka komanso mumtambo. 

Ngati tilibe Kubernetes ndi pods, ndondomekoyi ndi yovuta kwambiri, koma imagwira ntchito pa mfundo zomwezo.

Zithunzi zokonzeka kupanga za k8s

Zomwezo zimachitidwa mkati mwa chidebecho, zimayendetsedwa pogwiritsa ntchito S6. Njira zonse zomwezo zikuyenda mkati mwa chidebe chimodzi.

Pamapeto pake

Tapanga yankho lathunthu pomanga ndi kukhazikitsa zithunzi, ndi zosankha zosonkhanitsa ndi kutumiza zipika ndi ma metrics:

  • Tinapanga njira yokhazikika yosonkhanitsa zithunzi, ndipo potengera izo tinapanga ma templates a CI;
  • Othandizira kusonkhanitsa deta ndiye zowonjezera zathu za Telegraf. Tidawayesa bwino popanga;
  • Timagwiritsa ntchito mutation webhook kuti tigwiritse ntchito zotengera zomwe zili ndi ma pod; 
  • Kuphatikizidwa mu Kubernetes/Rancher ecosystem;
  • Titha kuchita zotengera zomwezo m'makina osiyanasiyana oyimba ndikupeza zotsatira zomwe tikuyembekezera;
  • Adapanga kasinthidwe kasamalidwe ka chidebe kokhazikika. 

Wolemba nawo: Ilya Prudnikov

Source: www.habr.com

Kuwonjezera ndemanga