Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Gawo loyamba lotumiza ku Kubernetes ndikuyika pulogalamu yanu mu chidebe. Muzotsatirazi, tiwona momwe mungapangire chithunzi chaching'ono, chotetezedwa cha chidebe.
Chifukwa cha Docker, kupanga zithunzi zachidebe sikunakhaleko kosavuta. Tchulani chithunzi choyambira, onjezani zosintha zanu, ndikupanga chidebe.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Ngakhale njira iyi ndiyabwino poyambira, kugwiritsa ntchito zithunzi zosasinthika kungayambitse ntchito yosatetezeka yokhala ndi zithunzi zazikulu zodzaza ndi zovuta.

Kuphatikiza apo, zithunzi zambiri mu Docker zimagwiritsa ntchito Debian kapena Ubuntu pachithunzi choyambira, ndipo ngakhale izi zimapereka kuyanjana kwabwino komanso makonda osavuta (fayilo ya Docker imangotengera mizere iwiri yamakhodi), zithunzi zoyambira zimatha kuwonjezera mazana a ma megabytes a katundu wowonjezera pachidebe chanu. Mwachitsanzo, fayilo yosavuta ya node.js ya pulogalamu ya Go "hello-world" ili pafupifupi 700 megabytes, pomwe pulogalamu yanu yeniyeni ndi kukula kwa ma megabytes ochepa.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Chifukwa chake ntchito yonseyi yowonjezereka ndikuwononga malo a digito komanso malo abwino obisalapo pachiwopsezo chachitetezo ndi nsikidzi. Choncho tiyeni tione njira ziwiri zochepetsera kukula kwa chidebe chojambula.

Choyamba ndi kugwiritsa ntchito zithunzi zazing'ono zoyambira, chachiwiri ndikugwiritsa ntchito Chitsanzo cha Zomangamanga. Kugwiritsa ntchito zithunzi zing'onozing'ono zoyambira mwina ndiyo njira yosavuta yochepetsera chidebe chanu. Mwachidziwikire, chilankhulo kapena stack yomwe mukugwiritsa ntchito ili ndi chithunzi choyambirira chomwe chili chocheperako kuposa chithunzi chosasinthika. Tiyeni tiwone chidebe chathu cha node.js.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Mwachikhazikitso ku Docker, node: kukula kwa chithunzi cha 8 ndi 670 MB, ndipo mfundo: kukula kwa chithunzi cha 8-alpine ndi 65 MB yokha, ndiko kuti, 10 kucheperako. Pogwiritsa ntchito chithunzi chaching'ono cha Alpine, mudzachepetsa kwambiri kukula kwa chidebe chanu. Alpine ndi gawo laling'ono komanso lopepuka la Linux lomwe limadziwika kwambiri pakati pa ogwiritsa ntchito a Docker chifukwa limagwirizana ndi mapulogalamu ambiri ndikusunga zotengera zazing'ono. Mosiyana ndi chithunzi chokhazikika cha "node" ya Docker, "node: alpine" imachotsa mafayilo ndi mapulogalamu ambiri, ndikusiya okhawo omwe ali okwanira kugwiritsa ntchito pulogalamu yanu.

Kuti mupite ku chithunzi chocheperako, ingosinthani Dockerfile kuti muyambe kugwira ntchito ndi chithunzi chatsopanocho:

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Tsopano, mosiyana ndi chithunzi chakale cha onbuild, muyenera kukopera khodi yanu mu chidebe ndikuyika zodalira zilizonse. Mu Dockerfile yatsopano, chidebecho chimayamba ndi node: chithunzi cha alpine, kenako chimapanga chikwatu cha code, chimayika zodalira pogwiritsa ntchito NPM phukusi woyang'anira, ndipo potsiriza amayendetsa server.js.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Kukweza uku kumabweretsa chidebe chomwe chimakhala chocheperako ka 10 kukula kwake. Ngati chilankhulo chanu chokonzekera sichikhala ndi mawonekedwe ochepetsera zithunzi, gwiritsani ntchito Alpine Linux. Idzaperekanso mphamvu yoyendetsera bwino zomwe zili mu chidebecho. Kugwiritsa ntchito zithunzi zazing'ono zoyambira ndi njira yabwino yopangira mwachangu zida zazing'ono. Koma kuchepetsanso kwakukulu kumatha kutheka pogwiritsa ntchito Builder Pattern.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

M'zinenero zotanthauziridwa, code code imaperekedwa kwa womasulira ndiyeno kuphedwa mwachindunji. M'zilankhulo zophatikizidwa, khodi yoyambira imasinthidwa kukhala code yophatikizidwa. Komabe, kuphatikiza nthawi zambiri kumagwiritsa ntchito zida zomwe sizofunikira kwenikweni kuti mugwiritse ntchito kachidindo. Izi zikutanthauza kuti mutha kuchotsa kwathunthu zida izi kuchokera pachidebe chomaliza. Mutha kugwiritsa ntchito Builder Pattern pa izi.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Code imapangidwa mu chidebe choyamba ndikuphatikizidwa. Khodi yophatikizidwa imayikidwa mu chidebe chomaliza popanda ophatikiza ndi zida zofunika kuti apange codeyo. Tiyeni tigwiritse ntchito Go kudzera munjira iyi. Choyamba, tichoka pa chithunzi cha onbuild kupita ku Alpine Linux.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Mu Dockerfile yatsopano, chidebecho chimayamba ndi chithunzi cha golang:alpine. Kenako imapanga chikwatu cha code, ndikuyikopera mu code source, imapanga code source, ndikuyendetsa ntchito. Chidebechi ndi chaching'ono kwambiri kuposa chidebe chopangidwa ndi onbuild, komabe chimakhala ndi compiler ndi zida zina za Go zomwe sitikufuna kwenikweni. Chifukwa chake tiyeni tingotulutsa pulogalamu yophatikizidwa ndikuyiyika mu chidebe chake.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Mutha kuzindikira zachilendo mufayilo iyi ya Docker: ili ndi mizere iwiri ya FROM. Gawo loyamba la mzere wa 4 likuwoneka chimodzimodzi ndi Dockerfile yapitayi kupatula kuti limagwiritsa ntchito mawu ofunikira AS kutchula gawoli. Gawo lotsatira lili ndi mzere watsopano wa FROM kuti muyambe fano latsopano, pomwe m'malo mwa golang: chithunzi cha alpine tidzagwiritsa ntchito Raw alpine ngati chithunzi choyambira.

Raw Alpine Linux ilibe ziphaso za SSL zoyikidwa, zomwe zingapangitse mafoni ambiri a API pa HTTPS kulephera, ndiye tiyeni tiyike ziphaso za CA.

Tsopano pakubwera gawo losangalatsa: kukopera kachidindo kopangidwa kuchokera pachidebe choyamba kupita chachiwiri, mutha kugwiritsa ntchito lamulo la COPY lomwe lili pamzere 5 wa gawo lachiwiri. Ingotengera fayilo imodzi yokha ndipo sizikhudza zida za Go. Fayilo yatsopano yamitundu yambiri ya Docker idzakhala ndi chithunzi cha chidebe chomwe chili ndi ma megabytes 12 okha kukula, poyerekeza ndi chithunzi choyambirira cha chidebe chomwe chinali 700 megabytes, ndiko kusiyana kwakukulu!
Chifukwa chake kugwiritsa ntchito zithunzi zazing'ono zoyambira ndi Builder Pattern ndi njira zabwino zopangira zida zazing'ono popanda ntchito zambiri.
Ndizotheka kuti kutengera mulu wa pulogalamuyo, pali njira zowonjezera zochepetsera kukula kwa chithunzi ndi chidebe, koma kodi zotengera zing'onozing'ono zimakhala ndi phindu loyezeka? Tiyeni tiwone mbali ziwiri zomwe zotengera zazing'ono zimakhala zogwira mtima kwambiri - magwiridwe antchito ndi chitetezo.

Kuti muwone kuchuluka kwa magwiridwe antchito, lingalirani za nthawi yopangira chidebe, ndikuchiyika mu registry (kukankha), ndikuchichotsa pamenepo (kukoka). Mutha kuwona kuti chidebe chaching'ono chili ndi mwayi wapadera kuposa chotengera chachikulu.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Docker idzasunga zigawozo kuti zomanga zotsatila zikhale zachangu kwambiri. Komabe, makina ambiri a CI omwe amagwiritsidwa ntchito pomanga ndi kuyesa zotengera sizimasunga zigawo, chifukwa chake pali nthawi yopulumutsa. Monga mukuonera, nthawi yomanga chidebe chachikulu, malingana ndi mphamvu ya makina anu, ndi masekondi 34 mpaka 54, ndipo pamene mukugwiritsa ntchito chidebe chochepetsedwa pogwiritsa ntchito Builder Pattern - kuchokera ku 23 mpaka 28 masekondi. Kwa ntchito zamtunduwu, kuwonjezeka kwa zokolola kudzakhala 40-50%. Ndiye tangoganizani za kangati mumamanga ndikuyesa nambala yanu.

Chidebecho chikamangidwa, muyenera kukankhira chithunzi chake (chithunzi cha chidebe chokankhira) mu registry ya chidebe kuti mutha kuchigwiritsa ntchito m'gulu lanu la Kubernetes. Ndikupangira kugwiritsa ntchito Google Container Registry.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Ndi Google Container Registry (GCR), mumangolipira zosungira zosaphika ndi ma netiweki, ndipo palibe zolipiritsa zowongolera zotengera. Ndi yachinsinsi, yotetezeka komanso yachangu kwambiri. GCR imagwiritsa ntchito zanzeru zambiri kuti ifulumizitse kukoka. Monga mukuwonera, kuyika chidebe cha Chithunzi cha Docker Container pogwiritsa ntchito go:onbuild kudzatenga masekondi 15 mpaka 48, kutengera momwe kompyuta imagwirira ntchito, ndipo ntchito yomweyi yokhala ndi chidebe chaching'ono idzatenga masekondi 14 mpaka 16, komanso makina osapanga kanthu. ubwino mu ntchito liwiro kumawonjezeka ndi 3 zina. Kwa makina akuluakulu, nthawi ndi yofanana, popeza GCR imagwiritsa ntchito nkhokwe yapadziko lonse yosungiramo zithunzi zomwe zimagawidwa, kutanthauza kuti simukusowa kuziyika konse. Pakompyuta yotsika mphamvu, CPU ndiye cholepheretsa, kotero mwayi wogwiritsa ntchito zotengera zing'onozing'ono ndizokulirapo pano.

Ngati mukugwiritsa ntchito GCR, ndikupangira kugwiritsa ntchito Google Container Builder (GCB) ngati gawo la dongosolo lanu lomanga.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Monga mukuwonera, kugwiritsa ntchito kwake kumakupatsani mwayi wopeza zotsatira zabwino kwambiri pakuchepetsa nthawi ya Build + Push kuposa ngakhale makina opanga - pakadali pano, ntchito yomanga ndi kutumiza zotengera kwa wolandirayo imathandizira pafupifupi nthawi za 2. . Kuphatikiza apo, mumapeza mphindi 120 zomanga zaulere tsiku lililonse, zomwe zimakwaniritsa zosowa zanu zanyumba nthawi zambiri.

Kenako pamabwera chiyerekezo chofunikira kwambiri - liwiro la kubweza, kapena kutsitsa, Kokani zotengera. Ndipo ngati simusamala kwambiri za nthawi yomwe imagwiritsidwa ntchito pokankhira, ndiye kuti kutalika kwa kukoka kumakhudza kwambiri magwiridwe antchito onse. Tiyerekeze kuti muli ndi gulu la mfundo zitatu ndipo imodzi mwa izo ikulephera. Ngati mukugwiritsa ntchito kasamalidwe kachitidwe monga Google Kubernetes Engine, imangolowa m'malo mwa node yakufa ndi yatsopano. Komabe, node yatsopanoyi idzakhala yopanda kanthu ndipo muyenera kukokera zotengera zanu zonse kuti iyambe kugwira ntchito. Ngati ntchito yokoka itenga nthawi yayitali, gulu lanu lidzagwira ntchito mochepera nthawi yonseyi.

Pali zochitika zambiri zomwe izi zitha kuchitika: kuwonjezera node yatsopano kumagulu, kukweza ma node, kapenanso kusinthira ku chidebe chatsopano kuti mutumizidwe. Chifukwa chake, kuchepetsa nthawi yochotsa kukoka kumakhala chinthu chofunikira kwambiri. Ndizosatsutsika kuti chidebe chaching'ono chimatsitsa mwachangu kwambiri kuposa chachikulu. Ngati mukuyendetsa zotengera zingapo mugulu la Kubernetes, kupulumutsa nthawi kumatha kukhala kofunikira.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Yang'anani kuyerekeza uku: kukoka ntchito pazitsulo zing'onozing'ono kumatenga nthawi yocheperapo 4-9, malingana ndi mphamvu ya makina, kusiyana ndi ntchito yomweyi pogwiritsa ntchito go:onbuild. Kugwiritsa ntchito zogawana, zithunzi zazing'ono zokhala ndi ziwiya zimafulumizitsa kwambiri nthawi ndi liwiro lomwe ma node atsopano a Kubernetes atha kutumizidwa ndikubwera pa intaneti.

Tiyeni tione nkhani ya chitetezo. Zotengera zing'onozing'ono zimaonedwa kuti ndizotetezeka kwambiri kuposa zazikulu chifukwa zimakhala ndi malo ocheperako. Ndi zoona? Chimodzi mwazinthu zothandiza kwambiri pa Google Container Registry ndikutha kusanthula zotengera zanu ngati zili pachiwopsezo. Miyezi ingapo yapitayo ndidapanga zotengera zonse za onbuild ndi multistage, ndiye tiyeni tiwone ngati pali zovuta zilizonse pamenepo.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Chotsatira chake ndi chodabwitsa: zofooka zapakatikati zitatu zokha zidapezeka mumtsuko wawung'ono, ndipo 3 yovuta komanso zovuta zina za 16 zidapezeka mu chidebe chachikulu. Ngati tiyang'ana zomwe zili mu chidebe chachikulu, tikhoza kuona kuti mavuto ambiri a chitetezo alibe chochita ndi ntchito yathu, koma amagwirizana ndi mapulogalamu omwe sitigwiritsa ntchito. Chifukwa chake anthu akamalankhula za malo akulu owukira, ndiye amatanthauza.

Kubernetes machitidwe abwino. Kupanga zotengera zazing'ono

Chotengeracho ndi chodziwikiratu: pangani zotengera zing'onozing'ono chifukwa zimapereka magwiridwe antchito enieni komanso chitetezo pamakina anu.

Kubernetes machitidwe abwino. Bungwe la Kubernetes lomwe lili ndi dzina

Zotsatsa zina πŸ™‚

Zikomo chifukwa chokhala nafe. Kodi mumakonda zolemba zathu? Mukufuna kuwona zambiri zosangalatsa? Tithandizeni potipatsa oda kapena kulimbikitsa anzathu, mtambo VPS kwa opanga kuchokera ku $ 4.99, ma analogi apadera a ma seva olowera, omwe adakupangirani inu: Chowonadi chonse chokhudza VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kuchokera $19 kapena momwe mungagawire seva? (ikupezeka ndi RAID1 ndi RAID10, mpaka 24 cores mpaka 40GB DDR4).

Dell R730xd 2x yotsika mtengo ku Equinix Tier IV data center ku Amsterdam? Pokhapokha 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kuchokera $199 ku Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kuchokera $99! Werengani za Momwe mungamangire Infrastructure Corp. kalasi pogwiritsa ntchito ma seva a Dell R730xd E5-2650 v4 ofunika ma euro 9000 pa khobiri?

Source: www.habr.com

Kuwonjezera ndemanga