{"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\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","title":{"rendered":"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/21d8807ed791f0b9ff81494cf1a373c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvn\u00edm krokem nasazen\u00ed do Kubernetes je um\u00edst\u011bn\u00ed va\u0161\u00ed aplikace do kontejneru. V t\u00e9to s\u00e9rii se pod\u00edv\u00e1me, jak vytvo\u0159it obraz mal\u00e9ho a bezpe\u010dn\u00e9ho kontejneru.<br \/>\nD\u00edky Dockeru bylo vytv\u00e1\u0159en\u00ed obraz\u016f kontejner\u016f nikdy jednodu\u0161\u0161\u00ed. Uve\u010fte z\u00e1kladn\u00ed obraz, p\u0159idejte sv\u00e9 zm\u011bny a vytvo\u0159te kontejner.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/f144351cc82d46cf3f4a518c6e11faa3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI kdy\u017e je tento p\u0159\u00edstup skv\u011bl\u00fd pro za\u010d\u00e1tek, pou\u017e\u00edv\u00e1n\u00ed z\u00e1kladn\u00edch obraz\u016f ve v\u00fdchoz\u00edm nastaven\u00ed m\u016f\u017ee v\u00e9st k nebezpe\u010dn\u00e9mu pou\u017e\u00edv\u00e1n\u00ed velk\u00fdch obraz\u016f, pln\u00fdch zranitelnost\u00ed.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Nav\u00edc v\u011bt\u0161ina obraz\u016f v Dockeru pou\u017e\u00edv\u00e1 jako z\u00e1kladn\u00ed obraz Debian nebo Ubuntu, a a\u010dkoliv to zaji\u0161\u0165uje skv\u011blou kompatibilitu a snadnou adaptaci (soubor Docker obsahuje pouze dv\u011b \u0159\u00e1dky k\u00f3du), z\u00e1kladn\u00ed obrazy mohou p\u0159idat stovky megabajt\u016f dodate\u010dn\u00e9 z\u00e1t\u011b\u017ee do va\u0161eho kontejneru. Nap\u0159\u00edklad jednoduch\u00fd soubor aplikace node.js Go \u201ehello-world\u201c zab\u00edr\u00e1 p\u0159ibli\u017en\u011b 700 megabajt\u016f, p\u0159i\u010dem\u017e velikost samotn\u00e9 aplikace \u010din\u00ed pouze n\u011bkolik megabajt\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/8093421f0f0f61b9daedf8e9530bbd3e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCel\u00e1 tato dodate\u010dn\u00e1 z\u00e1t\u011b\u017e je zbyte\u010dn\u00e1 ztr\u00e1ta digit\u00e1ln\u00edho prostoru a skv\u011bl\u00fd \u00fakryt pro zranitelnosti a chyby v syst\u00e9mov\u00e9 bezpe\u010dnosti. Poj\u010fme se tedy pod\u00edvat na dva zp\u016fsoby, jak zmen\u0161it velikost obrazu kontejneru. <\/p>\n<p>Prvn\u00edm je pou\u017eit\u00ed z\u00e1kladn\u00edch obraz\u016f mal\u00e9 velikosti, druh\u00fdm je pou\u017eit\u00ed n\u00e1vrhov\u00e9ho vzoru Builder Pattern. Pou\u017eit\u00ed men\u0161\u00edch z\u00e1kladn\u00edch obraz\u016f je pravd\u011bpodobn\u011b nejjednodu\u0161\u0161\u00ed zp\u016fsob, jak sn\u00ed\u017eit velikost va\u0161eho kontejneru. Pravd\u011bpodobn\u011b pr\u00e1v\u011b jazyk nebo technologie, kterou pou\u017e\u00edv\u00e1te, poskytuj\u00ed p\u016fvodn\u00ed obraz aplikace mnohem men\u0161\u00ed velikosti, ne\u017e je obraz ve v\u00fdchoz\u00edm nastaven\u00ed. Pod\u00edvejme se na n\u00e1\u0161 kontejner node.js. <\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/df3f744a565465b56adcec6a1c32e501.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVe v\u00fdchoz\u00edm nastaven\u00ed m\u00e1 z\u00e1kladn\u00ed obraz node:8 velikost 670 MB, zat\u00edmco node:8-alpine m\u00e1 pouh\u00fdch 65 MB, co\u017e je desetkr\u00e1t m\u00e9n\u011b. Pou\u017eit\u00edm men\u0161\u00edho z\u00e1kladn\u00edho obrazu Alpine v\u00fdrazn\u011b zmen\u0161\u00edte velikost va\u0161eho kontejneru. Alpine je mal\u00e1 a lehk\u00e1 distribuce Linuxu, kter\u00e1 je mezi u\u017eivateli Dockeru velmi popul\u00e1rn\u00ed, proto\u017ee je kompatibiln\u00ed s mnoha aplikacemi a z\u00e1rove\u0148 zachov\u00e1v\u00e1 malou velikost kontejner\u016f. Na rozd\u00edl od standardn\u00edho obrazu Docker 'node' odstra\u0148uje 'node:alpine' \u0159adu syst\u00e9mov\u00fdch soubor\u016f a program\u016f, p\u0159i\u010dem\u017e ponech\u00e1v\u00e1 pouze to, co je 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 Dockerfile, abyste za\u010dali pou\u017e\u00edvat nov\u00fd z\u00e1kladn\u00ed obraz:<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" 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 s obrazem node:alpine, pot\u00e9 vytvo\u0159\u00ed adres\u00e1\u0159 pro k\u00f3d, nainstaluje z\u00e1vislosti pomoc\u00ed spr\u00e1vce bal\u00ed\u010dk\u016f NPM a nakonec spust\u00ed server.js.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" 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 velikosti desetkr\u00e1t men\u0161\u00ed. Pokud v\u00e1\u0161 programovac\u00ed jazyk nebo stack nem\u00e1 mo\u017enost sn\u00ed\u017een\u00ed z\u00e1kladn\u00edho obrazu, pou\u017eijte Alpine Linux. Ten tak\u00e9 poskytne mo\u017enost pln\u011b spravovat obsah kontejneru. Pou\u017eit\u00ed z\u00e1kladn\u00edch obraz\u016f s malou velikost\u00ed 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=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" 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 pot\u00e9 je vykon\u00e1n. V kompilovan\u00fdch jazyc\u00edch je zdrojov\u00fd k\u00f3d nejprve p\u0159eveden na zkompilovan\u00fd k\u00f3d. P\u0159i kompilaci \u010dasto pou\u017e\u00edv\u00e1me n\u00e1stroje, kter\u00e9 ve skute\u010dnosti nejsou pot\u0159ebn\u00e9 pro spu\u0161t\u011bn\u00ed k\u00f3du. To znamen\u00e1, \u017ee tyto n\u00e1stroje m\u016f\u017eete \u00fapln\u011b odstranit z fin\u00e1ln\u00edho kontejneru. K tomu lze pou\u017e\u00edt Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/9af4d11134c54cbdbd2b020cdf270429.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00f3d je vytvo\u0159en v prvn\u00edm kontejneru a zkompilov\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 t\u00edmto procesem proj\u00edt pomoc\u00ed aplikace Go. Nejprve p\u0159ejdeme z obrazu onbuild na Alpine Linux.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/822b67eb28f94c50e7a40af1fe1bfea2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNov\u00fd Docker soubor za\u010d\u00edn\u00e1 s obrazem golang:alpine. Pot\u00e9 vytvo\u0159\u00ed adres\u00e1\u0159 pro k\u00f3d, zkop\u00edruje do n\u011bj zdrojov\u00fd k\u00f3d, zkompiluje tento zdrojov\u00fd k\u00f3d a spust\u00ed aplikaci. Tento kontejner je mnohem men\u0161\u00ed ne\u017e kontejner onbuild, ale st\u00e1le obsahuje kompil\u00e1tor a dal\u0161\u00ed n\u00e1stroje Go, kter\u00e9 ve skute\u010dnosti nepot\u0159ebujeme. Tak\u017ee jednodu\u0161e vyextrahujeme zkompilovan\u00fd program a um\u00edst\u00edme ho do vlastn\u00edho kontejneru.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/094ac74a24cd723f83ddc34bee64e884.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u016f\u017eete si v\u0161imnout n\u011b\u010deho zvl\u00e1\u0161tn\u00edho v tomto Docker souboru: obsahuje dv\u011b \u0159\u00e1dky FROM. Prvn\u00ed sekce z 4 \u0159\u00e1dk\u016f vypad\u00e1 p\u0159esn\u011b tak jako p\u0159edchoz\u00ed Docker soubor, s t\u00edm rozd\u00edlem, \u017ee pou\u017e\u00edv\u00e1 kl\u00ed\u010dov\u00e9 slovo AS, aby pojmenovala tuto f\u00e1zi. V n\u00e1sleduj\u00edc\u00ed sekci je nov\u00e1 \u0159\u00e1dka FROM, kter\u00e1 umo\u017e\u0148uje za\u010d\u00edt nov\u00fd obraz, p\u0159i\u010dem\u017e m\u00edsto obrazu golang:alpine jako z\u00e1kladn\u00edho obrazu pou\u017eijeme Raw alpine.<\/p>\n<p>Raw Alpine Linux nem\u00e1 nainstalovan\u00e9 \u017e\u00e1dn\u00e9 SSL certifik\u00e1ty, co\u017e zp\u016fsob\u00ed selh\u00e1n\u00ed v\u011bt\u0161iny API vol\u00e1n\u00ed p\u0159es protokol HTTPS, tak\u017ee nainstalujeme n\u011bkolik ko\u0159enov\u00fdch certifik\u00e1t\u016f CA.<\/p>\n<p>A te\u010f to nejzaj\u00edmav\u011bj\u0161\u00ed: pro kop\u00edrov\u00e1n\u00ed zkompilovan\u00e9ho k\u00f3du z prvn\u00edho kontejneru do druh\u00e9ho m\u016f\u017eeme jednodu\u0161e pou\u017e\u00edt p\u0159\u00edkaz COPY um\u00edst\u011bn\u00fd v 5. \u0159\u00e1dku druh\u00e9 sekce. Zkop\u00edruje pouze jeden soubor aplikace a nezas\u00e1hne pomocn\u00e9 n\u00e1stroje Go. Nov\u00fd v\u00edcestup\u0148ov\u00fd Docker soubor bude obsahovat obraz kontejneru o velikosti pouh\u00fdch 12 megabajt\u016f, p\u0159i\u010dem\u017e p\u016fvodn\u00ed obraz kontejneru m\u011bl 700 megabajt\u016f, co\u017e je velk\u00fd rozd\u00edl!<br \/>\nPou\u017e\u00edv\u00e1n\u00ed mal\u00fdch z\u00e1kladn\u00edch obraz\u016f a Builder Pattern jsou skv\u00e9l\u00e9 zp\u016fsoby, jak vytv\u00e1\u0159et kontejnery mnohem men\u0161\u00edch velikost\u00ed bez velk\u00e9ho \u00fasil\u00ed.<br \/>\nJe mo\u017en\u00e9, \u017ee v z\u00e1vislosti na aplika\u010dn\u00edm stacku existuj\u00ed dal\u0161\u00ed zp\u016fsoby, jak zmen\u0161it velikost obrazu a kontejneru, ale maj\u00ed opravdu mal\u00e9 kontejnery m\u011b\u0159iteln\u00e9 v\u00fdhody? Pod\u00edvejme se na dva aspekty, kde jsou mal\u00e9 kontejnery extr\u00e9mn\u011b efektivn\u00ed \u2013 to jsou v\u00fdkonnost a bezpe\u010dnost.<\/p>\n<p>Aby ocenit n\u00e1r\u016fst v\u00fdkonu, pod\u00edvejme se na d\u00e9lku procesu vytv\u00e1\u0159en\u00ed kontejneru, jeho vlo\u017een\u00ed do registru (push) a n\u00e1sledn\u00e9 vyta\u017een\u00ed odtud (pull). M\u016f\u017eete vid\u011bt, \u017ee men\u0161\u00ed kontejner m\u00e1 nepopirateln\u00e9 v\u00fdhody oproti v\u011bt\u0161\u00edmu kontejneru.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/f48096cf875dbb34cb473f6296a2b601.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDocker bude ukl\u00e1dat vrstvy do cache, tak\u017ee dal\u0161\u00ed sestaven\u00ed budou prob\u00edhat velmi rychle. Nicm\u00e9n\u011b v mnoha CI syst\u00e9mech, kter\u00e9 se pou\u017e\u00edvaj\u00ed pro sestaven\u00ed a testov\u00e1n\u00ed kontejner\u016f, vrstvy nejsou cachov\u00e1ny, co\u017e p\u0159in\u00e1\u0161\u00ed v\u00fdraznou \u00fasporu \u010dasu. Jak vid\u00edte, doba sestaven\u00ed velk\u00e9ho kontejneru se v z\u00e1vislosti na v\u00fdkonu va\u0161eho stroje pohybuje od 34 do 54 sekund, zat\u00edmco p\u0159i pou\u017eit\u00ed kontejneru zmen\u0161en\u00e9ho pomoc\u00ed vzoru Builder je to od 23 do 28 sekund. Pro takov\u00e9 operace bude n\u00e1r\u016fst v\u00fdkonu \u010dinit 40-50%. P\u0159em\u00fd\u0161lejte tedy, kolikr\u00e1t sestavujete a testujete sv\u016fj k\u00f3d.<\/p>\n<p>Po dokon\u010den\u00ed konstrukce kontejneru mus\u00edte vlo\u017eit jeho obraz (push container image) do registra kontejner\u016f, abyste jej mohli pou\u017e\u00edt ve sv\u00e9m Kubernetes clusteru. Doporu\u010duji pou\u017e\u00edt Google Container Registry.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/4c5426248c1e1ec6b0a36579db56c725.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159i pou\u017eit\u00ed Google Container Registry (GCR) plat\u00edte pouze za \u201esyrov\u00e9\u201c \u00falo\u017ei\u0161t\u011b a s\u00ed\u0165, a dodate\u010dn\u00e9 poplatky za spr\u00e1vu kontejner\u016f nejsou vyb\u00edr\u00e1ny. Je to d\u016fv\u011brn\u00e9, bezpe\u010dn\u00e9 a velmi rychl\u00e9. GCR pou\u017e\u00edv\u00e1 mnoho trik\u016f ke zrychlen\u00ed operace pull. Jak vid\u00edte, vlo\u017een\u00ed obrazu kontejneru Docker Container Image p\u0159i pou\u017eit\u00ed go:onbuild, v z\u00e1vislosti na v\u00fdkonu po\u010d\u00edta\u010de, trv\u00e1 od 15 do 48 sekund, zat\u00edmco stejn\u00e1 operace s men\u0161\u00edm kontejnerem trv\u00e1 od 14 do 16 sekund, p\u0159i\u010dem\u017e pro m\u00e9n\u011b v\u00fdkonn\u00e9 stroje se v\u00fdhoda rychlosti operace zvy\u0161uje a\u017e trojn\u00e1sobn\u011b. Pro velk\u00e9 stroje je doba p\u0159ibli\u017en\u011b stejn\u00e1, proto\u017ee GCR pou\u017e\u00edv\u00e1 glob\u00e1ln\u00ed cache pro spole\u010dnou datab\u00e1zi obr\u00e1zk\u016f, tak\u017ee je nemus\u00edte stahovat v\u016fbec. V po\u010d\u00edta\u010di s n\u00edzk\u00fdm v\u00fdkonem je CPU \u00fazk\u00fdm m\u00edstem, tak\u017ee v\u00fdhoda pou\u017e\u00edv\u00e1n\u00ed mal\u00fdch kontejner\u016f je zde mnohem v\u00fdrazn\u011bj\u0161\u00ed.<\/p>\n<p>Pokud pou\u017e\u00edv\u00e1te GCR, d\u016frazn\u011b doporu\u010duji pou\u017e\u00edvat Google Container Builder (GCB) jako sou\u010d\u00e1st va\u0161eho syst\u00e9mu sestaven\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/cf97f8636dff16d5663225547bfb0701.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak vid\u00edte, jeho pou\u017eit\u00ed umo\u017e\u0148uje dos\u00e1hnout mnohem lep\u0161\u00edch v\u00fdsledk\u016f p\u0159i zkracov\u00e1n\u00ed doby operace Build+Push ne\u017e dokonce na v\u00fdkonn\u00e9 stanici \u2013 v tomto p\u0159\u00edpad\u011b se proces sestavov\u00e1n\u00ed a odes\u00edl\u00e1n\u00ed kontejner\u016f na host zrychluje t\u00e9m\u011b\u0159 dvakr\u00e1t. Nav\u00edc ka\u017ed\u00fd den z\u00edsk\u00e1te zdarma 120 minut sestavov\u00e1n\u00ed, co\u017e v\u011bt\u0161inou spl\u0148uje po\u017eadavky na vytv\u00e1\u0159en\u00ed kontejner\u016f. <\/p>\n<p>D\u00e1le se zam\u011b\u0159\u00edme na nejd\u016fle\u017eit\u011bj\u0161\u00ed metriku v\u00fdkonnosti \u2013 rychlost vyjmut\u00ed, nebo stahov\u00e1n\u00ed kontejner\u016f Pull. A pokud v\u00e1s p\u0159\u00edli\u0161 nezaj\u00edm\u00e1 \u010das, kter\u00fd je str\u00e1ven operac\u00ed push, tak doba procesu pull v\u00fdrazn\u011b ovliv\u0148uje celkov\u00fd v\u00fdkon syst\u00e9mu. P\u0159edstavte si, \u017ee m\u00e1te cluster se t\u0159emi uzly a jeden z nich sel\u017ee. Pokud pou\u017e\u00edv\u00e1te syst\u00e9m spr\u00e1vy, nap\u0159\u00edklad Google Kubernetes Engine, automaticky nahrad\u00ed nefunk\u010dn\u00ed uzel nov\u00fdm. Av\u0161ak tento nov\u00fd uzel bude \u00fapln\u011b pr\u00e1zdn\u00fd a budete muset do n\u011bj p\u0159en\u00e9st v\u0161echny va\u0161e kontejnery, aby za\u010dal fungovat. Pokud bude operace pull dostate\u010dn\u011b dlouh\u00e1, v\u00e1\u0161 cluster bude po celou tuto dobu pracovat s ni\u017e\u0161\u00edm v\u00fdkonem.<\/p>\n<p>Existuje mnoho p\u0159\u00edpad\u016f, kdy m\u016f\u017ee k takov\u00e9 situaci doj\u00edt: je to nap\u0159\u00edklad p\u0159id\u00e1n\u00ed nov\u00e9ho uzlu do clusteru, aktualizace uzl\u016f nebo i p\u0159epnut\u00ed na nov\u00fd kontejner pro nasazen\u00ed. Minim\u00e1ln\u00ed doba vyjmut\u00ed pull se tak st\u00e1v\u00e1 kl\u00ed\u010dov\u00fdm faktorem. Nepochybn\u011b je, \u017ee mal\u00fd kontejner se stahuje mnohem rychleji ne\u017e velk\u00fd. Pokud pou\u017e\u00edv\u00e1te n\u011bkolik kontejner\u016f v clusteru Kubernetes, \u00faspora \u010dasu m\u016f\u017ee b\u00fdt velmi v\u00fdznamn\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/fb0dacb37e9732fe2954323ee171a723.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPod\u00edvejte se na toto porovn\u00e1n\u00ed: operace pull p\u0159i pr\u00e1ci s mal\u00fdmi kontejnery trv\u00e1 4-9kr\u00e1t m\u00e9n\u011b \u010dasu v z\u00e1vislosti na v\u00fdkonu stroje, ne\u017e stejn\u00e1 operace p\u0159i pou\u017eit\u00ed go:onbuild. Pou\u017e\u00edv\u00e1n\u00ed sd\u00edlen\u00fdch z\u00e1kladn\u00edch obraz\u016f kontejner\u016f mal\u00e9ho form\u00e1tu v\u00fdrazn\u011b urychluje dobu a rychlost, s jakou mohou nov\u00e9 uzly Kubernetes b\u00fdt nasazeny a p\u0159ipojeny k internetu.<\/p>\n<p>Poj\u010fme se pod\u00edvat na ot\u00e1zku bezpe\u010dnosti. P\u0159edpokl\u00e1d\u00e1 se, \u017ee men\u0161\u00ed kontejnery jsou mnohem bezpe\u010dn\u011bj\u0161\u00ed ne\u017e velk\u00e9, proto\u017ee maj\u00ed men\u0161\u00ed \u00fato\u010dnou plochu. Je to opravdu pravda? Jednou z neju\u017eite\u010dn\u011bj\u0161\u00edch funkc\u00ed Google Container Registry je mo\u017enost automaticky skenovat va\u0161e kontejnery na zranitelnosti. P\u0159ed n\u011bkolika m\u011bs\u00edci jsem vytvo\u0159il jak onbuild, tak v\u00edcef\u00e1zov\u00e9 kontejnery, tak\u017ee se pod\u00edvejme, zda tam existuj\u00ed n\u011bjak\u00e1 zraniteln\u00e1 m\u00edsta. <\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/0ed3cd7bb8c8f5164e1115e9f1be39d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00fdsledek je ohromuj\u00edc\u00ed: v mal\u00e9m kontejneru byly nalezeny pouze 3 st\u0159edn\u00ed zranitelnosti, zat\u00edmco ve velk\u00e9m - 16 kritick\u00fdch a 376 dal\u0161\u00edch zranitelnost\u00ed. Pokud se pod\u00edv\u00e1me na obsah velk\u00e9ho kontejneru, je vid\u011bt, \u017ee v\u011bt\u0161ina bezpe\u010dnostn\u00edch probl\u00e9m\u016f nem\u00e1 nic spole\u010dn\u00e9ho s na\u0161\u00ed aplikac\u00ed, ale souvis\u00ed s programy, kter\u00e9 ani nepou\u017e\u00edv\u00e1me. Kdy\u017e lid\u00e9 hovo\u0159\u00ed o velk\u00e9 \u00fato\u010dn\u00e9 plo\u0161e, p\u0159esn\u011b t\u00edmto maj\u00ed na mysli. <\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/4a782f4a50153adc44042e9234357c02.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZ\u00e1v\u011br je jasn\u00fd: vytv\u00e1\u0159ejte mal\u00e9 kontejnery, proto\u017ee poskytuj\u00ed skute\u010dn\u00e9 v\u00fdhody v oblasti v\u00fdkonu a bezpe\u010dnosti va\u0161eho syst\u00e9mu. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">Nejlep\u0161\u00ed praktiky Kubernetes. Organizace Kubernetes pomoc\u00ed jmenn\u00e9ho prostoru<\/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=\"P\u0159ehr\u00e1t 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>Mal\u00e1 reklama \ud83d\ude42<\/h3>\n<p>\nD\u011bkujeme, \u017ee s n\u00e1mi z\u016fst\u00e1v\u00e1te. L\u00edb\u00ed se v\u00e1m na\u0161e \u010dl\u00e1nky? Chcete vid\u011bt v\u00edce zaj\u00edmav\u00fdch materi\u00e1l\u016f? Podpo\u0159te n\u00e1s objedn\u00e1vkou nebo doporu\u010den\u00edm zn\u00e1m\u00fdm, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">cloudov\u00e9 VPS pro v\u00fdvoj\u00e1\u0159e od 4,99 $<\/a><\/noindex>, <b>unik\u00e1tn\u00ed alternativa entry-level server\u016f, kterou jsme pro v\u00e1s vymysleli:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">V\u0161echny pravdy o VPS (KVM) E5-2697 v3 (6 jader) 10GB DDR4 480GB SSD 1Gbps od 19 $ nebo jak spr\u00e1vn\u011b rozd\u011blit server?<\/a><\/noindex> (k dispozici varianty s RAID1 a RAID10, a\u017e 24 jader a a\u017e 40GB DDR4).<\/p>\n<p><b>Dell R730xd je dvakr\u00e1t levn\u011bj\u0161\u00ed v datov\u00e9m centru Equinix Tier IV v Amsterdamu?<\/b> Jen 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 $<\/a><\/noindex> v Nizozemsku! <b>Dell R420 \u2014 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 od 99 $!<\/b><\/b> \u010ct\u011bte o tom <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Jak postavit infrastrukturu podnikov\u00e9 t\u0159\u00eddy s pou\u017eit\u00edm server\u016f Dell R730xd E5-2650 v4 v hodnot\u011b 9000 eur za pakatel?<\/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.3 - 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\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Nejlep\u0161\u00ed postupy pro Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/82244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=82244"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/82244\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/82245"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=82244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=82244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=82244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}