{"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\/hr\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","title":{"rendered":"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/21d8807ed791f0b9ff81494cf1a373c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvi korak implementacije u Kubernetesu je smje\u0161taj va\u0161e aplikacije u kontejner. U ovoj seriji \u0107emo razmotriti kako mo\u017eete stvoriti sliku malog i sigurnog kontejnera.<br \/>\nZahvaljuju\u0107i Dockeru, stvaranje slika kontejnera nikad nije bilo lak\u0161e. Odredite osnovnu sliku, dodajte svoje izmjene i stvorite kontejner.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/f144351cc82d46cf3f4a518c6e11faa3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIako je ova metoda izvrsna za po\u010detak, kori\u0161tenje osnovnih slika prema zadanim postavkama mo\u017ee dovesti do nesigurnog rada s velikim slikama punim ranjivosti.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Osim toga, ve\u0107ina slika u Dockeru koristi Debian ili Ubuntu kao osnovnu sliku, i iako to osigurava izvrsnu kompatibilnost i jednostavnu prilagodbu (Docker datoteka zahtijeva samo dvije linije koda), osnovne slike mogu dodati stotine megabajta dodatnog optere\u0107enja u va\u0161 kontejner. Na primjer, jednostavna datoteka node.js aplikacije Go \"hello-world\" zauzima oko 700 megabajta, dok je veli\u010dina same va\u0161e aplikacije svega nekoliko megabajta.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/8093421f0f0f61b9daedf8e9530bbd3e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDakle, sve to dodatno optere\u0107enje - prazna je potro\u0161nja digitalnog prostora i izvrstan skriveni prostor za ranjivosti i gre\u0161ke u sigurnosti sustava. Stoga, razmotrimo dva na\u010dina smanjenja veli\u010dine slike kontejnera. <\/p>\n<p>Prvi je kori\u0161tenje osnovnih slika male veli\u010dine, drugi je kori\u0161tenje obrazaca dizajna Builder Pattern. Kori\u0161tenje manjih osnovnih slika vjerojatno je najlak\u0161i na\u010din smanjenja veli\u010dine va\u0161eg kontejnera. Vjerojatno va\u0161 jezik ili tehnologija koju koristite nudi izvornu sliku aplikacije puno manjeg veli\u010dine od zadane slike. Pogledajmo na\u0161 kontejner node.js. <\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/df3f744a565465b56adcec6a1c32e501.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrema zadanim postavkama, veli\u010dina osnovne slike node:8 u Dockeru iznosi 670 MB, dok veli\u010dina node:8-alpine iznosi samo 65 MB, \u0161to je 10 puta manje. Koriste\u0107i manju osnovnu sliku Alpine, znatno smanjujete veli\u010dinu svog kontejnera. Alpine je mali i lagani Linux distribucija koja je vrlo popularna me\u0111u korisnicima Dockera jer je kompatibilna s mnogim aplikacijama, dok istovremeno odr\u017eava malu veli\u010dinu kontejnera. Za razliku od standardne Docker slike \"node\", \"node:alpine\" uklanja mnoge pomo\u0107ne datoteke i programe, ostavljaju\u0107i samo ono \u0161to je dovoljno za pokretanje va\u0161e aplikacije.<\/p>\n<p>Da biste pre\u0161li na manju osnovnu sliku, jednostavno a\u017eurirajte Docker datoteku kako biste zapo\u010deli rad s novom osnovnom slikom:<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/55a3b8e403bd34896018f92a81a3f251.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada, za razliku od stare slike onbuild, trebate kopirati svoj kod u kontejner i instalirati sve ovisnosti. U novoj Docker datoteci kontejner po\u010dinje s slikom node:alpine, zatim kreira katalog za kod, instalira ovisnosti pomo\u0107u upravitelja paketa NPM i naposljetku pokre\u0107e server.js.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/b41c36994fc18dc34fb970a38bc50c9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS ovom nadogradnjom dobivate kontejner 10 puta manje veli\u010dine. Ako va\u0161 programski jezik ili skup ne podr\u017eava smanjenje osnovne slike, koristite Alpine Linux. Tako\u0111er \u0107e omogu\u0107iti potpunu kontrolu nad sadr\u017eajem kontejnera. Kori\u0161tenje osnovnih slika male veli\u010dine izvrstan je na\u010din za brzo stvaranje malih kontejnera. No, jo\u0161 ve\u0107e smanjenje mo\u017ee se posti\u0107i kori\u0161tenjem Builder Patterna.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/c9549f5879058d9734c174e8571b9069.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU interpretiranim jezicima, izvorni kod prvo se proslje\u0111uje interpreteru, a zatim se izravno izvr\u0161ava. U kompiliranim jezicima, izvorni kod se prethodno pretvara u kompajlirani kod. Pri tome, kompilacija \u010desto koristi alate koji zapravo nisu potrebni za pokretanje koda. To zna\u010di da te alate mo\u017eete potpuno ukloniti iz kona\u010dnog kontejnera. Za to mo\u017eete koristiti Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/9af4d11134c54cbdbd2b020cdf270429.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKod se stvara u prvom kontejneru i kompajlira. Zatim se kompajlirani kod pakira u kona\u010dni kontejner bez kompajlera i alata potrebnih za kompilaciju tog koda. Pro\u0111imo kroz ovaj proces s Go aplikacijom. Prvo, prije\u0107i \u0107emo s slike onbuild na Alpine Linux.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/822b67eb28f94c50e7a40af1fe1bfea2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU novoj datoteci Docker kontejner zapo\u010dinje s imid\u017eom golang:alpine. Zatim stvara direktorij za kod, kopira izvorni kod u njega, gradi ovaj izvorni kod i pokre\u0107e aplikaciju. Ovaj kontejner je puno manji od onbuild kontejnera, ali jo\u0161 uvijek sadr\u017ei kompajler i druge Go alate koji nam zapravo nisu potrebni. Stoga, hajdemo jednostavno izvu\u0107i kompilirani program i smjestiti ga u na\u0161 vlastiti kontejner.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/094ac74a24cd723f83ddc34bee64e884.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMo\u017eda \u0107ete primijetiti ne\u0161to neobi\u010dno u ovoj Docker datoteci: ona sadr\u017ei dvije FROM linije. Prvi odjeljak od 4 linije izgleda to\u010dno onako kao i prethodna Docker datoteka, osim \u0161to koristi klju\u010dnu rije\u010d AS kako bi dao ime ovoj fazi. U sljede\u0107em odjeljku postoji nova FROM linija koja omogu\u0107ava zapo\u010dinjanje novog imid\u017ea, pri \u010demu umjesto imid\u017ea golang:alpine kao osnovnog imid\u017ea koristimo Raw alpine.<\/p>\n<p>Raw Alpine Linux nema instalirane SSL certifikate, \u0161to \u0107e uzrokovati neuspjeh ve\u0107ine API poziva putem HTTPS protokola, stoga hajdemo instalirati nekoliko korijenskih CA certifikata.<\/p>\n<p>A sada dolazi najsla\u0111i dio: za kopiranje kompileranog koda iz prvog kontejnera u drugi mo\u017eemo jednostavno koristiti COPY naredbu smje\u0161tenu u 5. liniji drugog odjeljka. Ona \u0107e kopirati samo jednu datoteku aplikacije i ne\u0107e dirati uslu\u017ene alate Go. Nova vi\u0161estupanjska Docker datoteka sadr\u017eavat \u0107e imid\u017e kontejnera veli\u010dine samo 12 megabajta, dok je izvorni imid\u017e kontejnera imao 700 megabajta, \u0161to je velika razlika!<br \/>\nDakle, kori\u0161tenje malih osnovnih imid\u017ea i Builder Pattern sjajni su na\u010dini za izradu kontejnera daleko manjih veli\u010dina bez previ\u0161e posla.<br \/>\nMogu\u0107e je da, ovisno o stogu aplikacije, postoje dodatni na\u010dini za smanjenje veli\u010dine imid\u017ea i kontejnera, ali imaju li stvarno mali kontejneri mjere prednosti? Pogledajmo dva aspekta gdje su mali kontejneri izuzetno u\u010dinkoviti \u2013 to su performanse i sigurnost.<\/p>\n<p>Kako bismo procijenili rast performansi, razmotrit \u0107emo trajanje procesa stvaranja kontejnera, njegovo umetanje u registry (push) i naknadno preuzimanje iz njega (pull). Mo\u017eete vidjeti da manji kontejner ima neospornu prednost u odnosu na ve\u0107i kontejner.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/f48096cf875dbb34cb473f6296a2b601.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDocker \u0107e\u7f13\u5b58irati slojeve, tako da \u0107e sljede\u0107e kompilacije biti vrlo brze. Me\u0111utim, u mnogim CI sustavima koji se koriste za izgradnju i testiranje kontejnera, slojevi se ne \u043a\u0435\u0448iraju, stoga ovdje postoji zna\u010dajna u\u0161teda vremena. Kao \u0161to mo\u017eete vidjeti, vrijeme izgradnje kontejnera velike veli\u010dine, ovisno o snazi va\u0161eg ra\u010dunala, iznosi od 34 do 54 sekunde, dok vrijeme za kori\u0161tenje kontejnera smanjenog pomo\u0107u Builder Pattern iznosi od 23 do 28 sekundi. Za operacije ovog tipa, pove\u0107anje performansi iznosit \u0107e 40-50%. Zbog toga se samo zapitajte koliko \u010desto stvarate i testirate svoj kod.<\/p>\n<p>Nakon \u0161to je kontejner izgra\u0111en, trebate umetnuti njegovu sliku (push container image) u registry kontejnera kako biste je koristili u svom Kubernetes klasteru. Preporu\u010dujem kori\u0161tenje Google Container Registry.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/4c5426248c1e1ec6b0a36579db56c725.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKori\u0161tenjem Google Container Registry (GCR), pla\u0107ate samo za \"sirovo\" skladi\u0161te i mre\u017eu, a dodatna naknada za upravljanje kontejnerima se ne napla\u0107uje. Ovo je povjerljivo, sigurno i vrlo brzo. GCR koristi mnoge trikove kako bi ubrzao operaciju pull. Kao \u0161to mo\u017eete vidjeti, umetanje slike kontejnera Docker Container Image prilikom kori\u0161tenja go:onbuild ovisno o performansama ra\u010dunala trajat \u0107e od 15 do 48 sekundi, dok \u0107e ista operacija s manjim kontejnerom trajati od 14 do 16 sekundi, pri \u010demu se za manje performansne strojeve prednost u brzini operacije pove\u0107ava tri puta. Na velikim strojevima vrijeme je otprilike isto, budu\u0107i da GCR koristi globalni cache za zajedni\u010dku bazu slika, tako da ih uop\u0107e ne morate u\u010ditati. Na ra\u010dunalima male snage CPU je usko grlo, stoga je prednost kori\u0161tenja malih kontejnera ovdje mnogo izra\u017eenija.<\/p>\n<p>Ako koristite GCR, toplo preporu\u010dujem upotrebu Google Container Builder (GCB) kao dijela va\u0161eg sustava izgradnje.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/cf97f8636dff16d5663225547bfb0701.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKao \u0161to vidite, njegovo kori\u0161tenje omogu\u0107ava postizanje znatno boljih rezultata u smanjenju trajanja Build+Push operacija, \u010dak i od produktivne ma\u0161ine \u2013 u ovom slu\u010daju, proces izgradnje i slanja kontejnera na host se skoro udvostru\u010duje. Dodatno, svaki dan dobivate 120 minuta besplatnog izgradnje, \u0161to u ve\u0107ini slu\u010dajeva zadovoljava potrebe za izradom kontejnera. <\/p>\n<p>Sljede\u0107a je najva\u017enija metrika performansi \u2013 brzina preuzimanja, ili Pull kontejnera. Ako vas ne brine previ\u0161e vrijeme potrebno za push operaciju, trajanje pull procesa ozbiljno utje\u010de na cjelokupnu u\u010dinkovitost sustava. Pretpostavimo da imate klaster od tri \u010dvora, a jedan od njih do\u017eivljava kvar. Ako koristite sustav upravljanja poput Google Kubernetes Engine, automatski \u0107e zamijeniti neispravan \u010dvor novim. Me\u0111utim, taj novi \u010dvor \u0107e biti potpuno prazan, i morat \u0107ete prebaciti sve va\u0161e kontejnera u njega da bi po\u010deo raditi. Ako pull operacija zauzme dovoljno dugo, va\u0161 klaster \u0107e cijelo to vrijeme raditi s smanjenom u\u010dinkovito\u0161\u0107u.<\/p>\n<p>Ima mnogo situacija u kojima se ovako ne\u0161to mo\u017ee dogoditi: dodavanje novog \u010dvora u klaster, a\u017euriranje \u010dvorova ili \u010dak prelazak na novi kontejner za implementaciju. Dakle, minimiziranje vremena preuzimanja postaje klju\u010dni faktor. Neosporno je da se mali kontejner preuzima mnogo br\u017ee od velikog. Ako koristite vi\u0161e kontejnera u Kubernetes klasteru, u\u0161teda vremena mo\u017ee biti vrlo zna\u010dajna.<\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/fb0dacb37e9732fe2954323ee171a723.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPogledajte usporedbu: pull operacija dok se radi s malim kontejnerima traje 4-9 puta manje vremena, ovisno o snazi ma\u0161ine, nego ista operacija s kori\u0161tenjem go:onbuild. Kori\u0161tenje zajedni\u010dkih osnovnih slika malih kontejnera zna\u010dajno ubrzava vrijeme i brzinu s kojom se novi Kubernetes \u010dvorovi mogu raspore\u0111ivati i povezivati s internetom.<\/p>\n<p>Razmotrimo pitanje sigurnosti. Smatra se da su manji kontejneri puno sigurniji od ve\u0107ih, jer imaju manju povr\u0161inu napada. Je li to zaista tako? Jedna od najkorisnijih funkcija Google Container Registry je mogu\u0107nost automatskog skeniranja va\u0161ih kontejnera radi ranjivosti. Prije nekoliko mjeseci napravio sam i onbuild i vi\u0161ekratne kontejner, pa pogledajmo ima li tu kakvih ranjivih mjesta. <\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/0ed3cd7bb8c8f5164e1115e9f1be39d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRezultat je impresivan: u malom kontejneru prona\u0111ene su samo 3 srednje ranjivosti, dok je u velikom 16 kriti\u010dnih i 376 drugih ranjivosti. Kada pogledate sadr\u017eaj velikog kontejnera, vidljivo je da ve\u0107ina problema sa sigurno\u0161\u0107u nema veze s na\u0161om aplikacijom, ve\u0107 je povezana s programima koje \u010dak ne koristimo. Zato kada ljudi govore o velikoj povr\u0161ini za napade, misle na to. <\/p>\n<p><img decoding=\"async\" alt=\"Najbolje prakse Kubernetes-a. Kreiranje malih kontejnera.\" src=\"\/wp-content\/uploads\/2020\/05\/4a782f4a50153adc44042e9234357c02.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZaklju\u010dak je jasan: kreirajte male kontejnera, jer donose stvarne prednosti u performansama i sigurnosti va\u0161eg sustava. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">Najbolje prakse Kubernetes-a. Organiziranje Kubernetes-a s prostorima imena.<\/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=\"Pogledajte 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>Malo reklame \ud83d\ude42<\/h3>\n<p>\nHvala \u0161to ostajete s nama. Svi\u0111a li vam se na\u0161e \u010dlanke? \u017delite li vidjeti vi\u0161e zanimljivih materijala? Podr\u017eite nas narud\u017ebom ili preporu\u010dite prijateljima, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">obla\u010dni VPS za developere od 4,99 $<\/a><\/noindex>, <b>jedinstveni analog entry-level servera koji smo razvili za vas:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Sva istina o VPS-u (KVM) E5-2697 v3 (6 jezgri) 10GB DDR4 480GB SSD 1Gbps od 19 $ ili kako pravilno dijeliti server?<\/a><\/noindex> (dostupne opcije s RAID1 i RAID10, do 24 jezgre i do 40GB DDR4).<\/p>\n<p><b>Dell R730xd je 2 puta jeftiniji u data centaru Equinix Tier IV u Amsterdamu?<\/b> Samo kod nas <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> u Nizozemskoj! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 od 99 $!<\/b><\/b> Pro\u010ditajte o tome <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Kako izgraditi infrastrukturu korporacijske klase koriste\u0107i Dell R730xd E5-2650 v4 servere po cijeni od 9000 eura za sitni\u0161?<\/a><\/noindex><br \/>\n<br \/>Izvor: <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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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\udd47Najbolje prakse Kubernetes. Kreiranje malih kontejnera | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/82244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=82244"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/82244\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/82245"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=82244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=82244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=82244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}