{"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\/sv\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","title":{"rendered":"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/21d8807ed791f0b9ff81494cf1a373c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet f\u00f6rsta steget f\u00f6r att distribuera i Kubernetes \u00e4r att placera din applikation i en container. I den h\u00e4r serien kommer vi att titta p\u00e5 hur man kan skapa en bild av en liten och s\u00e4ker container.<br \/>\nMed Docker har skapandet av containerbilder aldrig varit enklare. Ange en grundl\u00e4ggande bild, l\u00e4gg till dina \u00e4ndringar och skapa containern.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/f144351cc82d46cf3f4a518c6e11faa3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c4ven om detta tillv\u00e4gag\u00e5ngss\u00e4tt \u00e4r utm\u00e4rkt f\u00f6r att komma ig\u00e5ng, kan anv\u00e4ndningen av standardbasbilder leda till os\u00e4ker drift med stora bilder som \u00e4r fulla av s\u00e5rbarheter.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Dessutom anv\u00e4nder de flesta bilder i Docker antingen Debian eller Ubuntu som basbild, och \u00e4ven om det ger utm\u00e4rkt kompatibilitet och enkel anpassning (Docker-filen inneh\u00e5ller bara tv\u00e5 kodrader), kan basbilder l\u00e4gga till hundratals megabyte extra last i din container. Till exempel kan en enkel node.js-applikation Go \"hello-world\" vara omkring 700 megabyte, medan storleken p\u00e5 sj\u00e4lva din applikation bara \u00e4r n\u00e5gra megabyte.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/8093421f0f0f61b9daedf8e9530bbd3e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5ledes \u00e4r all denna extra belastning en sl\u00f6seri med digitalt utrymme och en utm\u00e4rkt g\u00f6mst\u00e4lle f\u00f6r s\u00e5rbarheter och s\u00e4kerhetsfel. D\u00e4rf\u00f6r ska vi titta p\u00e5 tv\u00e5 s\u00e4tt att minska storleken p\u00e5 containerbilden. <\/p>\n<p>Det f\u00f6rsta \u00e4r att anv\u00e4nda sm\u00e5 basbilder, det andra \u00e4r att anv\u00e4nda designm\u00f6nstret Builder Pattern. Att anv\u00e4nda mindre basbilder \u00e4r f\u00f6rmodligen det enklaste s\u00e4ttet att minska storleken p\u00e5 din container. Sannolikt tillhandah\u00e5ller ditt spr\u00e5k eller din teknik som du anv\u00e4nder en originalapplikationsbild som \u00e4r mycket mindre \u00e4n standardbilden. L\u00e5t oss ta en titt p\u00e5 v\u00e5r node.js-container. <\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/df3f744a565465b56adcec6a1c32e501.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom standard \u00e4r storleken p\u00e5 Docker-basen node:8 670 MB, medan node:8-alpine bara \u00e4r 65 MB, vilket \u00e4r 10 g\u00e5nger mindre. Genom att anv\u00e4nda den mindre basbilden Alpine minskar du avsev\u00e4rt storleken p\u00e5 din container. Alpine \u00e4r en liten och l\u00e4tt Linux-distribution som \u00e4r mycket popul\u00e4r bland Docker-anv\u00e4ndare eftersom den \u00e4r kompatibel med m\u00e5nga applikationer, samtidigt som den h\u00e5ller containerns storlek liten. Till skillnad fr\u00e5n den standard Docker-basen \"node\", tar \"node:alpine\" bort m\u00e5nga hj\u00e4lpfiler och program, och l\u00e4mnar endast de som beh\u00f6vs f\u00f6r att k\u00f6ra din applikation.<\/p>\n<p>F\u00f6r att byta till en mindre basbild, uppdatera Docker-filen f\u00f6r att b\u00f6rja arbeta med den nya basbilden:<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/55a3b8e403bd34896018f92a81a3f251.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNu, till skillnad fr\u00e5n den gamla onbuild-bilden, beh\u00f6ver du kopiera din kod till containern och installera eventuella beroenden. I den nya Docker-filen b\u00f6rjar containern med bilden node:alpine, skapar sedan en katalog f\u00f6r koden, installerar beroenden med hj\u00e4lp av pakethanteraren NPM och slutligen k\u00f6r server.js.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/b41c36994fc18dc34fb970a38bc50c9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMed denna uppdatering f\u00e5r du en container som \u00e4r 10 g\u00e5nger mindre i storlek. Om ditt programmeringsspr\u00e5k eller din teknikstack inte har en funktion f\u00f6r att minska basbilden, anv\u00e4nd Alpine Linux. Det ger ocks\u00e5 m\u00f6jlighet att fullt ut kontrollera inneh\u00e5llet i containern. Att anv\u00e4nda sm\u00e5 basbilder \u00e4r ett utm\u00e4rkt s\u00e4tt att snabbt skapa sm\u00e5 containrar. Men du kan uppn\u00e5 \u00e4nnu st\u00f6rre reduktion genom att anv\u00e4nda Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/c9549f5879058d9734c174e8571b9069.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI tolkade spr\u00e5k ges k\u00e4llkoden f\u00f6rst till tolken, och sedan k\u00f6rs den direkt. I kompilatoriska spr\u00e5k omvandlas k\u00e4llkoden f\u00f6rst till kompilatorisk kod. Vid denna process anv\u00e4nds ofta verktyg som faktiskt inte beh\u00f6vs f\u00f6r att k\u00f6ra koden. Det betyder att du kan ta bort dessa verktyg helt fr\u00e5n den slutliga containern. F\u00f6r detta kan du anv\u00e4nda Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/9af4d11134c54cbdbd2b020cdf270429.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKoden skapas i den f\u00f6rsta containern och kompileras. Sedan packas den kompilerade koden ner i den slutliga containern utan kompilatorer och verktyg som beh\u00f6vs f\u00f6r att kompilera denna kod. L\u00e5t oss g\u00e5 igenom denna process med en Go-applikation. F\u00f6rst g\u00e5r vi fr\u00e5n onbuild-bilden till Alpine Linux.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/822b67eb28f94c50e7a40af1fe1bfea2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI den nya Docker-filen b\u00f6rjar containern med bilden golang:alpine. Den skapar sedan en katalog f\u00f6r koden, kopierar den till k\u00e4llkoden, kompilerar koden och k\u00f6r applikationen. Denna container \u00e4r mycket mindre \u00e4n onbuild-containern, men den inneh\u00e5ller fortfarande kompilatorn och andra Go-verktyg som vi faktiskt inte beh\u00f6ver. L\u00e5t oss d\u00e4rf\u00f6r bara extrahera den kompilerade programvaran och packa den i v\u00e5r egen container.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/094ac74a24cd723f83ddc34bee64e884.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDu kan m\u00e4rka n\u00e5got konstigt i denna Docker-fil: den inneh\u00e5ller tv\u00e5 FROM-rader. Den f\u00f6rsta delen av de fyra raderna ser precis ut som den f\u00f6reg\u00e5ende Docker-filen f\u00f6rutom att den anv\u00e4nder nyckelordet AS f\u00f6r att ge ett namn till detta steg. I den n\u00e4sta delen finns en ny FROM-rad som g\u00f6r det m\u00f6jligt att p\u00e5b\u00f6rja en ny bild, och ist\u00e4llet f\u00f6r att anv\u00e4nda bilden golang:alpine som basbild kommer vi att anv\u00e4nda Raw alpine.<\/p>\n<p>Raw Alpine Linux har inga installerade SSL-certifikat, vilket kommer att leda till att de flesta API-anrop via HTTPS misslyckas, s\u00e5 l\u00e5t oss installera n\u00e5gra rotcertifikat fr\u00e5n CA.<\/p>\n<p>Och nu det mest intressanta: f\u00f6r att kopiera den kompilerade koden fr\u00e5n den f\u00f6rsta containern till den andra kan vi enkelt anv\u00e4nda COPY-kommandot, som ligger p\u00e5 den femte raden av den andra delen. Det kommer att kopiera bara en enkel applikationsfil och ber\u00f6ra inga Go-verktyg. Den nya flertr\u00e5dade Docker-filen kommer att inneh\u00e5lla en containerbild som endast \u00e4r 12 megabyte, medan den ursprungliga containerbilden var 700 megabyte, vilket \u00e4r en stor skillnad!<br \/>\nS\u00e5ledes \u00e4r anv\u00e4ndning av sm\u00e5 basbilder och Builder Pattern utm\u00e4rkta s\u00e4tt att skapa containrar av mycket mindre storlek utan mycket arbete.<br \/>\nDet kan h\u00e4nda att det finns ytterligare s\u00e4tt att minska storleken p\u00e5 bilden och containern beroende p\u00e5 applikationens stack, men ger verkligen sm\u00e5 containrar n\u00e5gon m\u00e4tbar f\u00f6rdel? L\u00e5t oss titta p\u00e5 tv\u00e5 aspekter d\u00e4r sm\u00e5 containrar \u00e4r extremt effektiva \u2013 det handlar om prestanda och s\u00e4kerhet.<\/p>\n<p>F\u00f6r att bed\u00f6ma prestanda\u00f6kningen, l\u00e5t oss titta p\u00e5 hur l\u00e5ng tid det tar att skapa en container, skicka den till registret (push) och sedan h\u00e4mta den d\u00e4rifr\u00e5n (pull). Du kan se att en mindre container har en tydlig f\u00f6rdel j\u00e4mf\u00f6rt med en st\u00f6rre container.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/f48096cf875dbb34cb473f6296a2b601.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDocker kommer att cacha lager, s\u00e5 efterf\u00f6ljande byggen kommer att ske mycket snabbt. Men i m\u00e5nga CI-system som anv\u00e4nds f\u00f6r att bygga och testa containrar cachas inte lagren, s\u00e5 h\u00e4r finns en betydande tidsbesparing. Som du kan se, tar bygget av en stor container beroende p\u00e5 din dators kraft mellan 34 och 54 sekunder, medan anv\u00e4ndningen av en mindre container med hj\u00e4lp av Builder Pattern tar mellan 23 och 28 sekunder. F\u00f6r den h\u00e4r typen av operationer kan prestandaf\u00f6rb\u00e4ttringen uppg\u00e5 till 40-50%. S\u00e5 t\u00e4nk bara p\u00e5 hur m\u00e5nga g\u00e5nger du bygger och testar din kod.<\/p>\n<p>N\u00e4r containern \u00e4r byggd beh\u00f6ver du skicka dess bild (push container image) till containerregistret f\u00f6r att sedan anv\u00e4nda den i din Kubernetes-kluster. Jag rekommenderar att du anv\u00e4nder Google Container Registry.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/4c5426248c1e1ec6b0a36579db56c725.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGenom att anv\u00e4nda Google Container Registry (GCR) betalar du endast f\u00f6r \"r\u00e5\" lagring och n\u00e4tverk, och en extra avgift f\u00f6r hantering av containrar tas inte ut. Det \u00e4r konfidentiellt, s\u00e4kert och mycket snabbt. GCR anv\u00e4nder m\u00e5nga trick f\u00f6r att snabba upp pull-operationer. Som du ser, tar inskickandet av Docker Container Image med go:onbuild, beroende p\u00e5 datorns prestanda, mellan 15 och 48 sekunder, medan samma operation med en mindre container tar mellan 14 och 16 sekunder, och f\u00f6r mindre kraftfulla maskiner \u00f6kar hastighetsf\u00f6rdelen tre g\u00e5nger. F\u00f6r kraftfulla maskiner \u00e4r tiden ungef\u00e4r densamma, eftersom GCR anv\u00e4nder global cache f\u00f6r den gemensamma bildbasen, vilket inneb\u00e4r att du \u00f6verhuvudtaget inte beh\u00f6ver ladda upp dem. I en l\u00e5gt presterande dator \u00e4r CPU det begr\u00e4nsande faktorn, s\u00e5 f\u00f6rdelen med att anv\u00e4nda sm\u00e5 containrar \u00e4r h\u00e4r mycket mer m\u00e4rkbar.<\/p>\n<p>Om du anv\u00e4nder GCR rekommenderar jag starkt att du anv\u00e4nder Google Container Builder (GCB) som en del av ditt byggsystem.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/cf97f8636dff16d5663225547bfb0701.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom ni ser g\u00f6r anv\u00e4ndningen av detta det m\u00f6jligt att uppn\u00e5 mycket b\u00e4ttre resultat n\u00e4r det kommer till att minska tiden f\u00f6r operationen Build+Push, \u00e4n \u00e4ven med en kraftfull maskin \u2013 i det h\u00e4r fallet accelereras processen f\u00f6r att bygga och skicka containrar till v\u00e4rden n\u00e4stan med 50 procent. Dessutom f\u00e5r ni varje dag 120 minuter byggtid gratis, vilket i de flesta fall tillfredsst\u00e4ller behoven av att skapa containrar. <\/p>\n<p>D\u00e4refter kommer den viktigaste prestandametriken \u2013 hastigheten f\u00f6r att h\u00e4mta, eller ladda ner, containrar (Pull). Och om ni inte riktigt bryr er om tiden som tas f\u00f6r push-operationen, s\u00e5 p\u00e5verkar l\u00e4ngden p\u00e5 pull-processen allvarligt den totala systemprestandan. Anta att ni har en kluster med tre noder och en av dem g\u00e5r ner. Om ni anv\u00e4nder ett hanteringssystem, som Google Kubernetes Engine, s\u00e5 kommer det automatiskt att ers\u00e4tta den defekta noden med en ny. Men den nya noden kommer att vara helt tom, och ni m\u00e5ste \u00f6verf\u00f6ra alla era containrar dit f\u00f6r att den ska b\u00f6rja fungera. Om pull-operationen tar tillr\u00e4ckligt l\u00e5ng tid, kommer er kluster att arbeta med minskad prestanda under hela tiden.<\/p>\n<p>Det finns m\u00e5nga situationer d\u00e4r n\u00e5got liknande kan h\u00e4nda: detta inkluderar att l\u00e4gga till en ny nod till klustret, uppdateringsprocesser f\u00f6r noder eller till och med \u00f6verg\u00e5ng till en ny container f\u00f6r distribution. S\u00e5ledes blir minimering av pull-extraktions tiden en avg\u00f6rande faktor. Det \u00e4r obestridligt att en liten container laddas ner mycket snabbare \u00e4n en stor. Om ni anv\u00e4nder flera containrar i ett Kubernetes-kluster kan tidsbesparingen bli betydande.<\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/fb0dacb37e9732fe2954323ee171a723.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTitta p\u00e5 den j\u00e4mf\u00f6relse som ges: pull-operationen n\u00e4r den arbetar med sm\u00e5 containrar tar 4-9 g\u00e5nger mindre tid beroende p\u00e5 maskinens kapacitet, j\u00e4mf\u00f6rt med samma operation med go:onbuild. Anv\u00e4ndningen av gemensamma basbilder f\u00f6r containrar av liten storlek p\u00e5skyndar avsev\u00e4rt tiden och hastigheten med vilken nya Kubernetes-noder kan distribueras och g\u00e5 online.<\/p>\n<p>L\u00e5t oss titta p\u00e5 s\u00e4kerhetsfr\u00e5gan. Det anses att mindre containrar \u00e4r mycket s\u00e4krare \u00e4n stora, eftersom de har en mindre attackyta. \u00c4r det verkligen s\u00e5? En av de mest anv\u00e4ndbara funktionerna i Google Container Registry \u00e4r m\u00f6jligheten att automatiskt skanna dina containrar f\u00f6r s\u00e5rbarheter. F\u00f6r n\u00e5gra m\u00e5nader sedan skapade jag b\u00e5de onbuild- och flertrinscontainrar, s\u00e5 l\u00e5t oss se om det finns n\u00e5gra s\u00e5rbara punkter d\u00e4r. <\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/0ed3cd7bb8c8f5164e1115e9f1be39d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nResultatet \u00e4r imponerande: det har endast hittats 3 medelstora s\u00e5rbarheter i den lilla containern, medan den stora hade 16 kritiska och 376 andra s\u00e5rbarheter. Om vi granskar inneh\u00e5llet i den stora containern, kan vi se att de flesta s\u00e4kerhetsproblem inte har n\u00e5got att g\u00f6ra med v\u00e5r applikation, utan handlar om program som vi inte ens anv\u00e4nder. S\u00e5 n\u00e4r folk pratar om en stor attackyta, menar de just detta. <\/p>\n<p><img decoding=\"async\" alt=\"B\u00e4sta praxis f\u00f6r Kubernetes. Skapa sm\u00e5 containrar\" src=\"\/wp-content\/uploads\/2020\/05\/4a782f4a50153adc44042e9234357c02.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSlutsatsen \u00e4r tydlig: skapa sm\u00e5 containrar, eftersom de ger verkliga f\u00f6rdelar n\u00e4r det g\u00e4ller prestanda och s\u00e4kerhet f\u00f6r ditt system. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">B\u00e4sta praxis f\u00f6r Kubernetes. Organisera Kubernetes med namnrymder<\/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=\"Spela 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>Lite reklam \ud83d\ude42<\/h3>\n<p>\nTack f\u00f6r att ni stannar kvar hos oss. Gillar ni v\u00e5ra artiklar? Vill ni se fler intressanta material? St\u00f6d oss genom att g\u00f6ra en best\u00e4llning eller rekommendera oss till era v\u00e4nner, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">moln-VPS f\u00f6r utvecklare fr\u00e5n $4,99<\/a><\/noindex>, <b>en unik motsvarighet till entry-level servrar som vi har skapat f\u00f6r er:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Allt om VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps fr\u00e5n $19 eller hur man korrekt delar en server?<\/a><\/noindex> (alternativ med RAID1 och RAID10 finns tillg\u00e4ngliga, upp till 24 k\u00e4rnor och upp till 40GB DDR4).<\/p>\n<p><b>Dell R730xd \u00e4r tv\u00e5 g\u00e5nger billigare i datacentret Equinix Tier IV i Amsterdam?<\/b> Bara hos oss <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 100TB fr\u00e5n $199<\/a><\/noindex> i Nederl\u00e4nderna! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 fr\u00e5n $99!<\/b><\/b> L\u00e4s om <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Hur man bygger en f\u00f6retagsinfrastruktur med Dell R730xd E5-2650 v4-servrar som kostar 9000 euro f\u00f6r en br\u00e5kdel?<\/a><\/noindex><br \/>\n<br \/>K\u00e4lla: <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\/sv\/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=\"sv_SE\" \/>\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\/sv\/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\udd47B\u00e4sta praxis f\u00f6r Kubernetes. Skapande av sm\u00e5 containrar | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/82244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=82244"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/82244\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/82245"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=82244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=82244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=82244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}