Arferion gorau Kubernetes. Creu cynwysyddion bach

Arferion gorau Kubernetes. Creu cynwysyddion bach

Y cam cyntaf o anfon i Kubernetes yw gosod eich cais mewn cynhwysydd. Yn y gyfres hon, byddwn yn edrych ar sut y gallwch chi greu delwedd cynhwysydd bach, diogel.
Diolch i Docker, ni fu erioed yn haws creu delweddau cynhwysydd. Nodwch ddelwedd sylfaenol, ychwanegwch eich newidiadau, a chreu cynhwysydd.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Er bod y dechneg hon yn wych ar gyfer cychwyn arni, gall defnyddio delweddau sylfaenol rhagosodedig arwain at waith anniogel gyda delweddau mawr sy'n llawn gwendidau.

Yn ogystal, mae'r rhan fwyaf o ddelweddau yn Docker yn defnyddio Debian neu Ubuntu ar gyfer y ddelwedd sylfaenol, ac er bod hyn yn darparu cydnawsedd rhagorol ac addasu hawdd (dim ond dwy linell o god y mae ffeil Docker yn ei gymryd), gall delweddau sylfaenol ychwanegu cannoedd o megabeit o lwyth ychwanegol i'ch cynhwysydd. Er enghraifft, mae ffeil nod.js syml ar gyfer rhaglen Go "helo-world" tua 700 megabeit, tra bod eich cais gwirioneddol ond ychydig megabeit o ran maint.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Felly mae'r holl lwyth gwaith ychwanegol hwn yn wastraff gofod digidol ac yn guddfan gwych ar gyfer gwendidau diogelwch a chwilod. Felly gadewch i ni edrych ar ddwy ffordd i leihau maint delwedd cynhwysydd.

Y cyntaf yw'r defnydd o ddelweddau sylfaen bach, yr ail yw'r defnydd o'r Patrwm Adeiladwr. Mae'n debyg mai defnyddio delweddau sylfaen llai yw'r ffordd hawsaf o leihau maint eich cynhwysydd. Yn fwyaf tebygol, mae'r iaith neu'r pentwr rydych chi'n ei ddefnyddio yn darparu delwedd cymhwysiad gwreiddiol sy'n llawer llai na'r ddelwedd ddiofyn. Gadewch i ni edrych ar ein cynhwysydd node.js.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Yn ddiofyn yn Docker, y nod: maint delwedd sylfaen 8 yw 670 MB, a'r nod: maint delwedd 8-alpaidd yw 65 MB yn unig, hynny yw, 10 gwaith yn llai. Trwy ddefnyddio'r ddelwedd sylfaen Alpaidd lai, byddwch yn lleihau maint eich cynhwysydd yn sylweddol. Mae Alpine yn ddosbarthiad Linux bach ac ysgafn sy'n boblogaidd iawn ymhlith defnyddwyr Docker oherwydd ei fod yn gydnaws Γ’ llawer o gymwysiadau wrth gadw cynwysyddion yn fach. Yn wahanol i ddelwedd "nod" safonol y Docker, mae "node:alpine" yn dileu llawer o ffeiliau a rhaglenni gwasanaeth, gan adael dim ond y rhai sy'n ddigonol i redeg eich cais.

I symud i ddelwedd sylfaen lai, diweddarwch y Dockerfile i ddechrau gweithio gyda'r ddelwedd sylfaenol newydd:

Arferion gorau Kubernetes. Creu cynwysyddion bach

Nawr, yn wahanol i'r hen ddelwedd onbuild, mae angen i chi gopΓ―o'ch cod i'r cynhwysydd a gosod unrhyw ddibyniaethau. Mewn Dockerfile newydd, mae'r cynhwysydd yn dechrau gyda nod: delwedd alpaidd, yna'n creu cyfeiriadur ar gyfer y cod, yn gosod dibyniaethau gan ddefnyddio rheolwr pecyn NPM, ac yn olaf yn rhedeg server.js.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Mae'r uwchraddiad hwn yn arwain at gynhwysydd sydd 10 gwaith yn llai o ran maint. Os nad oes gan eich iaith raglennu neu stac ymarferoldeb lleihau delwedd sylfaenol, defnyddiwch Alpine Linux. Bydd hefyd yn darparu'r gallu i reoli cynnwys y cynhwysydd yn llawn. Mae defnyddio delweddau sylfaen bach yn ffordd wych o greu cynwysyddion bach yn gyflym. Ond gellir cyflawni hyd yn oed mwy o ostyngiad trwy ddefnyddio'r Patrwm Adeiladwr.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Mewn ieithoedd dehongli, mae'r cod ffynhonnell yn cael ei drosglwyddo i'r cyfieithydd yn gyntaf ac yna'n cael ei weithredu'n uniongyrchol. Mewn ieithoedd a luniwyd, caiff y cod ffynhonnell ei drawsnewid yn god wedi'i lunio yn gyntaf. Fodd bynnag, mae crynhoad yn aml yn defnyddio offer nad oes eu hangen mewn gwirionedd i redeg y cod. Mae hyn yn golygu y gallwch chi dynnu'r offer hyn yn llwyr o'r cynhwysydd terfynol. Gallwch ddefnyddio Builder Pattern ar gyfer hyn.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Mae'r cod yn cael ei greu yn y cynhwysydd cyntaf a'i lunio. Yna caiff y cod a luniwyd ei becynnu i mewn i gynhwysydd terfynol heb y casglwyr a'r offer sydd eu hangen i lunio'r cod hwnnw. Gadewch i ni redeg cais Go drwy'r broses hon. Yn gyntaf, byddwn yn symud o'r ddelwedd onbuild i Alpine Linux.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Yn y Dockerfile newydd, mae'r cynhwysydd yn dechrau gyda delwedd golang:alpaidd. Yna mae'n creu cyfeiriadur ar gyfer y cod, yn ei gopΓ―o i'r cod ffynhonnell, yn adeiladu'r cod ffynhonnell hwnnw, ac yn rhedeg y rhaglen. Mae'r cynhwysydd hwn yn llawer llai na'r cynhwysydd onbuild, ond mae'n dal i gynnwys y casglwr ac offer Go eraill nad oes eu hangen arnom mewn gwirionedd. Felly gadewch i ni dynnu'r rhaglen a luniwyd a'i rhoi yn ei chynhwysydd ei hun.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Efallai y byddwch yn sylwi ar rywbeth rhyfedd yn y ffeil Docker hon: mae'n cynnwys dwy linell FROM. Mae'r adran 4 llinell gyntaf yn edrych yn union yr un fath Γ’'r Dockerfile blaenorol ac eithrio ei fod yn defnyddio'r allweddair AS i enwi'r cam hwn. Mae gan yr adran nesaf linell FROM newydd i ddechrau delwedd newydd, lle yn lle'r ddelwedd golang:alpaidd byddwn yn defnyddio Raw alpaidd fel y ddelwedd sylfaenol.

Nid oes gan Raw Alpine Linux unrhyw dystysgrifau SSL wedi'u gosod, a fydd yn achosi i'r rhan fwyaf o alwadau API dros HTTPS fethu, felly gadewch i ni osod rhai tystysgrifau gwraidd CA.

Nawr daw'r rhan hwyliog: i gopΓ―o'r cod a luniwyd o'r cynhwysydd cyntaf i'r ail, gallwch ddefnyddio'r gorchymyn COPY sydd wedi'i leoli ar linell 5 o'r ail adran. Dim ond un ffeil cais y bydd yn ei gopΓ―o ac ni fydd yn effeithio ar offer cyfleustodau Go. Bydd y ffeil Docker aml-gam newydd yn cynnwys delwedd cynhwysydd sydd ond yn 12 megabeit o ran maint, o'i gymharu Γ’ delwedd wreiddiol y cynhwysydd a oedd yn 700 megabeit, sy'n wahaniaeth mawr!
Felly mae defnyddio delweddau sylfaen bach a Phatrwm Adeiladwr yn ffyrdd gwych o greu cynwysyddion llawer llai heb lawer o waith.
Mae'n bosibl, yn dibynnu ar y pentwr cais, fod yna ffyrdd ychwanegol o leihau delwedd a maint y cynhwysydd, ond a oes gan gynwysyddion bach fudd mesuradwy mewn gwirionedd? Gadewch i ni edrych ar ddau faes lle mae cynwysyddion bach yn hynod effeithiol - perfformiad a diogelwch.

I werthuso'r cynnydd mewn perfformiad, ystyriwch hyd y broses o greu cynhwysydd, ei fewnosod yn y gofrestrfa (gwthio), ac yna ei adfer oddi yno (tynnu). Gallwch weld bod gan gynhwysydd llai fantais amlwg dros gynhwysydd mwy.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Bydd Docker yn storio'r haenau felly bydd adeiladu dilynol yn gyflym iawn. Fodd bynnag, nid yw llawer o systemau CI a ddefnyddir i adeiladu a phrofi cynwysyddion yn storio haenau, felly mae arbedion amser sylweddol. Fel y gwelwch, mae'r amser i adeiladu cynhwysydd mawr, yn dibynnu ar bΕ΅er eich peiriant, rhwng 34 a 54 eiliad, ac wrth ddefnyddio cynhwysydd wedi'i leihau gan ddefnyddio'r Patrwm Adeiladwr - o 23 i 28 eiliad. Ar gyfer gweithrediadau o'r math hwn, bydd y cynnydd mewn cynhyrchiant yn 40-50%. Felly meddyliwch sawl gwaith rydych chi'n adeiladu ac yn profi'ch cod.

Ar Γ΄l i'r cynhwysydd gael ei adeiladu, mae angen i chi wthio ei ddelwedd (gwthio delwedd cynhwysydd) i'r gofrestr cynhwysydd fel y gallwch chi wedyn ei ddefnyddio yn eich clwstwr Kubernetes. Rwy'n argymell defnyddio Cofrestrfa Cynhwysydd Google.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Gyda Chofrestrfa Cynhwysydd Google (GCR), dim ond am storio a rhwydweithio amrwd y byddwch chi'n talu, ac nid oes unrhyw ffioedd rheoli cynwysyddion ychwanegol. Mae'n breifat, yn ddiogel ac yn gyflym iawn. Mae GCR yn defnyddio llawer o driciau i gyflymu'r gweithrediad tynnu. Fel y gallwch weld, bydd mewnosod cynhwysydd Delwedd Cynhwysydd Docker gan ddefnyddio go:onbuild yn cymryd rhwng 15 a 48 eiliad, yn dibynnu ar berfformiad y cyfrifiadur, a bydd yr un llawdriniaeth Γ’ chynhwysydd llai yn cymryd rhwng 14 ac 16 eiliad, ac ar gyfer peiriannau llai cynhyrchiol mae'r fantais mewn cyflymder gweithredu yn cynyddu 3 gwaith. Ar gyfer peiriannau mwy, mae'r amser tua'r un peth, gan fod GCR yn defnyddio storfa fyd-eang ar gyfer cronfa ddata o ddelweddau a rennir, sy'n golygu nad oes angen i chi eu llwytho o gwbl. Mewn cyfrifiadur pΕ΅er isel, y CPU yw'r dagfa, felly mae'r fantais o ddefnyddio cynwysyddion bach yn llawer mwy yma.

Os ydych chi'n defnyddio GCR, rwy'n argymell yn fawr defnyddio Google Container Builder (GCB) fel rhan o'ch system adeiladu.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Fel y gallwch weld, mae ei ddefnydd yn caniatΓ‘u ichi gyflawni canlyniadau llawer gwell wrth leihau hyd y gweithrediad Build + Push na hyd yn oed peiriant cynhyrchiol - yn yr achos hwn, mae'r broses o adeiladu ac anfon cynwysyddion i'r gwesteiwr yn cael ei gyflymu bron i 2 waith. . Hefyd, rydych chi'n cael 120 munud adeiladu am ddim bob dydd, sy'n cynnwys eich anghenion adeiladu cynwysyddion yn y rhan fwyaf o achosion.

Nesaf daw'r metrig perfformiad pwysicaf - cyflymder adfer, neu lawrlwytho, cynwysyddion Tynnu. Ac os nad ydych chi'n poeni llawer am yr amser a dreulir ar weithrediad gwthio, yna mae hyd y broses dynnu yn cael effaith ddifrifol ar berfformiad cyffredinol y system. Gadewch i ni ddweud bod gennych chi glwstwr o dri nod ac mae un ohonyn nhw'n methu. Os ydych chi'n defnyddio system reoli fel Google Kubernetes Engine, bydd yn disodli'r nod marw yn awtomatig gydag un newydd. Fodd bynnag, bydd y nod newydd hwn yn hollol wag a bydd yn rhaid i chi lusgo'ch holl gynwysyddion i mewn iddo er mwyn iddo ddechrau gweithio. Os yw'r gweithrediad tynnu'n cymryd digon o amser, bydd eich clwstwr yn rhedeg ar berfformiad is trwy'r amser.

Mae yna lawer o achosion lle gall hyn ddigwydd: ychwanegu nod newydd at glwstwr, uwchraddio nodau, neu hyd yn oed newid i gynhwysydd newydd i'w ddefnyddio. Felly, mae lleihau amser echdynnu tynnu yn dod yn ffactor allweddol. Mae'n ddiymwad bod cynhwysydd bach yn llwytho i lawr yn gynt o lawer nag un mawr. Os ydych chi'n rhedeg cynwysyddion lluosog mewn clwstwr Kubernetes, gall yr arbedion amser fod yn sylweddol.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Edrychwch ar y gymhariaeth hon: mae gweithrediad tynnu ar gynwysyddion bach yn cymryd 4-9 gwaith yn llai o amser, yn dibynnu ar bΕ΅er y peiriant, na'r un llawdriniaeth gan ddefnyddio go:onbuild. Mae defnyddio delweddau sylfaen cynwysyddion bach a rennir yn cyflymu'n sylweddol yr amser a'r cyflymder y gellir defnyddio nodau Kubernetes newydd a dod ar-lein.

Gadewch i ni edrych ar y mater o ddiogelwch. Mae cynwysyddion llai yn cael eu hystyried yn llawer mwy diogel na rhai mwy oherwydd bod ganddyn nhw arwyneb ymosod llai. Ydy e mewn gwirionedd? Un o nodweddion mwyaf defnyddiol Google Container Registry yw'r gallu i sganio'ch cynwysyddion yn awtomatig am wendidau. Ychydig fisoedd yn Γ΄l fe wnes i greu cynwysyddion ar adeiladu ac aml-gam, felly gadewch i ni weld a oes unrhyw wendidau yno.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Mae'r canlyniad yn anhygoel: dim ond 3 bregusrwydd canolig a ganfuwyd mewn cynhwysydd bach, a darganfuwyd 16 bregusrwydd critigol a 376 o wendidau eraill mewn cynhwysydd mawr. Os edrychwn ar gynnwys cynhwysydd mawr, gallwn weld nad oes gan y rhan fwyaf o'r problemau diogelwch unrhyw beth i'w wneud Γ’'n cais, ond maent yn gysylltiedig Γ’ rhaglenni nad ydym hyd yn oed yn eu defnyddio. Felly pan fydd pobl yn siarad am arwyneb ymosodiad mawr, dyna maen nhw'n ei olygu.

Arferion gorau Kubernetes. Creu cynwysyddion bach

Mae'r siop tecawΓͺ yn glir: adeiladwch gynwysyddion bach oherwydd eu bod yn darparu buddion perfformiad a diogelwch gwirioneddol i'ch system.

Arferion gorau Kubernetes. Sefydliad Kubernetes gyda gofod enwau

Rhai hysbysebion πŸ™‚

Diolch am aros gyda ni. Ydych chi'n hoffi ein herthyglau? Eisiau gweld cynnwys mwy diddorol? Cefnogwch ni trwy osod archeb neu argymell i ffrindiau, cwmwl VPS i ddatblygwyr o $4.99, analog unigryw o weinyddion lefel mynediad, a ddyfeisiwyd gennym ni ar eich cyfer chi: Y gwir i gyd am VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps o $ 19 neu sut i rannu gweinydd? (ar gael gyda RAID1 a RAID10, hyd at 24 craidd a hyd at 40GB DDR4).

Dell R730xd 2 gwaith yn rhatach yng nghanolfan ddata Equinix Haen IV yn Amsterdam? Dim ond yma 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV o $199 yn yr Iseldiroedd! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - o $99! Darllenwch am Sut i adeiladu seilwaith Corp. dosbarth gyda'r defnydd o weinyddion Dell R730xd E5-2650 v4 gwerth 9000 ewro am geiniog?

Ffynhonnell: hab.com

Ychwanegu sylw