{"id":81173,"date":"2020-05-11T13:42:51","date_gmt":"2020-05-11T11:42:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/production-ready-images-for-k8s"},"modified":"2020-05-11T13:42:51","modified_gmt":"2020-05-11T11:42:51","slug":"production-ready-images-for-k8s","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/production-ready-images-for-k8s","title":{"rendered":"Tootevalmis pildid k8s-ile","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>See lugu r\u00e4\u00e4gib sellest, kuidas kasutame konteinerite rakendusi tootmis\u00fcmbritsuse, eriti Kubernetes'i all. Artikkel on p\u00fchendatud m\u00f5\u00f5dikute ja logide kogumisele konteineritest ning piltide koostamisele.<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/c7e8df02d845138e489c09c55cd616e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMe oleme finansitehnoloogia ettev\u00f5te Exness, mis loob teenuseid veebikaubanduse ja finantsteaduste saavutamiseks B2B ja B2C valdkondades. Meie teadus- ja arendustegevuses on palju erinevaid meeskondi, arendusosakonnas \u00fcle 100 t\u00f6\u00f6taja.<\/p>\n<p>Esindame meeskonda, kes vastutab meie arendajate koodi kogumise ja k\u00e4itamise platvormi eest. T\u00e4psemalt vastutame m\u00f5\u00f5dikute, logide ja rakendustest p\u00e4rinevate s\u00fcndmuste kogumise, salvestamise ja esitamise eest. Praegu opereerime umbes kolme tuhande Docker-konteineriga tootmis\u00fcmbritsuses, toetame 50 TB suurust big data ladustamist ning pakume arhitektuurilisi lahendusi, mis p\u00f5hinevad meie infrastruktuuril: Kubernetes, Rancher ja erinevad avalikud pilveteenuse pakkujad.\u00a0<\/p>\n<h1>Meie motivatsioon<\/h1>\n<p>\nMis p\u00f5leb? Keegi ei oska vastata. Kus on tulekold? Seda on raske aru saada. Millal see s\u00fcttis? Selle v\u00e4ljaselgitamine on v\u00f5imalik, kuid mitte kohe.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/3ca2271caf1d02ba14937680cd89d65d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMiks m\u00f5ned konteinerid t\u00f5usevad, samas kui teised langevad? Milline konteiner on selle p\u00f5hjuseks? Kuigi konteinerite v\u00e4limus on sama, on iga\u00fches sees oma Neo.<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/f971583f21e363244f9ea754da2a1f4c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMeie arendajad on targa m\u00f5tlemisega. Nad loovad h\u00e4id teenuseid, mis toovad ettev\u00f5ttele kasumit. Kuid juhtuvad ka eba\u00f5nnestumised, kui rakenduste konteinerid l\u00e4hevad sassi. \u00dcks konteiner tarbib liiga palju CPU-d, teine - v\u00f5rku, kolmas - sisendi ja v\u00e4ljundi operatsioone, neljas ei selgu \u00fcldse, mis ta pistikute k\u00fclge teeb. K\u00f5ik see kukub kokku ja alus p\u00f5hjavette.\u00a0<\/p>\n<h1>Agenid<\/h1>\n<p>\nKuna tahame aru saada, mis toimub sees, otsustasime paigutada agendid otse konteineritesse.<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/cc9eb47d1250bb866ec9452181479df4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNeed agendid on piiravad programmid, mis hoiavad konteinerid olukorras, kus nad \u00fcksteist ei rikuks. Agendid on standardiseeritud, mis v\u00f5imaldab standardiseerida l\u00e4henemisviisi konteinerite hooldamisele.\u00a0<\/p>\n<p>Meie puhul peavad agendid esitama logisid standardses vormingus, m\u00e4rgistatuna ja trottlinguga. Samuti peavad nad esitama meile standardiseeritud m\u00f5\u00f5dikud, mis on \u00e4rirakenduste jaoks laiendatavad.<\/p>\n<p>Agente t\u00e4hendab ka utiliite, mis on m\u00f5eldud ekspluateerimiseks ja hooldamiseks ning suudavad t\u00f6\u00f6tada erinevates orkestreerimiss\u00fcsteemides, toetades erinevaid images (Debian, Alpine, Centos jne).<\/p>\n<p>L\u00f5puks peavad agendid toetama lihtsat CI\/CD-d, mis h\u00f5lmab Docker-failide kasutamist. Vastasel juhul laev laguneb, kuna konteinerid hakatakse tarnima \"k\u00f5veratel\" r\u00f6\u00f6bastel.<\/p>\n<h1>Kogumisprotsess ja siht-image struktuur<\/h1>\n<p>\nKuna k\u00f5ik peab olema standardiseeritud ja hallatav, on vajalik j\u00e4rgida m\u00f5nda standardset kogumisprotsessi. Seet\u00f5ttu otsustasime koguda konteinerid konteinerite abil \u2014 selline rekursioon.<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/708715af05bf79ce1eb9c2a8ce2aeca6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiin on konteinerid esitatud \u00fchtsete kontuuride kujul. Samuti otsustasime lisada neisse distributsioonid, et \"elu ei tunduks liiga magus\". Miks see tehti, selgitame allpool.<br \/>\n\u00a0<br \/>\nTulemusena saime t\u00f6\u00f6riista kogumiseks \u2014 kindla versiooniga konteineri, mis viitab kindlatele distrubutsiooniversioonidele ja kindlatele skriptiversioonidele.<\/p>\n<p>Kuidas me seda rakendame? Meil on Docker Hub, kus on konteiner. Me peegeldame selle oma s\u00fcsteemi, et v\u00e4ltida v\u00e4liseid s\u00f5ltuvusi. Tulemusena saame kollaseks m\u00e4rgistatud konteineri. Loome \u0161ablooni, et paigaldada konteinerisse k\u00f5ik vajalikud distributsioonid ja skriptid. P\u00e4rast seda kogume valmis kasutamiseks m\u00f5eldud pildi: arendajad panevad sinna oma koodi ja erilised s\u00f5ltuvused.\u00a0<\/p>\n<p>Miks on see l\u00e4henemine hea?\u00a0<\/p>\n<ul>\n<li>Esiteks, t\u00e4ielik versioonikontroll ehitusvahendite \u00fcle \u2013 ehituskonteiner, skriptide ja distributsioonide versioonid.\u00a0<\/li>\n<li>Teiseks, oleme saavutanud standardiseerimise: loome \u0161abloone, vahepealseid ja valmis kasutamiseks m\u00f5eldud pilte \u00fchtselt.\u00a0<\/li>\n<li>Kolmandaks, konteinerid tagavad meile kaasaskantavuse. T\u00e4na kasutame Gitlab'i, aga homme v\u00f5ime \u00fcle minna TeamCity'le v\u00f5i Jenkins'ile ning saame oma konteinerid sealgi k\u00e4ivitada.\u00a0<\/li>\n<li>Neljandaks, s\u00f5ltuvuste minimeerimine. Me ei pannud konteinerisse distributsioone juhuslikult, kuna see v\u00f5imaldab meil neid iga kord internetist alla laadida.\u00a0<\/li>\n<li>Viies, ehitamise kiirus on suurenenud \u2013 kohalike piltide olemasolu v\u00f5imaldab mitte kulutada aega allalaadimisele, kuna kohaliku pildi olemasolu.\u00a0<\/li>\n<\/ul>\n<p>\nTeisis\u00f5nu, oleme saavutanud kontrollitava ja paindliku ehitusprotsessi. Kasutame k\u00f5igi konteinerite ehitamiseks samu vahendeid koos t\u00e4ieliku versioonihaldusega.\u00a0<\/p>\n<h1>Kuidas meie ehitusprotseduur t\u00f6\u00f6tab<\/h1>\n<p>\n<img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/22b9a8546005e289f79962188dbb0659.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEhitamine k\u00e4ivitub \u00fche k\u00e4sklusega, protsess viiakse l\u00e4bi pildis (m\u00e4rgitud punasega). Arendajal on Docker-fail (m\u00e4rgitud kollasega), me renderdame selle, asendades muutuja v\u00e4\u00e4rtustega. Samal ajal lisame p\u00e4ise ja jaluse \u2013 need on meie agentid.\u00a0<\/p>\n<p>P\u00e4is lisab jaotised vastavatest piltidest. Jalus seadistab meie teenused, konfigureerib t\u00f6\u00f6koormuse, logimise ja teiste agentide k\u00e4ivitamise, asendab sisenemispunkti jne.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/4004e57dc45771479e535921a839716d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMe m\u00f5tlesime kaua, kas v\u00f5tta superviisor v\u00f5i mitte. L\u00f5puks otsustasime, et see on vajalik. Valisime S6. Superviisor haldab konteinerit: see v\u00f5imaldab p\u00e4\u00e4seda sellele juurde, kui p\u00f5hiprotsess kukub ning tagab k\u00e4sitsi haldamise konteinerit uuesti loomata. Logid ja metrika on protsessid, mis t\u00f6\u00f6tavad konteineri sees. Neid tuleb samuti kontrollida, ja me teeme seda superviisori abil. L\u00f5puks v\u00f5tab S6 enda alla koristust\u00f6\u00f6d, signaalide t\u00f6\u00f6tlemise ja muud \u00fclesanded.<\/p>\n<p>Kuna kasutame erinevaid orkestreerimiss\u00fcsteeme, peab konteiner p\u00e4rast ehitamist ja k\u00e4ivitamist m\u00f5istma, milles keskkonnas ta asub ja tegutsema vastavalt sellele. N\u00e4iteks:<br \/>\nSee v\u00f5imaldab meil luua \u00fche pildi ja k\u00e4ivitada selle erinevates orkestreerimiss\u00fcsteemides, kusjuures k\u00e4ivitamine toimub selle s\u00fcsteemi spetsiifikat arvesse v\u00f5ttes.<\/p>\n<p>\u00a0<img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/6e76396afedbbf0e71d44a7fbb8521da.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00dche ja sama konteineri jaoks saame Dockeris ja Kuberneteses erinevad protsessipuu.<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/83f9d23876192930ffebafcdd549915e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKasulik koormus t\u00f6\u00f6tab superviisor S6 all. Pange t\u00e4hele collectorit ja events'i \u2014 need on meie agendid, mis vastutavad logide ja metrika eest. Kuberneteses neid pole, kuid Dockeris on. Miks?\u00a0<\/p>\n<p>Kubernetesi podi spetsifikatsiooni vaatamisel m\u00e4rkame, et konteiner events k\u00e4ivitatakse podis, kus on eraldi konteiner collector, mis t\u00e4idab meetrikate ja logide kogumise funktsiooni. Saame kasutada Kubernetes'e v\u00f5imalusi: konteinerite k\u00e4ivitamine \u00fches podis, \u00fches protsessi- ja\/v\u00f5i v\u00f5rgu ruumis. Tegelikult saame oma agente juurutada ja teatud funktsioone t\u00e4ita. Ja kui sama konteiner k\u00e4ivitatakse Dockeri keskkonnas, saab ta k\u00f5ik need samad v\u00f5imed, st suudab logisid ja meetrikate edastada, kuna agendid on k\u00e4ivitatud siseselt.\u00a0<\/p>\n<h1>Metrikad ja logid<\/h1>\n<p>\nMetrikate ja logide edastamine on keeruline \u00fclesanne. Selle lahendamisega on seotud mitmeid aspekte.<br \/>\nInfrastruktuur luuakse kasuliku koormuse t\u00e4itmiseks, mitte logide massiliseks edastamiseks. Seega peaks see protsess toimuma minimaalsete n\u00f5udmistega konteinerite ressursside osas. P\u00fc\u00fcame aidata meie arendajatel: 'V\u00f5tke Docker Hub'i konteiner, k\u00e4ivitage see, ja me suudame logid edastada.'\u00a0<\/p>\n<p>Teine aspekt on logide mahtude piiramine. Kui mitmes konteineris tekib logide mahu t\u00f5us (rakendus ts\u00fcklis v\u00e4ljastab stack-trace), suureneb koormus CPU-le, sideteedele ja logide t\u00f6\u00f6tlemise s\u00fcsteemile, mis m\u00f5jutab k\u00f5igi hostitud konteinerite t\u00f6\u00f6kindlust, ning see v\u00f5ib p\u00f5hjustada hosti \"kukkumise\".\u00a0<\/p>\n<p>Kolmas aspekt on vajadus pakkuda v\u00f5imalikult palju meetodeid m\u00f5\u00f5dikute kogumiseks juba vaikimisi. See h\u00f5lmab failide lugemist ja Prometheuse l\u00f5pp-punktide k\u00fcsitlemist kuni rakendustele spetsiifiliste protokollide kasutamiseni.<\/p>\n<p>Ja viimane aspekt on kohustust v\u00e4hendada ressursikulu.<\/p>\n<p>Oleme valinud avatud l\u00e4htekoodiga lahenduse Go-s nimega Telegraf. See on universaalne konnektor, mis toetab \u00fcle 140 erinevat sisendkanalit (input plugins) ja 30 erinevat v\u00e4ljundit (output plugins). Oleme teinud sellele t\u00e4iendusi ja n\u00fc\u00fcd r\u00e4\u00e4gime, kuidas seda Kuberneteses kasutada.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/9635d571c852e5f9358458874c58d7b0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKujutage ette, et arendaja juurutab koormust ja Kubernetes saab p\u00e4ringu podi loomise jaoks. Sel hetkel luuakse automaatselt iga podi jaoks konteiner nimega Collector (kasutame mutation webhook'i). Collector on meie agent. K\u00e4ivitamisel seadistab see konteiner end t\u00f6\u00f6tama koos Prometheuse ja logide kogumise s\u00fcsteemiga.<\/p>\n<ul>\n<li>Selle jaoks kasutab ta podi annotatsioone ning olenevalt nende sisust loob n\u00e4iteks Prometheuse l\u00f5pppunkti (end-point);\u00a0\n<\/li>\n<li>Podi spetsifikatsiooni ja konteinerit eristavate seadete p\u00f5hjal otsustab ta, kuidas logisid edastada.\n<\/li>\n<\/ul>\n<p>\nLogisid kogume Docker API kaudu: arendajad peavad need lihtsalt stdout v\u00f5i stderr panema, ja edasi tegeleb Collector. Logid kogutakse chunk'idena teatud viivitusega, et v\u00e4ltida v\u00f5imalikke hosti \u00fclekoormusi.\u00a0<\/p>\n<p>Metoodikat kogutakse t\u00f6\u00f6koormuse (protsesside) eksemplaride j\u00e4rgi konteinerites. K\u00f5ik m\u00e4rgistatakse siltidega: namespace, pod jms, ja seej\u00e4rel konverteeritakse Prometheuse vormingusse \u2013 ja muutub kergesti kogutavaks (logide puhul v\u00e4lja arvatud). Samuti saadame logid, m\u00f5\u00f5dikud ja s\u00fcndmused Kafka kaudu edasi:<\/p>\n<ul>\n<li>Logid on saadaval Graylogis (visuaalse anal\u00fc\u00fcsi jaoks);\n<\/li>\n<li>Logid, m\u00f5\u00f5dikud ja s\u00fcndmused saadetakse Clickhouse'i pikaajaliseks s\u00e4ilitamiseks.\n<\/li>\n<\/ul>\n<p>\nSama t\u00f6\u00f6tab ka AWS-is, lihtsalt me asendame Graylogi Kafka ja Cloudwatchiga. Saadetakse logid sinna ja k\u00f5ik muutub v\u00e4ga mugavaks: kohe on arusaadav, kelle klastriga ja konteineriga need seotud on. Sama kehtib ka Google Stackdriveri kohta. Seega meie skeem t\u00f6\u00f6tab nii on-premise'i Kafka kui ka pilves.\u00a0<\/p>\n<p>Kui meil pole Kubernetes't koos podidega, siis skeem muutub veidi keerulisemaks, kuid t\u00f6\u00f6tab samade p\u00f5him\u00f5tete j\u00e4rgi.<\/p>\n<p><img decoding=\"async\" alt=\"Tootevalmis pildid k8s-ile\" src=\"\/wp-content\/uploads\/2020\/05\/dd8efb33c5c74433a2767cb00caeec2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKonteineri sees k\u00e4ivitatakse samad protsessid, neid orkestreeritakse S6 abil. K\u00f5ik samad protsessid on k\u00e4ivitatud \u00fches konteineris.<\/p>\n<h1>In conclusion,<\/h1>\n<p>\nOleme loonud tervikliku lahenduse piltide koostamiseks ja tootmisse k\u00e4ivitamiseks, koos logide ja m\u00f5\u00f5dikute kogumise ja edastamise valikutega:<\/p>\n<ul>\n<li>Oleme v\u00e4lja t\u00f6\u00f6tanud standardiseeritud l\u00e4henemise piltide koostamiseks, mille alusel oleme loonud CI-malle;\n<\/li>\n<li>Andmete kogumise agentideks on meie Telegrafi laiendused. Oleme neid h\u00e4sti testinud tootmises;\n<\/li>\n<li>Kasutame mutation webhook'i, et sisestada agente podidesse;\u00a0\n<\/li>\n<li>Oleme integreerunud Kubernetes\/Rancheri \u00f6kos\u00fcsteemi;\n<\/li>\n<li>Saame k\u00e4ivitada samu konteinerite erinevates orkestreerimiss\u00fcsteemides ja saavutada oodatud tulemuse;\n<\/li>\n<li>Loodi t\u00e4ielikult d\u00fcnaamiline konteinerite haldamise konfiguratsioon.\u00a0\n<\/li>\n<\/ul>\n<p>\nKaast\u00f6\u00f6line: <b>Ilja Prudnikov<\/b><br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/exness\/blog\/488392\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0441\u0431\u043e\u0440\u0443 \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043b\u043e\u0433\u043e\u0432 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u043b\u0434\u0443 \u043e\u0431\u0440\u0430\u0437\u043e\u0432. \u041c\u044b \u0438\u0437 \u0444\u0438\u043d\u0442\u0435\u0445-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Exness, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430 \u0438 \u0444\u0438\u043d\u0442\u0435\u0445-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f B2B \u0438 \u04122\u0421. \u0412 \u043d\u0430\u0448\u0435\u043c R&amp;D \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0432 \u043e\u0442\u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 100 + \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81173","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0441\u0431\u043e\u0440\u0443 \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043b\u043e\u0433\u043e\u0432 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u043b\u0434\u0443 \u043e\u0431\u0440\u0430\u0437\u043e\u0432. \u041c\u044b \u0438\u0437 \u0444\u0438\u043d\u0442\u0435\u0445-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Exness, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430 \u0438 \u0444\u0438\u043d\u0442\u0435\u0445-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f B2B \u0438 \u04122\u0421. \u0412 \u043d\u0430\u0448\u0435\u043c R&amp;D \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0432 \u043e\u0442\u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 100 + \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432.\" \/>\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\/et\/blog\/administrirovanie\/production-ready-images-for-k8s\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\udd47Production-ready images for k8s | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0441\u0431\u043e\u0440\u0443 \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043b\u043e\u0433\u043e\u0432 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u043b\u0434\u0443 \u043e\u0431\u0440\u0430\u0437\u043e\u0432. \u041c\u044b \u0438\u0437 \u0444\u0438\u043d\u0442\u0435\u0445-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Exness, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430 \u0438 \u0444\u0438\u043d\u0442\u0435\u0445-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f B2B \u0438 \u04122\u0421. \u0412 \u043d\u0430\u0448\u0435\u043c R&amp;D \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0432 \u043e\u0442\u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 100 + \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/production-ready-images-for-k8s\" \/>\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-11T11:42:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-11T11:42:51+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\udd47Tootmiseks valmis pildid k8s | ProHoster","description":"See lugu r\u00e4\u00e4gib sellest, kuidas me kasutame konteinerite rakendusi toodangu keskkonnas, eelk\u00f5ige Kuberneteses. Artikkel keskendub konteinerite andmete ja logide kogumisele ning piltide loomisele. Oleme finantstehnoloogia ettev\u00f5te Exness, mis arendab teenuseid online-kaubanduse ja B2B ning B2C finantstehnoloogia toodete jaoks. Meie R&amp;D-s on palju erinevaid meeskondi, arenduse osakonnas on \u00fcle 100 t\u00f6\u00f6taja.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/production-ready-images-for-k8s","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\udd47Production-ready images for k8s | ProHoster","og:description":"\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0441\u0431\u043e\u0440\u0443 \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043b\u043e\u0433\u043e\u0432 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u043b\u0434\u0443 \u043e\u0431\u0440\u0430\u0437\u043e\u0432. \u041c\u044b \u0438\u0437 \u0444\u0438\u043d\u0442\u0435\u0445-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Exness, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430 \u0438 \u0444\u0438\u043d\u0442\u0435\u0445-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f B2B \u0438 \u04122\u0421. \u0412 \u043d\u0430\u0448\u0435\u043c R&amp;D \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0432 \u043e\u0442\u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 100 + \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/production-ready-images-for-k8s","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-11T11:42:51+00:00","article:modified_time":"2020-05-11T11:42:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81173","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 16:03:22","updated":"2022-09-28 06:12:17"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/81173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=81173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/81173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/81174"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=81173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=81173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=81173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}