Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Nhanho yekutanga yekuendesa kuKubernetes kuisa application yako mumudziyo. Mune ino nhevedzano, isu tichatarisa kuti iwe ungagadzira sei diki, rakachengeteka mudziyo mufananidzo.
Kutenda kuDocker, kugadzira mifananidzo yemidziyo haina kumbobvira yave nyore. Taura mufananidzo wepasi, wedzera shanduko dzako, uye gadzira mudziyo.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Nepo nzira iyi yakanakira kutanga, kushandisa default base mifananidzo kunogona kutungamirira kubasa risina kuchengeteka nemifananidzo mikuru izere nekusagadzikana.

Pamusoro pezvo, mizhinji mifananidzo muDocker inoshandisa Debian kana Ubuntu yemufananidzo wepasi, uye nepo izvi zvichipa kugarisana kwakanaka uye nyore kugadzirisa (Docker faira rinongotora mitsara miviri yekodhi), mifananidzo yepasi inogona kuwedzera mazana emamegabytes ekuwedzera mutoro kumudziyo wako. Semuyenzaniso, irinyore node.js faira reGo "hello-world" application inosvika mazana manomwe emegabytes, nepo application yako chaiyo ingori mashoma emamegabytes muhukuru.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Saka zvese izvi zvekuwedzera basa kutambisa nzvimbo yedhijitari uye inzvimbo huru yekuvanda yekusagadzikana kwekuchengetedza uye tsikidzi. Saka ngatitarisei nzira mbiri dzekudzikisa saizi yemufananidzo wemudziyo.

Yekutanga ndeyekushandiswa kwemifananidzo midiki yepasi, yechipiri ndeyekushandiswa kweVavaki Patani. Kushandisa madiki base mifananidzo ingangove ndiyo nzira iri nyore yekudzikisa saizi yemudziyo wako. Zvingangoitika, mutauro kana staki yauri kushandisa inopa mufananidzo wepakutanga wekushandisa uyo mudiki pane iwo wakagara uripo. Ngatitarisei pane yedu node.js mudziyo.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Nekumisikidza muDocker, iyo node: 8 base yemufananidzo saizi i670 MB, uye node: 8-alpine saizi yemufananidzo i65 MB chete, ndiko kuti, kagumi kadiki. Nekushandisa iyo diki yeAlpine base mufananidzo, iwe unozodzikisa zvakanyanya saizi yemudziyo wako. Alpine idiki uye isina huremu Linux kugovera iyo inonyanya kufarirwa pakati pevashandisi veDocker nekuti inoenderana neakawanda maapplication uchichengeta midziyo midiki. Kusiyana neyakajairwa Docker "node" mufananidzo, "node: alpine" inobvisa akawanda mafaera esevhisi uye zvirongwa, ichisiya chete izvo zvinokwana kumhanyisa application yako.

Kuti uende kumufananidzo mudiki, ingo gadziridza iyo Dockerfile kuti utange kushanda neiyo itsva base image:

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Zvino, kusiyana neiyo yekare onbuild mufananidzo, unofanirwa kukopa kodhi yako mumudziyo uye nekuisa chero zvinotsamira. Mune Dockerfile nyowani, mudziyo unotanga ne node: alpine mufananidzo, wobva wagadzira dhairekitori rekodhi, inoisa zvinotsamira uchishandisa NPM package maneja, uye pakupedzisira inomhanya server.js.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Kukwidziridzwa uku kunoguma mumudziyo une diki zvakapetwa ka10 muhukuru. Kana mutauro wako wepurogiramu kana stack isina basa rekudzikisa mufananidzo, shandisa Alpine Linux. Ichapawo kugona kugadzirisa zvizere zviri mukati memudziyo. Kushandisa madiki base mifananidzo inzira yakanaka yekukurumidza kugadzira midziyo midiki. Asi kunyange kudzikisira kwakanyanya kunogona kuwanikwa uchishandisa iyo Builder Pattern.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Mumitauro inoturikirwa, kodhi yemabviro inotanga kupfuudzwa kumuturikiri yobva yaitwa zvakananga. Mumitauro yakaunganidzwa, iyo kodhi kodhi inotanga kushandurwa kuita yakaunganidzwa kodhi. Nekudaro, kuunganidza kunowanzo shandisa maturusi asiri kunyatsodiwa kumhanyisa kodhi. Izvi zvinoreva kuti unogona kubvisa zvachose zvishandiso izvi kubva mumudziyo wekupedzisira. Iwe unogona kushandisa Builder Pattern yeizvi.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Iyo kodhi inogadzirwa mumudziyo wekutanga uye inounganidzwa. Iyo kodhi yakabatanidzwa inozoiswa mumudziyo wekupedzisira pasina ma compiler uye maturusi anodiwa kuunganidza iyo kodhi. Ngatimhanyei Go application kuburikidza nemaitiro aya. Kutanga, isu tichasimuka kubva paiyo onbuild mufananidzo kuenda kuAlpine Linux.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

MuDockerfile nyowani, mudziyo unotanga negolang:alpine mufananidzo. Inobva yagadzira dhairekitori yekodhi, inoikopa mune kodhi kodhi, inovaka iyo sosi kodhi, uye inomhanyisa application. Chigaba ichi idiki pane chigaba chekuvaka, asi chichiri chine muunganidzi uye mamwe maturusi eGo izvo zvatisingade chaizvo. Saka ngatingobvisai chirongwa chakaunganidzwa tochiisa mugaba rayo.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Unogona kuona chimwe chinhu chinoshamisa mune iyi Docker faira: ine maviri KUBVA mitsetse. Yekutanga 4 mutsara chikamu chinotaridzika chaizvo chakafanana neyakapfuura Dockerfile kunze kwekuti inoshandisa iyo AS kiyi yekutumidza nhanho iyi. Chikamu chinotevera chine mutsva KUBVA mutsara kuti utange chifananidzo chitsva, apo panzvimbo yegolang: alpine image tichashandisa Raw alpine semufananidzo wekutanga.

Raw Alpine Linux haina chero zvitupa zveSSL zvakaiswa, izvo zvinozoita kuti akawanda API mafoni pamusoro peHTTPS atadze, saka ngatiise mamwe midzi CA zvitupa.

Ikozvino kunouya chikamu chinonakidza: kukopa iyo yakaunganidzwa kodhi kubva kune yekutanga mudziyo kuenda kune yechipiri, unogona kungoshandisa iyo COPY murairo uri pamutsetse 5 wechikamu chechipiri. Inongotevedzera faira rimwe chete rekushandisa uye haizokanganisa Go utility maturusi. Iyo itsva multi-stage Docker faira ichange iine mufananidzo wemudziyo unongova 12 megabytes muhukuru, zvichienzaniswa neiyo yekutanga mudziyo mufananidzo wanga uri 700 megabytes, uri musiyano mukuru!
Saka kushandisa zvidiki zvigadziko mifananidzo uye Muvaki Pateni inzira huru dzekugadzira midziyo midiki isina basa rakawanda.
Zvinogoneka kuti zvichienderana nestack yekushandisa, kune dzimwe nzira dzekudzikisa mufananidzo uye saizi yemidziyo, asi midziyo midiki ine bhenefiti inoyerwa here? Ngatitarisei nzvimbo mbiri idzo midziyo midiki inoshanda zvakanyanya - kuita nekuchengetedzeka.

Kuti uongorore kuwedzera kwekuita, funga nguva yekugadzira chigadziko, kuchiisa mu registry (push), uye wozochitora kubva ipapo (dhonza). Iwe unogona kuona kuti chigaba chidiki chine mukana wakasiyana pane chigaba chikuru.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Docker inozochengeta maseru kuitira kuti inotevera kuvaka ichave yakakurumidza. Nekudaro, mazhinji masisitimu eCI anoshandiswa kuvaka uye kuyedza midziyo haichengetedzi maseru, saka kune yakakosha nguva yekuchengetedza. Sezvaunogona kuona, nguva yekuvaka chigadziko chikuru, zvichienderana nesimba remuchina wako, kubva pa34 kusvika ku54 seconds, uye kana uchishandisa mudziyo wakaderedzwa uchishandisa Builder Pattern - kubva pa23 kusvika ku28 seconds. Nekushanda kwemhando iyi, kuwedzera kwezvibereko kuchava 40-50%. Saka ingofunga nezvekuti kangani iwe unovaka uye kuyedza kodhi yako.

Mushure mekunge mudziyo wavakwa, unofanirwa kusundidzira mufananidzo waro (push mudziyo mufananidzo) murejista yemidziyo kuitira kuti ugozoishandisa muboka rako reKubernetes. Ini ndinokurudzira kushandisa Google Container Registry.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

NeGoogle Container Registry (GCR), iwe unongobhadhara chete chengetedzo yakasvibira uye networking, uye hapana imwe mari yekuwedzera dhizaini. Ndeyakavanzika, yakachengeteka uye inokurumidza zvikuru. GCR inoshandisa akawanda manomano kukurumidza kudhonza mashandiro. Sezvauri kuona, kuisa Docker Container Image mudziyo uchishandisa go:onbuild kunotora kubva pamasekondi gumi nemashanu kusvika makumi mana nemasere, zvichienderana nekuita kwekombuta, uye kushanda kwakafanana nemudziyo diki kunotora kubva pamasekondi gumi nemana kusvika gumi nematanhatu, uye kumichina isingaite kugadzira. iyo mukana mukumhanyisa kumhanya inowedzera ne15 nguva. Pamichina mikuru, nguva inenge yakafanana, sezvo GCR inoshandisa cache yepasi rose kune yakagovaniswa dhatabhesi yemifananidzo, zvichireva kuti haufanirwe kuaisa zvachose. Mukombuta-yakaderera-simba, iyo CPU ndiyo bhodhoro, saka mukana wekushandisa midziyo midiki yakakura kwazvo pano.

Kana uri kushandisa GCR, ini ndinokurudzira zvikuru kushandisa Google Container Builder (GCB) sechikamu chekuvaka system yako.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Sezvauri kuona, mashandisiro ayo anotendera iwe kuti uwane mhedzisiro iri nani mukudzikisa nguva yeBuild + Push mashandiro kupfuura kunyange muchina unogadzirwa - mune iyi kesi, maitiro ekuvaka uye kutumira midziyo kune anotambira anokwidziridzwa nekanenge ka2. . Uyezve, iwe unowana 120 emahara ekuvaka maminetsi zuva rega rega, iyo inovhara yako yemidziyo yekuvaka inoda muzviitiko zvakawanda.

Inotevera inouya yakakosha metric yekuita - kumhanya kwekutora, kana kurodha, Dhonza midziyo. Uye kana iwe usina hanya nezvakawanda nezve nguva yakashandiswa pakusundidzira, ipapo kureba kweiyo nzira yekudhonza kune yakakomba kukanganisa kwese kuita system. Ngatiti iwe une sumbu remanodhi matatu uye imwe yacho inokundikana. Kana iwe uri kushandisa manejimendi senge Google Kubernetes Injini, inongotsiva iyo yakafa node neitsva. Nekudaro, iyi node nyowani ichave isina zvachose uye uchafanirwa kukwevera midziyo yako yese mairi kuti itange kushanda. Kana basa rekudhonza richitora nguva yakareba zvakakwana, cluster yako inomhanya pakuita yakaderera nguva yese.

Pane zvakawanda zviitiko apo izvi zvinogona kuitika: kuwedzera node nyowani kune cluster, kusimudzira node, kana kutochinja kune mudziyo mutsva wekutumirwa. Saka, kuderedza kudhonza nguva yekudhonza kunova chinhu chakakosha. Hazvirambike kuti mudziyo diki unorodha nekukurumidza kupfuura hombe. Kana iwe uchimhanyisa akawanda midziyo muKubernetes cluster, iyo nguva yekuchengetedza inogona kuve yakakosha.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Tarisa uone kuenzanisa uku: basa rekudhonza pamidziyo midiki inotora 4-9 nguva shoma, zvichienderana nesimba remuchina, pane kumwechete kushanda uchishandisa go: onbuild. Kushandisa yakagovaniswa, madiki egasi mapikicha anomhanyisa zvakanyanya nguva uye nekumhanyisa iyo itsva Kubernetes node inogona kuiswa uye kuuya online.

Ngatitarisei nyaya yekuchengeteka. Zvigaba zvidiki zvinonzi zvakachengeteka kudarika zvihombe nekuti zvine nzvimbo diki yekurwisa. Ndizvo chaizvo here? Imwe yeanonyanya kubatsira maficha eGoogle Container Registry ndiko kugona kuongorora otomatiki midziyo yako yekusagadzikana. Mwedzi mishoma yapfuura ndakagadzira zvese zviri pakuvaka uye multistage midziyo, saka ngationei kana paine kusasimba ipapo.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Mhedzisiro yacho inoshamisa: 3 chete hutachiona hwepakati hwakaonekwa mumudziyo diki, uye 16 yakakosha uye 376 humwe hurema hwakawanikwa mumudziyo mukuru. Kana tikatarisa zviri mukati memudziyo muhombe, tinogona kuona kuti mazhinji ematambudziko ekuchengetedza haana chekuita nekushandisa kwedu, asi ane hukama nemapurogiramu atisingatombo shandisa. Saka kana vanhu vachitaura nezvenzvimbo yakakura yekurwisa, ndizvo zvavanoreva.

Kubernetes maitiro akanaka. Kugadzira midziyo midiki

Iyo yekutora yakajeka: vaka midziyo midiki nekuti inopa chaiyo kuita uye kuchengetedza mabhenefiti kune yako system.

Kubernetes maitiro akanaka. Sangano reKubernetes rine namespace

Dzimwe ads πŸ™‚

Ndinokutendai nekugara nesu. Unoda zvinyorwa zvedu here? Unoda kuona zvimwe zvinonakidza zvemukati? Titsigire nekuisa odha kana kukurudzira kushamwari, Cloud VPS yevagadziri kubva kumadhora 4.99, yakasarudzika analogue yekupinda-level maseva, iyo yakagadzirwa nesu kuti iwe: Chokwadi chese nezveVPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kubva pamadhora makumi maviri kana kugovera sevha? (inowanikwa neRAID1 uye RAID10, kusvika ku24 cores uye kusvika ku40GB DDR4).

Dell R730xd 2 nguva yakachipa muEquinix Tier IV data center muAmsterdam? Chete pano 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kubva $199 muNetherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kubva pamadhora makumi mapfumbamwe nemapfumbamwe! Verenga nezve Nzira yekuvaka Infrastructure Corp. kirasi nekushandiswa kweDell R730xd E5-2650 v4 maseva anokosha 9000 euros penny?

Source: www.habr.com

Voeg