{"id":82244,"date":"2020-05-20T13:42:45","date_gmt":"2020-05-20T11:42:45","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov"},"modified":"2020-05-20T13:42:45","modified_gmt":"2020-05-20T11:42:45","slug":"luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","title":{"rendered":"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/21d8807ed791f0b9ff81494cf1a373c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrv\u00fdm krokom nasadenia v Kubernetes je umiestnenie va\u0161ej aplik\u00e1cie do kontajnera. V tejto s\u00e9rii sa pozrieme na to, ako mo\u017eno vytvori\u0165 obraz mal\u00e9ho a bezpe\u010dn\u00e9ho kontajnera.<br \/>\nV\u010faka Dockeru nebolo nikdy jednoduch\u0161ie vytvori\u0165 obrazy kontajnerov. Uve\u010fte z\u00e1kladn\u00fd obraz, pridajte svoje zmeny a vytvorte kontajner.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/f144351cc82d46cf3f4a518c6e11faa3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAj ke\u010f je tento pr\u00edstup skvel\u00fd na za\u010diatok, pou\u017e\u00edvanie z\u00e1kladn\u00fdch obrazov pod\u013ea predvolen\u00fdch nastaven\u00ed m\u00f4\u017ee vies\u0165 k nebezpe\u010dnej pr\u00e1ci s ve\u013ek\u00fdmi obrazmi pln\u00fdmi zranite\u013enost\u00ed.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Okrem toho v\u00e4\u010d\u0161ina obrazov v Dockeri pou\u017e\u00edva ako z\u00e1kladn\u00fd obraz Debian alebo Ubuntu, a hoci to zabezpe\u010duje v\u00fdborn\u00fa kompatibilitu a jednoduch\u00fa adapt\u00e1ciu (s\u00fabor Docker zaber\u00e1 len dve riadky k\u00f3du), z\u00e1kladn\u00e9 obrazy m\u00f4\u017eu prida\u0165 stovky megabajtov dodato\u010dnej z\u00e1\u0165a\u017ee do v\u00e1\u0161ho kontajnera. Napr\u00edklad jednoduch\u00fd s\u00fabor aplik\u00e1cie node.js Go \"hello-world\" zaber\u00e1 pribli\u017ene 700 megabajtov, pri\u010dom ve\u013ekos\u0165 va\u0161ej aplik\u00e1cie samotnej je len nieko\u013eko megabajtov.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/8093421f0f0f61b9daedf8e9530bbd3e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak\u017ee v\u0161etka t\u00e1to dodato\u010dn\u00e1 z\u00e1\u0165a\u017e je zbyto\u010dn\u00e9 plytvanie digit\u00e1lnym priestorom a skvel\u00e9 \u00fato\u010disko pre zranite\u013enosti a chyby v bezpe\u010dnostnom syst\u00e9me. Preto si pozrime dva sp\u00f4soby, ako zmen\u0161i\u0165 ve\u013ekos\u0165 obrazu kontajnera. <\/p>\n<p>Prv\u00fd sp\u00f4sob je pou\u017eitie z\u00e1kladn\u00fdch obrazov mal\u00fdch rozmerov, druh\u00fd sp\u00f4sob je pou\u017eitie n\u00e1vrhov\u00e9ho vzoru Builder Pattern. Pou\u017eitie men\u0161\u00edch z\u00e1kladn\u00fdch obrazov je pravdepodobne najjednoduch\u0161\u00ed sp\u00f4sob, ako zn\u00ed\u017ei\u0165 ve\u013ekos\u0165 v\u00e1\u0161ho kontajnera. Je pravdepodobn\u00e9, \u017ee v\u00e1\u0161 jazyk alebo technologick\u00fd stack, ktor\u00fd pou\u017e\u00edvate, poskytuje p\u00f4vodn\u00fd obraz aplik\u00e1cie ove\u013ea men\u0161\u00edch rozmerov ne\u017e predvolen\u00fd obraz. Po\u010fme sa pozrie\u0165 na n\u00e1\u0161 kontajner node.js. <\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/df3f744a565465b56adcec6a1c32e501.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPredvolene je velikost z\u00e1kladn\u00edho obrazu node:8 v Dockeru 670 MB a velikost node:8-alpine \u010din\u00ed pouze 65 MB, co\u017e je 10kr\u00e1t m\u00e9n\u011b. Pou\u017eit\u00edm men\u0161\u00edho z\u00e1kladn\u00edho obrazu Alpine v\u00fdrazn\u011b sn\u00ed\u017e\u00edte velikost sv\u00e9ho kontejneru. Alpine je mal\u00e1 a lehk\u00e1 distribuce Linuxu, kter\u00e1 je velmi obl\u00edben\u00e1 mezi u\u017eivateli Dockeru, proto\u017ee je kompatibiln\u00ed s mnoha aplikacemi p\u0159i zachov\u00e1n\u00ed mal\u00e9 velikosti kontejner\u016f. Na rozd\u00edl od standardn\u00edho obrazu Docker 'node' odstra\u0148uje 'node:alpine' \u0159adu soubor\u016f a program\u016f, \u010d\u00edm\u017e zanech\u00e1v\u00e1 pouze ty, kter\u00e9 jsou nezbytn\u00e9 pro spu\u0161t\u011bn\u00ed va\u0161\u00ed aplikace.<\/p>\n<p>Chcete-li p\u0159ej\u00edt na men\u0161\u00ed z\u00e1kladn\u00ed obraz, jednodu\u0161e aktualizujte sv\u016fj Dockerfile pro za\u010d\u00e1tek s nov\u00fdm z\u00e1kladn\u00edm obrazem:<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/55a3b8e403bd34896018f92a81a3f251.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNyn\u00ed, na rozd\u00edl od star\u00e9ho obrazu onbuild, mus\u00edte zkop\u00edrovat sv\u016fj k\u00f3d do kontejneru a nainstalovat v\u0161echny z\u00e1vislosti. V nov\u00e9m Dockerfile kontejner za\u010d\u00edn\u00e1 obrazem node:alpine, pot\u00e9 vytv\u00e1\u0159\u00ed adres\u00e1\u0159 pro k\u00f3d, instaluje z\u00e1vislosti pomoc\u00ed spr\u00e1vce bal\u00ed\u010dk\u016f NPM a nakonec spou\u0161t\u00ed server.js.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/b41c36994fc18dc34fb970a38bc50c9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nD\u00edky t\u00e9to aktualizaci z\u00edsk\u00e1te kontejner o 10kr\u00e1t men\u0161\u00ed velikosti. Pokud v\u00e1\u0161 programovac\u00ed jazyk nebo technologie nem\u00e1 funkci zmen\u0161en\u00ed z\u00e1kladn\u00edho obrazu, pou\u017eijte Alpine Linux. Ten tak\u00e9 poskytne mo\u017enost pln\u011b \u0159\u00eddit obsah kontejneru. Pou\u017eit\u00ed z\u00e1kladn\u00edch obraz\u016f mal\u00e9 velikosti je skv\u011bl\u00fd zp\u016fsob, jak rychle vytv\u00e1\u0159et mal\u00e9 kontejnery. Je v\u0161ak mo\u017en\u00e9 dos\u00e1hnout je\u0161t\u011b v\u011bt\u0161\u00edho zmen\u0161en\u00ed pomoc\u00ed Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/c9549f5879058d9734c174e8571b9069.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV interpretovan\u00fdch jazyc\u00edch je zdrojov\u00fd k\u00f3d nejprve p\u0159ed\u00e1n interpretu a a\u017e pot\u00e9 se p\u0159\u00edmo vykon\u00e1v\u00e1. V kompilovan\u00fdch jazyc\u00edch je zdrojov\u00fd k\u00f3d p\u0159edem p\u0159etvo\u0159en na zkompilovan\u00fd k\u00f3d. P\u0159itom kompilace \u010dasto pou\u017e\u00edv\u00e1 n\u00e1stroje, kter\u00e9 ve skute\u010dnosti nejsou pot\u0159eba pro spu\u0161t\u011bn\u00ed k\u00f3du. To znamen\u00e1, \u017ee tyto n\u00e1stroje m\u016f\u017eete z fin\u00e1ln\u00edho kontejneru pln\u011b odstranit. K tomu lze pou\u017e\u00edt Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/9af4d11134c54cbdbd2b020cdf270429.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00f3d je vytv\u00e1\u0159en v prvn\u00edm kontejneru a kompilov\u00e1n. Pot\u00e9 je zkompilovan\u00fd k\u00f3d zabalen do fin\u00e1ln\u00edho kontejneru bez kompil\u00e1tor\u016f a n\u00e1stroj\u016f pot\u0159ebn\u00fdch pro kompilaci tohoto k\u00f3du. Poj\u010fme touto procedurou proj\u00edt na p\u0159\u00edkladu aplikace Go. Nejprve p\u0159ejdeme od obrazu onbuild k Alpine Linux.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/822b67eb28f94c50e7a40af1fe1bfea2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNov\u00fd s\u00fabor Docker za\u010d\u00edna s obrazom golang:alpine. Potom vytvor\u00ed adres\u00e1r pre k\u00f3d, skop\u00edruje do\u0148 zdrojov\u00fd k\u00f3d, vytvor\u00ed tento zdrojov\u00fd k\u00f3d a spust\u00ed aplik\u00e1ciu. Tento kontajner je ove\u013ea men\u0161\u00ed ako kontajner onbuild, ale st\u00e1le obsahuje kompil\u00e1tor a \u010fal\u0161ie n\u00e1stroje Go, ktor\u00e9 vlastne nepotrebujeme. Preto jednoducho vytiahneme skompilovan\u00fd program a zabal\u00edme ho do vlastn\u00e9ho kontajnera.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/094ac74a24cd723f83ddc34bee64e884.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00f4\u017eete si v\u0161imn\u00fa\u0165 nie\u010do zvl\u00e1\u0161tne v tomto s\u00fabore Docker: obsahuje dve riadky FROM. Prv\u00e1 sekcia zo 4 riadkov vyzer\u00e1 presne tak isto ako predch\u00e1dzaj\u00faci s\u00fabor Docker s v\u00fdnimkou toho, \u017ee pou\u017e\u00edva k\u013e\u00fa\u010dov\u00e9 slovo AS, aby tomuto kroku priradil n\u00e1zov. V nasleduj\u00facej sekcii je nov\u00fd riadok FROM, ktor\u00fd n\u00e1m umo\u017e\u0148uje za\u010da\u0165 nov\u00fd obraz, pri\u010dom namiesto obrazu golang:alpine pou\u017eijeme Raw alpine ako z\u00e1kladn\u00fd obraz.<\/p>\n<p>Raw Alpine Linux nem\u00e1 nain\u0161talovan\u00e9 \u017eiadne SSL certifik\u00e1ty, \u010do sp\u00f4sob\u00ed zlyhanie v\u00e4\u010d\u0161iny API volan\u00ed cez protokol HTTPS, preto nain\u0161talujme nieko\u013eko kore\u0148ov\u00fdch certifik\u00e1tov CA.<\/p>\n<p>A teraz to najzauj\u00edmavej\u0161ie: na skop\u00edrovanie skompilovan\u00e9ho k\u00f3du z prv\u00e9ho kontajnera do druh\u00e9ho m\u00f4\u017eeme jednoducho pou\u017ei\u0165 pr\u00edkaz COPY, ktor\u00fd sa nach\u00e1dza v 5. riadku druhej sekcie. Ten skop\u00edruje len jedin\u00fd s\u00fabor aplik\u00e1cie a dotkne sa len ve\u013emi m\u00e1lo n\u00e1strojov Go. Nov\u00fd viacstup\u0148ov\u00fd s\u00fabor Docker bude ma\u0165 len 12 megabajtov, zatia\u013e \u010do p\u00f4vodn\u00fd obraz kontajnera bol 700 megabajtov, a to je ve\u013ek\u00fd rozdiel!<br \/>\nTak\u017ee pou\u017e\u00edvanie mal\u00fdch z\u00e1kladn\u00fdch obrazov a Builder Pattern je skvel\u00fd sp\u00f4sob, ako vytv\u00e1ra\u0165 kontajnery ove\u013ea men\u0161\u00edch rozmerov bez ve\u013ek\u00e9ho mno\u017estva pr\u00e1ce.<br \/>\nJe mo\u017en\u00e9, \u017ee v z\u00e1vislosti od aplik\u00e1cie existuj\u00fa \u010fal\u0161ie sp\u00f4soby, ako zmen\u0161i\u0165 ve\u013ekos\u0165 obrazu a kontajnera, ale maj\u00fa skuto\u010dne mal\u00e9 kontajnery merate\u013en\u00fa v\u00fdhodu? Pozrime sa na dva aspekty, kde s\u00fa mal\u00e9 kontajnery mimoriadne efekt\u00edvne \u2013 to s\u00fa v\u00fdkon a bezpe\u010dnos\u0165.<\/p>\n<p>Aby ste zhodnotili rast v\u00fdkonu, zv\u00e1\u017ete trvanie procesu vytv\u00e1rania kontajnera, jeho vlo\u017eenie do registra (push) a n\u00e1sledn\u00e9 s\u0165ahovanie z neho (pull). M\u00f4\u017eete vidie\u0165, \u017ee men\u0161\u00ed kontajner m\u00e1 nepopierate\u013en\u00fa v\u00fdhodu v porovnan\u00ed s v\u00e4\u010d\u0161\u00edm kontajnerom.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/f48096cf875dbb34cb473f6296a2b601.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDocker bude cachova\u0165 vrstvy, tak\u017ee nasleduj\u00face zostavy sa bud\u00fa vykon\u00e1va\u0165 ve\u013emi r\u00fdchlo. Av\u0161ak v mnoh\u00fdch CI syst\u00e9moch, ktor\u00e9 sa pou\u017e\u00edvaj\u00fa na zostavovanie a testovanie kontajnerov, sa vrstvy necacheuj\u00fa, tak\u017ee tu doch\u00e1dza k zna\u010dnej \u00faspore \u010dasu. Ako vid\u00edte, \u010das potrebn\u00fd na zostavenie ve\u013ek\u00e9ho kontajnera sa v z\u00e1vislosti od v\u00fdkonu va\u0161ej ma\u0161iny pohybuje medzi 34 a 54 sekundami, zatia\u013e \u010do pri pou\u017eit\u00ed kontajnera, ktor\u00fd bol zmen\u0161en\u00fd pomocou Builder Pattern, je to od 23 do 28 sek\u00fand. Pre oper\u00e1cie tohto druhu predstavuje n\u00e1rast v\u00fdkonu 40-50%. Tak\u017ee len premyslite, ko\u013ekokr\u00e1t vytv\u00e1rate a testujete svoj k\u00f3d.<\/p>\n<p>Po vytvoren\u00ed kontajnera je potrebn\u00e9 vlo\u017ei\u0165 jeho obraz (push container image) do registra kontajnerov, aby ste ho n\u00e1sledne mohli pou\u017ei\u0165 vo svojom Kubernetes klasteri. Odpor\u00fa\u010dam pou\u017ei\u0165 Google Container Registry.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/4c5426248c1e1ec6b0a36579db56c725.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPou\u017eit\u00edm Google Container Registry (GCR) plat\u00edte iba za \"surov\u00e9\" \u00falo\u017eisko a sie\u0165, pri\u010dom za spr\u00e1vu kontajnerov sa nevyberaj\u00fa dodato\u010dn\u00e9 poplatky. Je to d\u00f4vern\u00e9, bezpe\u010dn\u00e9 a ve\u013emi r\u00fdchle. GCR pou\u017e\u00edva mno\u017estvo trikov na ur\u00fdchlenie oper\u00e1cie pull. Ako vid\u00edte, vlo\u017eenie obrazu Docker kontajnera pri pou\u017eit\u00ed go:onbuild v z\u00e1vislosti od v\u00fdkonu po\u010d\u00edta\u010da trv\u00e1 od 15 do 48 sek\u00fand, a t\u00e1 ist\u00e1 oper\u00e1cia s men\u0161\u00edm kontajnerom trv\u00e1 od 14 do 16 sek\u00fand, pri\u010dom pre menej v\u00fdkonn\u00e9 stroje sa r\u00fdchlostn\u00fd benefit zvy\u0161uje a\u017e 3-n\u00e1sobne. Pre ve\u013ek\u00e9 stroje je \u010das pribli\u017ene rovnak\u00fd, preto\u017ee GCR pou\u017e\u00edva glob\u00e1lnu cache pre spolo\u010dn\u00fa datab\u00e1zu obr\u00e1zkov, tak\u017ee ich nemus\u00edte v\u00f4bec s\u0165ahova\u0165. Na po\u010d\u00edta\u010di s mal\u00fdm v\u00fdkonom je CPU \u00fazky \u010dl\u00e1nok, tak\u017ee v\u00fdhoda pou\u017e\u00edvania mal\u00fdch kontajnerov je tu ove\u013ea v\u00fdraznej\u0161ia.<\/p>\n<p>Ak pou\u017e\u00edvate GCR, d\u00f4razne odpor\u00fa\u010dam pou\u017ei\u0165 Google Container Builder (GCB) ako s\u00fa\u010das\u0165 v\u00e1\u0161ho syst\u00e9mu zostavovania.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/cf97f8636dff16d5663225547bfb0701.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAko vid\u00edte, jeho pou\u017e\u00edvanie umo\u017e\u0148uje dosiahnu\u0165 ove\u013ea lep\u0161ie v\u00fdsledky v skr\u00e1ten\u00ed doby oper\u00e1cie Build+Push, ne\u017e aj na v\u00fdkonnom stroji \u2013 v tomto pr\u00edpade sa proces zostavenia a odoslania kontajnerov na hostite\u013e ur\u00fdch\u013euje takmer o 100 percent. Okrem toho ka\u017ed\u00fd de\u0148 dost\u00e1vate 120 min\u00fat zostavenia zadarmo, \u010do vo v\u00e4\u010d\u0161ine pr\u00edpadov spl\u0148uje po\u017eiadavky na vytv\u00e1ranie kontajnerov. <\/p>\n<p>\u010ealej prich\u00e1dza najd\u00f4le\u017eitej\u0161ia metrika v\u00fdkonnosti \u2013 r\u00fdchlos\u0165 vy\u0165ahovania alebo s\u0165ahovania kontajnerov Pull. A ak v\u00e1s a\u017e tak netr\u00e1pi \u010das str\u00e1ven\u00fd oper\u00e1ciou push, trvanie procesu pull m\u00e1 v\u00e1\u017eny vplyv na celkov\u00fa v\u00fdkonnos\u0165 syst\u00e9mu. Predpokladajme, \u017ee m\u00e1te klaster z troch uzlov a jeden z nich zlyh\u00e1. Ak pou\u017e\u00edvate riadiaci syst\u00e9m, ako napr\u00edklad Google Kubernetes Engine, automaticky nahrad\u00ed nefunk\u010dn\u00fd uzol nov\u00fdm. Tento nov\u00fd uzol v\u0161ak bude \u00faplne pr\u00e1zdny a budete musie\u0165 prenies\u0165 v\u0161etky va\u0161e kontajnery, aby za\u010dal pracova\u0165. Ak bude oper\u00e1cia pull trva\u0165 dlh\u0161ie, v\u00e1\u0161 klaster bude pracova\u0165 s ni\u017e\u0161ou v\u00fdkonnos\u0165ou po cel\u00fd tento \u010das.<\/p>\n<p>Existuje mnoho pr\u00edpadov, kedy sa to m\u00f4\u017ee sta\u0165: pridanie nov\u00e9ho uzla do klastra, aktualiz\u00e1cia uzlov alebo dokonca prechod na nov\u00fd kontajner na nasadenie. Tak\u017ee minimaliz\u00e1cia doby vy\u0165ahovania pull sa st\u00e1va k\u013e\u00fa\u010dov\u00fdm faktorom. Nezvratne sa d\u00e1 poveda\u0165, \u017ee mal\u00fd kontajner sa s\u0165ahuje ove\u013ea r\u00fdchlej\u0161ie ne\u017e ve\u013ek\u00fd. Ak pou\u017e\u00edvate nieko\u013eko kontajnerov v klastri Kubernetes, \u00faspora \u010dasu m\u00f4\u017ee by\u0165 ve\u013emi v\u00fdznamn\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/fb0dacb37e9732fe2954323ee171a723.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPozrite sa na uveden\u00e9 porovnanie: oper\u00e1cia pull pri pr\u00e1ci s mal\u00fdmi kontajnermi trv\u00e1 od 4 do 9-kr\u00e1t menej \u010dasu v z\u00e1vislosti od v\u00fdkonu stroja, ne\u017e rovnak\u00e1 oper\u00e1cia s pou\u017eit\u00edm go:onbuild. Pou\u017e\u00edvanie spolo\u010dn\u00fdch z\u00e1kladn\u00fdch obrazov kontajnerov malej ve\u013ekosti v\u00fdrazne ur\u00fdch\u013euje \u010das a r\u00fdchlos\u0165, s ktorou m\u00f4\u017eu nov\u00e9 uzly Kubernetes nasadzova\u0165 a prenikn\u00fa\u0165 do internetu.<\/p>\n<p>Pozrime sa na ot\u00e1zku bezpe\u010dnosti. Pova\u017euje sa, \u017ee men\u0161ie kontejnery s\u00fa omnoho bezpe\u010dnej\u0161ie ako ve\u013ek\u00e9, preto\u017ee maj\u00fa men\u0161iu \u00fato\u010dn\u00fa plochu. Je to naozaj pravda? Jednou z naju\u017eito\u010dnej\u0161\u00edch funkci\u00ed Google Container Registry je mo\u017enos\u0165 automaticky skenova\u0165 va\u0161e kontajnery na zranite\u013enosti. Pred nieko\u013ek\u00fdmi mesiacmi som vytvoril ako onbuild, tak aj viacstup\u0148ov\u00e9 kontejnery, tak\u017ee sa pozrime, \u010di sa tam nach\u00e1dzaj\u00fa nejak\u00e9 zranite\u013enosti. <\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/0ed3cd7bb8c8f5164e1115e9f1be39d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00fdsledok je ohromuj\u00faci: v malom kontejnery bolo zisten\u00fdch iba 3 stredn\u00e9 zranite\u013enosti, zatia\u013e \u010do vo ve\u013ekom \u2014 16 kritick\u00fdch a 376 \u010fal\u0161\u00edch zranite\u013enost\u00ed. Ak sa pozrieme na obsah ve\u013ek\u00e9ho kontajnera, je zrejm\u00e9, \u017ee v\u00e4\u010d\u0161ina bezpe\u010dnostn\u00fdch probl\u00e9mov nem\u00e1 ni\u010d spolo\u010dn\u00e9 s na\u0161ou aplik\u00e1ciou, ale s\u00favis\u00ed s programami, ktor\u00e9 dokonca ani nepou\u017e\u00edvame. Preto, ke\u010f \u013eudia hovoria o ve\u013ekej \u00fato\u010dnej ploche, myslia t\u00fdmto smerom. <\/p>\n<p><img decoding=\"async\" alt=\"Najlep\u0161ie praktiky Kubernetes. Vytvorenie mal\u00fdch kontajnerov\" src=\"\/wp-content\/uploads\/2020\/05\/4a782f4a50153adc44042e9234357c02.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZ\u00e1ver je jasn\u00fd: vytv\u00e1rajte mal\u00e9 kontejnery, preto\u017ee prin\u00e1\u0161aj\u00fa re\u00e1lne v\u00fdhody v oblasti v\u00fdkonnosti a bezpe\u010dnosti v\u00e1\u0161ho syst\u00e9mu. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">Najlep\u0161ie praktiky Kubernetes. Organiz\u00e1cia Kubernetes s men\u0161\u00edm priestorom<\/a><\/noindex><\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"wGz_cbtCiEA\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/wGz_cbtCiEA\/hqdefault.jpg\" alt=\"Prehrajte video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Trochu reklamy \ud83d\ude42<\/h3>\n<p>\n\u010eakujeme, \u017ee ost\u00e1vate s nami. P\u00e1\u010dia sa v\u00e1m na\u0161e \u010dl\u00e1nky? Chcete vidie\u0165 viac zauj\u00edmav\u00fdch materi\u00e1lov? Podporte n\u00e1s, vytvoren\u00edm objedn\u00e1vky alebo odpor\u00fa\u010dan\u00edm zn\u00e1mym, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">cloud VPS pre v\u00fdvoj\u00e1rov od 4,99 dol\u00e1rov<\/a><\/noindex>, <b>unik\u00e1tny ekvivalent entry-level serverov, ktor\u00fd sme pre v\u00e1s vytvorili:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Cel\u00e1 pravda o VPS (KVM) E5-2697 v3 (6 jadier) 10GB DDR4 480GB SSD 1Gbps od 19 dol\u00e1rov alebo ako spr\u00e1vne rozdeli\u0165 server?<\/a><\/noindex> (k dispoz\u00edcii varianty s RAID1 a RAID10, a\u017e 24 jadier a a\u017e 40GB DDR4).<\/p>\n<p><b>Dell R730xd je dvakr\u00e1t lacnej\u0161\u00ed v d\u00e1tovom centre Equinix Tier IV v Amsterdame?<\/b> Len u n\u00e1s <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB od 199 dol\u00e1rov<\/a><\/noindex> v Holandsku! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 od 99 dol\u00e1rov!<\/b><\/b> Pre\u010d\u00edtajte si o tom <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Ako vybudova\u0165 infra\u0161trukt\u00faru korpor\u00e1tneho typu s pou\u017eit\u00edm serverov Dell R730xd E5-2650 v4 s cenou 9000 eur za zlomok ceny?<\/a><\/noindex><br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502052\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 Kubernetes \u2013 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Docker, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c. \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":82245,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-82244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-20T11:42:45+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-20T11:42:45+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Najlep\u0161ie praktiky Kubernetes. Vytv\u00e1ranie mal\u00fdch kontajnerov | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 | ProHoster","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-20T11:42:45+00:00","article:modified_time":"2020-05-20T11:42:45+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"82244","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:41:28","updated":"2022-09-28 11:52:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/82244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=82244"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/82244\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/82245"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=82244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=82244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=82244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}