Kukulitsa ndi kukwaniritsa Kubernetes (ndemanga ndi lipoti lamavidiyo)
April 8 kumsonkhanowu Saint HighLoad++ 2019, monga gawo la gawo la "DevOps and Operations", lipoti la "Kukulitsa ndi Kuonjezera Kubernetes" linaperekedwa, popanga omwe antchito atatu a kampani ya Flant adagwira nawo ntchito. M'menemo, timalankhula za zochitika zambiri zomwe tinkafuna kukulitsa ndi kukwaniritsa mphamvu za Kubernetes, koma zomwe sitinapeze yankho lokonzekera komanso losavuta. Tili ndi mayankho ofunikira monga mapulojekiti a Open Source, ndipo mawu awa adaperekedwanso kwa iwo.
Mwa mwambo, ndife okondwa kupereka kanema wa lipoti (Mphindi 50, yophunzitsa zambiri kuposa nkhaniyo) komanso chidule chachikulu m'mawu. Pitani!
Core ndi zowonjezera mu K8s
Kubernetes akusintha makampani ndi njira zoyendetsera ntchito zomwe zakhazikitsidwa kalekale:
Zikomo kwa iye zotsalira, sitigwiranso ntchito ndi malingaliro monga kukhazikitsa config kapena kuyendetsa lamulo (Chef, Ansible...), koma gwiritsani ntchito magulu a zotengera, mautumiki, ndi zina zotero.
Titha kukonzekera mapulogalamu osaganizira zamitundu yosiyanasiyana malo enieni, yomwe idzayambitsidwe: chitsulo chopanda kanthu, mtambo wa mmodzi wa opereka chithandizo, ndi zina zotero.
Ndi ma K8 simunapezekepo machitidwe abwino pakukonzekera zomangamanga: njira zokulira, kudzichiritsa nokha, kulolerana ndi zolakwika, ndi zina.
Komabe, zowona, zonse sizili bwino: Kubernetes adabweretsanso zovuta zake zatsopano.
Choyambira cha Kubernetes chimatanthawuza zoyambira zoyambira m'magulumagulu, kuyang'anira magalimoto, ndi zina zotero. Tinakambirana za iwo mwatsatanetsatane mu lipoti zaka 2 zapitazo.
Kumbali ina, K8s imapereka mwayi waukulu wowonjezera ntchito zomwe zilipo, zomwe zimathandiza kutseka ena - mwachindunji - Zosowa za ogwiritsa. Zowonjezera ku Kubernetes ndi udindo wa oyang'anira magulu, omwe ayenera kukhazikitsa ndi kukonza zonse zofunika kuti gulu lawo likhale "loyenera" [kuti athetse mavuto awo enieni]. Ndi zowonjezera zotani izi? Tiyeni tione zitsanzo zina.
Zitsanzo za zowonjezera
Titayika Kubernetes, titha kudabwa kuti maukonde omwe ndi ofunikira kwambiri pakulumikizana kwa ma pod mkati mwa node komanso pakati pa node sikugwira ntchito pawokha. Kubernetes kernel sikutsimikizira kulumikizana kofunikira; m'malo mwake, imatsimikizira maukonde mawonekedwe (CNI) pazowonjezera za gulu lachitatu. Tiyenera kukhazikitsa imodzi mwazowonjezera izi, zomwe zidzayang'anire kasinthidwe ka netiweki.
Chitsanzo chapafupi ndi njira zosungiramo deta (disk ya m'deralo, chipangizo cha block block, Ceph ...). Poyamba, iwo anali mu chikhalidwe, koma ndi kubwera CSI zinthu zikusintha kukhala zofanana ndi zomwe zafotokozedwa kale: mawonekedwe ali ku Kubernetes, ndipo kukhazikitsidwa kwake kuli m'ma module a chipani chachitatu.
Ogwira ntchito ndi gulu lonse la zowonjezera (zomwe zikuphatikizapo cert-manager), amatanthauzira akale ndi olamulira. Lingaliro la ntchito yawo ndi lochepa chabe ndi malingaliro athu ndipo limatithandiza kutembenuza zida zokonzekera (mwachitsanzo, DBMS) kukhala zoyamba, zomwe zimakhala zosavuta kugwira ntchito (kusiyana ndi zotengera ndi zoikamo). Ogwiritsa ntchito ambiri alembedwa - ngakhale ambiri aiwo sanakonzekere kupanga, ndi nkhani yanthawi yake:
Metrics - fanizo lina la momwe Kubernetes adalekanitsira mawonekedwe (Metrics API) kuchokera pakukhazikitsa (zowonjezera za chipani chachitatu monga adaputala ya Prometheus, wothandizira datadog cluster ...).
chifukwa kuyang'anira ndi ziwerengero, kumene mβzochita osati kokha zofunika Prometheus ndi Grafana, komanso kube-state-metrics, node-exporter, etc.
Ndipo iyi si mndandanda wathunthu wa zowonjezera ... Mwachitsanzo, pa kampani ya Flant yomwe timayika panopa 29 zowonjezera (zonsezi zimapanga zinthu zonse za 249 Kubernetes). Mwachidule, sitingathe kuwona moyo wa tsango popanda zowonjezera.
Pali kaundula wachinsinsi (i.e. wofuna kulowa) wokhala ndi zithunzi za pulogalamuyo. Zimaganiziridwa kuti pod iliyonse imapatsidwa chinsinsi chapadera chomwe chimalola kutsimikizika mu registry. Ntchito yathu ndikuwonetsetsa kuti chinsinsichi chikupezeka m'malo a mayina kuti ma pod amatha kutsitsa zithunzi. Pakhoza kukhala ntchito zambiri (iliyonse yomwe imafunikira chinsinsi), ndipo ndizothandiza kusinthira zinsinsizo nthawi zonse, kotero kuti mwayi woyika zinsinsi ndi dzanja umachotsedwa. Apa ndi pamene woyendetsa amabwera kudzapulumutsa: timapanga wolamulira yemwe adzadikirira kuti dzina la dzina liwonekere ndipo, pogwiritsa ntchito chochitika ichi, adzawonjezera chinsinsi ku malo a mayina.
Lolani mwachisawawa kupeza kuchokera ku ma pod kupita pa intaneti ndikoletsedwa. Koma nthawi zina zingafunike: ndi zomveka kuti njira yopezera chilolezo igwire ntchito mophweka, popanda kufunikira luso linalake, mwachitsanzo, ndi kupezeka kwa chizindikiro mu malo a mayina. Kodi wogwira ntchitoyo angatithandize bwanji apa? Chowongolera chimapangidwa chomwe chimadikirira kuti chizindikirocho chiwoneke m'malo a mayina ndikuwonjezera ndondomeko yoyenera yofikira pa intaneti.
Momwemonso: tiyerekeze kuti tikufunika kuwonjezera zina kuyipa, ngati ili ndi chizindikiro chofanana (ndi mtundu wina wa chiyambi). Zochita ndi opareshoni ndizodziwikiratu ...
Pofotokoza mwachidule nkhani zonse zomwe zafotokozedwa, tinafika potsimikiza kuti kuti mugwire ntchito yabwino ku Kubernetes yomwe mukufuna: A) kukhazikitsa zowonjezera, b) khazikitsani ogwira ntchito (pothetsa ntchito za admin zatsiku ndi tsiku).
Momwe mungalembe mawu a Kubernetes?
Kawirikawiri, ndondomekoyi ndi yosavuta:
.. koma zinapezeka kuti:
Kubernetes API ndi chinthu chopanda pake chomwe chimatenga nthawi yochuluka kuti chidziwe bwino;
mapulogalamu nawonso si a aliyense (chiyankhulo cha Go chinasankhidwa kukhala chilankhulo chokondedwa chifukwa pali dongosolo lapadera la icho - Othandizira SDK);
Zinthu zilinso chimodzimodzi ndi chimango chokha.
Pansi mzere: kulemba woyang'anira (woyendetsa) ayenera wononga ndalama zambiri kuphunzira zinthu. Izi zitha kukhala zomveka kwa ogwiritsa ntchito "akuluakulu" - nenani, pa MySQL DBMS. Koma ngati tikumbukira zitsanzo zomwe tafotokozazi (zobisika zinsinsi, kupeza ma pods pa intaneti ...), zomwe tikufunanso kuchita molondola, ndiye kuti tidzamvetsetsa kuti khama lomwe likugwiritsidwa ntchito lidzaposa zotsatira zomwe tikufunikira tsopano:
Kodi amagwira ntchito bwanji? Gululi lili ndi poto yokhala ndi Go binary yokhala ndi chipolopolo. Pafupi naye pali gulu la mbedza(zambiri za iwo - onani pansipa). The shell-operator palokha amalembetsa zina zochitika mu Kubernetes API, zikachitika zomwe zimayambitsa zingwe zofananira.
chiwonetsero cha chithunzi chopangidwa chatsopano;
Ichi ndi gawo la dongosolo lomwe (pang'onopang'ono) limafunikira ufulu wolembetsa ku zochitika ku Kubernetes ndikugawa zinsinsi ku malo a mayina, kotero timapanga ServiceAccount (ndi ndondomeko ya malamulo) ya mbedza.
Imatumiza kunja metrics kwa Prometheus, yomwe mungamvetsetse ngati chipolopolo-woyendetsa ntchito, fufuzani chiwerengero cha zolakwika pa mbedza iliyonse ndi kukula kwa mzere wamakono.
Kufotokozera mwachidule gawo ili la lipoti:
Kuyika zowonjezera
Kuti mugwire ntchito yabwino ndi Kubernetes, kufunika kokhazikitsa zowonjezera kudanenedwanso. Ndikuuzani za izi pogwiritsa ntchito chitsanzo cha njira ya kampani yathu momwe timachitira tsopano.
Helm ali ndi udindo pa templating ndi declarativeness.
Nkhani ya auto-update inathetsedwa pogwiritsa ntchito mbedza yapadziko lonse, yomwe imapita ku registry pa ndandanda ndipo, ngati iwona chithunzi chatsopano cha dongosolo pamenepo, imatulutsa (ie "yokha").
Kusungirako makonda mu cluster kumayendetsedwa pogwiritsa ntchito ConfigMap, yomwe ili ndi deta yoyambirira ya storages (pakuyambitsa iwo amalowetsedwa mu storages).
Mavuto ndi kupanga mawu achinsinsi, kutulukira ndi kupeza mosalekeza anathetsedwa pogwiritsa ntchito mbedza.
Masitepe amatheka chifukwa cha ma tag, omwe Docker amathandizira kunja kwa bokosi.
Zotsatira zake zimawunikidwa pogwiritsa ntchito ma metric omwe tingamvetsetse momwe zilili.