{"id":80076,"date":"2020-05-03T01:42:34","date_gmt":"2020-05-02T23:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt"},"modified":"2020-05-03T01:42:34","modified_gmt":"2020-05-02T23:42:34","slug":"proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","title":{"rendered":"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Obs. \u00f6vers.<\/b>: detta material kommer fr\u00e5n ett utbildningsprojekt <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">learnk8s<\/a><\/noindex> \u2014 svaret p\u00e5 en popul\u00e4r fr\u00e5ga vid utformningen av infrastruktur baserad p\u00e5 Kubernetes. Vi hoppas att de tillr\u00e4ckligt utf\u00f6rliga beskrivningarna av f\u00f6rdelar och nackdelar med varje alternativ kommer att hj\u00e4lpa dig att g\u00f6ra det optimala valet f\u00f6r ditt projekt.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/d3cc3b7e686e39032b1f02f3e8b6c46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>TL;DR<\/b>: samma upps\u00e4ttning arbetsbelastningar kan k\u00f6ras p\u00e5 flera stora kluster (p\u00e5 varje kluster kommer det att finnas ett stort antal arbetsbelastningar) eller p\u00e5 m\u00e5nga sm\u00e5 (med f\u00e5 belastningar i varje kluster).<\/p>\n<p>Nedan finns en tabell som bed\u00f6mer f\u00f6rdelarna och nackdelarna med varje tillv\u00e4gag\u00e5ngss\u00e4tt:<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/ab5b5fefc97c3befddbaeb0791f8a90d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e4r man anv\u00e4nder Kubernetes som plattform f\u00f6r drifts\u00e4ttning av applikationer uppst\u00e5r ofta n\u00e5gra grundl\u00e4ggande fr\u00e5gor om fininst\u00e4llningar av kluster:<\/p>\n<ul>\n<li> <i>Hur m\u00e5nga kluster ska man anv\u00e4nda?<\/i><\/li>\n<li> <i>Hur stora ska de vara?<\/i><\/li>\n<li> <i>Vad b\u00f6r varje kluster inneh\u00e5lla?<\/i><\/li>\n<\/ul>\n<p>\nI den h\u00e4r artikeln kommer jag att f\u00f6rs\u00f6ka besvara alla dessa fr\u00e5gor genom att analysera f\u00f6rdelarna och nackdelarna med varje metod.<\/p>\n<h2>Formuleringen av fr\u00e5gan<\/h2>\n<p>\nSom mjukvaruutvecklare arbetar du f\u00f6rmodligen parallellt med att utveckla och drifts\u00e4tta flera applikationer.<\/p>\n<p>Dessutom k\u00f6rs s\u00e4kert m\u00e5nga instanser av dessa applikationer i olika milj\u00f6er \u2014 till exempel kan det vara <i>dev<\/i>, <i>test<\/i> och <i>prod<\/i>.<\/p>\n<p>Det resulterar i en hel matris av applikationer och milj\u00f6er:<\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/f2a811fa82e1e433463ba25d29f837e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Applikationer och milj\u00f6er<\/i><\/p>\n<p>I det ovanst\u00e5ende exemplet visas 3 applikationer och 3 milj\u00f6er, vilket ger 9 m\u00f6jliga alternativ.<\/p>\n<p>Varje instans av en applikation representerar en sj\u00e4lvst\u00e4ndig deployment-enhet, som kan hanteras oberoende av andra.<\/p>\n<p><i>Observera att <b>instans av applikation<\/b> kan best\u00e5 av flera <b>komponenter<\/b>, s\u00e5som frontend, backend, databas, etc. I fallet med en mikrotj\u00e4nstapplikation kommer instansen att inneh\u00e5lla alla mikrotj\u00e4nster.<\/i><\/p>\n<p>Som ett resultat har anv\u00e4ndare av Kubernetes flera fr\u00e5gor:<\/p>\n<ul>\n<li> Borde alla instanser av applikationen placeras i ett och samma kluster?<\/li>\n<li> Borde man ha ett separat kluster f\u00f6r varje instans av applikationen?<\/li>\n<li> Eller kanske borde man anv\u00e4nda en kombination av de ovan n\u00e4mnda metoderna?<\/li>\n<\/ul>\n<p>\nAlla dessa alternativ \u00e4r fullt genomf\u00f6rbara, eftersom Kubernetes \u00e4r ett flexibelt system som inte begr\u00e4nsar anv\u00e4ndaren i sina m\u00f6jligheter.<\/p>\n<p>H\u00e4r \u00e4r n\u00e5gra av de m\u00f6jliga v\u00e4garna:<\/p>\n<ul>\n<li> ett stort gemensamt kluster;<\/li>\n<li> m\u00e5nga sm\u00e5 nischade kluster;<\/li>\n<li> ett kluster f\u00f6r varje applikation;<\/li>\n<li> ett kluster f\u00f6r varje milj\u00f6.<\/li>\n<\/ul>\n<p>\nSom visas nedan ligger de tv\u00e5 f\u00f6rsta tillv\u00e4gag\u00e5ngss\u00e4tten i ena \u00e4nden av variationsskalan:<\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/99b8fd0d1e4173705e7996cf8ccb6eec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fr\u00e5n n\u00e5gra stora kluster (till v\u00e4nster) till m\u00e5nga sm\u00e5 (till h\u00f6ger)<\/i><\/p>\n<p><i>I allm\u00e4nhet anses ett kluster \"st\u00f6rre\" \u00e4n ett annat om det har mer summan av noder och poddar. Till exempel \u00e4r ett kluster med 10 noder och 100 poddar st\u00f6rre \u00e4n ett kluster med 1 nod och 10 poddar.<\/i><\/p>\n<p>S\u00e5, l\u00e5t oss b\u00f6rja!<\/p>\n<h2>1. Ett stort gemensamt kluster<\/h2>\n<p>\nDet f\u00f6rsta alternativet \u00e4r att placera alla arbetsbelastningar i ett kluster:<\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/283fc3c3f5ccb40a157ccff600628114.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ett stort kluster<\/i><\/p>\n<p>Inom detta tillv\u00e4gag\u00e5ngss\u00e4tt anv\u00e4nds klustret som en universell <b>infrastrukturplattform<\/b> \u2014 allt du beh\u00f6ver implementerar du helt enkelt i det befintliga Kubernetes-klustret.<\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\">Namnrymder<\/a><\/noindex> Kubernetes m\u00f6jligg\u00f6r logisk separation av delar av klustret fr\u00e5n varandra, s\u00e5 att varje instans av applikationen kan anv\u00e4nda sin egen namnomr\u00e5de.<\/i><\/p>\n<p><i>L\u00e5t oss titta p\u00e5 f\u00f6r- och nackdelarna med detta tillv\u00e4gag\u00e5ngss\u00e4tt.<\/i><\/p>\n<h3>+ Effektiv anv\u00e4ndning av resurser<\/h3>\n<p>\nVid en enda kluster beh\u00f6vs bara en kopia av alla resurser som kr\u00e4vs f\u00f6r att k\u00f6ra och hantera Kubernetes-klustret.<\/p>\n<p>Till exempel g\u00e4ller detta f\u00f6r master-noder. Vanligtvis finns det 3 master-noder per Kubernetes-kluster, s\u00e5 f\u00f6r ett enda kluster f\u00f6rblir antalet detsamma (f\u00f6r j\u00e4mf\u00f6relse, 10 kluster beh\u00f6ver 30 master-noder).<\/p>\n<p>Den ovan n\u00e4mnda nyansen g\u00e4ller \u00e4ven andra tj\u00e4nster som fungerar \u00f6ver hela klustret, s\u00e5som lastbalanserare, Ingress-kontroller, autentiseringstj\u00e4nster, loggning och \u00f6vervakning.<\/p>\n<p>I det enskilda klustret kan alla dessa tj\u00e4nster anv\u00e4ndas f\u00f6r alla arbetsbelastningar (det \u00e4r inte n\u00f6dv\u00e4ndigt att skapa kopior av dem, som i fallet med flera kluster).<\/p>\n<h3>+ L\u00e5g kostnad<\/h3>\n<p>\nSom en f\u00f6ljd av ovanst\u00e5ende \u00e4r ett f\u00e4rre antal kluster oftast billigare, eftersom utgifterna f\u00f6r \u00f6verfl\u00f6diga resurser minskar.<\/p>\n<p>Detta g\u00e4ller s\u00e4rskilt f\u00f6r master-noder, som kan kosta en betydande summa pengar oavsett distributionsmetod (lokalt eller i molnet).<\/p>\n<p>Vissa hanterade (managed) Kubernetes-tj\u00e4nster, s\u00e5som <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">Google Kubernetes Engine (GKE)<\/a><\/noindex> eller <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/\">Azure Kubernetes Service (AKS)<\/a><\/noindex>, tillhandah\u00e5ller ett gratis hanteringslager. I detta fall \u00e4r kostnadsfr\u00e5gan mindre kritisk.<\/p>\n<p>Det finns ocks\u00e5 managed-tj\u00e4nster som tar ut en fast avgift f\u00f6r varje Kubernetes-kluster (till exempel, <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/eks\/\">Amazon Elastic Kubernetes Service, EKS<\/a><\/noindex>).<\/p>\n<h3>+ Effektiv administration<\/h3>\n<p>\nAtt hantera ett kluster \u00e4r enklare \u00e4n flera.<\/p>\n<p>Administrationen kan inkludera f\u00f6ljande uppgifter:<\/p>\n<ul>\n<li> uppgradering av Kubernetes-version;<\/li>\n<li> inst\u00e4llning av CI\/CD-pipeline;<\/li>\n<li> installera CNI-plugin;<\/li>\n<li> konfigurera anv\u00e4ndarautentisering;<\/li>\n<li> installera \u00e5tkomstkontrollern;<\/li>\n<\/ul>\n<p>\noch m\u00e5nga fler\u2026<\/p>\n<p>I fallet med ett kluster beh\u00f6ver man bara g\u00f6ra allt detta en g\u00e5ng.<\/p>\n<p>F\u00f6r flera kluster m\u00e5ste operationerna upprepas flera g\u00e5nger, vilket troligen kr\u00e4ver viss automatisering av processerna och verktyg f\u00f6r att s\u00e4kerst\u00e4lla systematik och konsekvens i processen.<\/p>\n<p><i>Och nu n\u00e5gra ord om nackdelarna.<\/i><\/p>\n<h3>\u2212 En enda felpunkt<\/h3>\n<p>\nI h\u00e4ndelse av ett fel <i>i det enda<\/i> klustret slutar omedelbart <i>alla<\/i> arbetsbelastningar att fungera!<\/p>\n<p>Det finns m\u00e5nga scenarier d\u00e4r n\u00e5got kan g\u00e5 fel:<\/p>\n<ul>\n<li> uppgradering av Kubernetes leder till ov\u00e4ntade bieffekter;<\/li>\n<li> en gemensam klusterkomponent (som CNI-plugin) fungerar inte som f\u00f6rv\u00e4ntat;<\/li>\n<li> en av klusterkomponenterna \u00e4r felkonfigurerad;<\/li>\n<li> fel i den underliggande infrastrukturen.<\/li>\n<\/ul>\n<p>\nEn s\u00e5dan h\u00e4ndelse kan orsaka allvarlig skada p\u00e5 alla arbetsbelastningar som placeras i det gemensamma klustret.<\/p>\n<h3>\u2212 Brist p\u00e5 strikt isolering<\/h3>\n<p>\nAtt arbeta i ett gemensamt kluster inneb\u00e4r att applikationer delar h\u00e5rdvaruresurser, n\u00e4tverksm\u00f6jligheter och operativsystem p\u00e5 klusternoderna.<\/p>\n<p>I viss mening \u00e4r tv\u00e5 containrar med tv\u00e5 olika applikationer som k\u00f6rs p\u00e5 samma nod likv\u00e4rdiga med tv\u00e5 processer som k\u00f6rs p\u00e5 samma maskin under samma OS-k\u00e4rna.<\/p>\n<p><i>Linux-containrar tillhandah\u00e5ller en viss grad av isolering, men den \u00e4r l\u00e5ngt ifr\u00e5n s\u00e5 stark som den som tillhandah\u00e5lls av till exempel virtuella maskiner. I grunden \u00e4r en process i en container samma process som k\u00f6rs i v\u00e4rdoperativsystemet.<\/i><\/p>\n<p>Detta kan bli ett s\u00e4kerhetsproblem: en s\u00e5dan organisering till\u00e5ter teoretiskt att orelaterade applikationer interagerar med varandra (avsiktligt eller av misstag).<\/p>\n<p>Dessutom delar alla arbetsbelastningar i Kubernetes-klustret vissa gemensamma klustertj\u00e4nster, s\u00e5som <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/dns-pod-service\/\">DNS<\/a><\/noindex> \u2014 det hj\u00e4lper applikationer att hitta tj\u00e4nster fr\u00e5n andra applikationer i klustret.<\/p>\n<p><i>Alla ovanst\u00e5ende punkter kan ha olika betydelse beroende p\u00e5 s\u00e4kerhetskraven f\u00f6r applikationer.<\/i><\/p>\n<p>Kubernetes tillhandah\u00e5ller olika verktyg f\u00f6r att f\u00f6rhindra problem i s\u00e4kerhetssystemet, s\u00e5som <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/\">PodSecurityPolicies<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">NetworkPolicies<\/a><\/noindex>. Men f\u00f6r att konfigurera dem korrekt kr\u00e4vs viss erfarenhet, och de kan inte st\u00e4nga helt alla s\u00e4kerhetsh\u00e5l.<\/p>\n<p>Det \u00e4r viktigt att alltid komma ih\u00e5g att Kubernetes ursprungligen \u00e4r designat f\u00f6r <i>delning<\/i>, ist\u00e4llet f\u00f6r <i>isolering och s\u00e4kerhet<\/i>.<\/p>\n<h3>\u2212 Avsaknad av strikt multi-tenancy<\/h3>\n<p>\nMed tanke p\u00e5 m\u00e4ngden gemensamma resurser i Kubernetes-klustret finns det m\u00e5nga s\u00e4tt som olika applikationer kan \"trampa p\u00e5 varandras t\u00e5r\".<\/p>\n<p>Till exempel kan en applikation monopolera en viss gemensam resurs (som CPU eller minne) och ber\u00f6va andra applikationer som k\u00f6rs p\u00e5 samma nod tillg\u00e5ng till den.<\/p>\n<p>Kubernetes tillhandah\u00e5ller olika mekanismer f\u00f6r att kontrollera s\u00e5dant beteende, s\u00e5som <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-compute-resources-container\/\">resursf\u00f6rfr\u00e5gningar och begr\u00e4nsningar<\/a><\/noindex> <i>(se \u00e4ven artikeln \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\"> CPU-gr\u00e4nser och aggressiv throttling i Kubernetes <\/a><\/noindex>\" \u2014 anm. \u00f6vers.)<\/i>, <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\/\">ResourceQuotas<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/limit-range\/\">LimitRanges<\/a><\/noindex>. Men som med s\u00e4kerhet \u00e4r konfigurationen relativt komplex och kan inte f\u00f6rhindra alla of\u00f6rutsedda bieffekter.<\/p>\n<h3>\u2212 Ett stort antal anv\u00e4ndare<\/h3>\n<p>\nI ett ensamt kluster m\u00e5ste \u00e5tkomst ges till m\u00e5nga personer. Ju fler de \u00e4r, desto h\u00f6gre blir risken f\u00f6r att de \"skadar\" n\u00e5got.<\/p>\n<p>Inom klustret kan man kontrollera vem som kan g\u00f6ra vad med hj\u00e4lp av <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\">rollbaserad \u00e5tkomstkontroll (RBAC)<\/a><\/noindex> <i>(se artikeln \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/470503\/\"> Anv\u00e4ndare och RBAC-auktorisering i Kubernetes <\/a><\/noindex>\" \u2014 anm. \u00f6vers.)<\/i>. Men det f\u00f6rhindrar inte att anv\u00e4ndare \"skadar\" n\u00e5got inom sitt ansvarsomr\u00e5de.<\/p>\n<h3>\u2212 Kluster kan inte v\u00e4xa o\u00e4ndligt<\/h3>\n<p>\nEtt kluster som anv\u00e4nds f\u00f6r alla arbetsbelastningar kommer troligen att vara ganska stort (i antal noder och poddar).<\/p>\n<p>Men h\u00e4r uppst\u00e5r ett annat problem: kluster i Kubernetes kan inte v\u00e4xa o\u00e4ndligt.<\/p>\n<p>Det finns en teoretisk gr\u00e4ns f\u00f6r storleken p\u00e5 klustret. I Kubernetes \u00e4r det ungef\u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\">5000 noder, 150 000 poddar och 300 000 containrar<\/a><\/noindex>.<\/p>\n<p>Men i verkliga livet kan problemen b\u00f6rja mycket tidigare \u2014 till exempel vid <noindex><a rel=\"nofollow\" href=\"https:\/\/events19.lfasiallc.com\/wp-content\/uploads\/2017\/11\/BoF_-Not-One-Size-Fits-All-How-to-Size-Kubernetes-Clusters_Guang-Ya-Liu-_-Sahdev-Zala.pdf\">500 noder<\/a><\/noindex>.<\/p>\n<p>Grejen \u00e4r att stora kluster l\u00e4gger en h\u00f6g belastning p\u00e5 Kubernetes kontrollplan. Med andra ord, f\u00f6r att h\u00e5lla klustret i drift och anv\u00e4nda resurserna effektivt kr\u00e4vs noggrann justering.<\/p>\n<p><i>Detta problem tas upp i en relevant artikel i den ursprungliga bloggen med titeln \"<noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/kubernetes-node-size\">Architecting Kubernetes clusters \u2014 choosing a worker node size<\/a><\/noindex>\u00bb.<\/i><\/p>\n<p><i>Men l\u00e5t oss titta p\u00e5 en motsatt strategi: m\u00e5nga sm\u00e5 kluster.<\/i><\/p>\n<h2>2. M\u00e5nga sm\u00e5, specialiserade kluster<\/h2>\n<p>\nMed denna strategi anv\u00e4nder du ett separat kluster f\u00f6r varje distribuerad enhet:<\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/2320f62d945944f2e26f07252e9b8440.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>M\u00e5nga sm\u00e5 kluster<\/i><\/p>\n<p>F\u00f6r syftet med denna artikel definieras <i>den distribuerade enheten<\/i> som en instans av en applikation \u2014 till exempel dev-versionen av en specifik applikation.<\/p>\n<p>I denna strategi anv\u00e4nds Kubernetes som en specialiserad <b>k\u00f6rmilj\u00f6<\/b> f\u00f6r enskilda instanser av applikationen.<\/p>\n<p><i>L\u00e5t oss titta p\u00e5 f\u00f6r- och nackdelarna med detta tillv\u00e4gag\u00e5ngss\u00e4tt.<\/i><\/p>\n<h3>+ Begr\u00e4nsad \"explosionsradius\"<\/h3>\n<p>\nVid en \"kollaps\" av klustret begr\u00e4nsas negativa konsekvenser endast till de arbetsbelastningar som var distribuerade i detta kluster. Alla andra arbetsbelastningar f\u00f6rblir op\u00e5verkade.<\/p>\n<h3>+ Isolering<\/h3>\n<p>\nArbetsbelastningar som placeras i individuella kluster har inga gemensamma resurser s\u00e5som CPU, minne, operativsystem, n\u00e4tverk eller andra tj\u00e4nster.<\/p>\n<p>Som ett resultat f\u00e5r vi stark isolering mellan orelaterade applikationer, vilket kan f\u00f6rb\u00e4ttra deras s\u00e4kerhet.<\/p>\n<h3>+ F\u00e5 anv\u00e4ndare<\/h3>\n<p>\nEftersom varje kluster bara inneh\u00e5ller ett begr\u00e4nsat antal arbetsbelastningar minskar antalet anv\u00e4ndare som har tillg\u00e5ng till det.<\/p>\n<p>Ju f\u00e4rre personer som har tillg\u00e5ng till klustret, desto l\u00e4gre \u00e4r risken f\u00f6r att n\u00e5got \"g\u00e5r fel\".<\/p>\n<p><i>L\u00e5t oss titta p\u00e5 nackdelarna.<\/i><\/p>\n<h3>\u2212 Ineffektiv resursanv\u00e4ndning<\/h3>\n<p>\nSom n\u00e4mnts tidigare kr\u00e4ver varje Kubernetes kluster en viss upps\u00e4ttning kontrollerande resurser: master-noder, kontrollplanens komponenter, l\u00f6sningar f\u00f6r \u00f6vervakning och loggning.<\/p>\n<p>I fallet med ett stort antal sm\u00e5 kluster m\u00e5ste en st\u00f6rre del av resurserna allokeras f\u00f6r hantering.<\/p>\n<h3>\u2212 Kostnader<\/h3>\n<p>\nIneffektiv resursanv\u00e4ndning inneb\u00e4r automatiskt h\u00f6ga kostnader.<\/p>\n<p>Till exempel kommer inneh\u00e5llet med 30 masternoder ist\u00e4llet f\u00f6r tre med samma ber\u00e4kningskraft att p\u00e5verka kostnaderna.<\/p>\n<h3>\u2212 Sv\u00e5righeter med administration<\/h3>\n<p>\nAtt administrera flera Kubernetes-kluster \u00e4r mycket sv\u00e5rare \u00e4n att arbeta med ett enda.<\/p>\n<p>Till exempel m\u00e5ste autentisering och auktorisering konfigureras f\u00f6r varje kluster. Uppgradering av Kubernetes-versionen m\u00e5ste ocks\u00e5 g\u00f6ras flera g\u00e5nger.<\/p>\n<p>Det \u00e4r troligt att automatisering kommer att beh\u00f6vas f\u00f6r att f\u00f6rb\u00e4ttra effektiviteten i alla dessa uppgifter.<\/p>\n<p><i>L\u00e5t oss nu titta p\u00e5 mindre extrema scenarier.<\/i><\/p>\n<h2>3. Ett kluster f\u00f6r varje applikation<\/h2>\n<p>\nInom det h\u00e4r tillv\u00e4gag\u00e5ngss\u00e4ttet skapar du ett separat kluster f\u00f6r alla instanser av en specifik applikation:<\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/238ee74d4e4dc42b7daeadc1ce484905.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kluster per applikation<\/i><\/p>\n<p>Denna v\u00e4g kan ses som en generalisering av principen \u201d<b>ett separat kluster f\u00f6r ett team<\/b>\u201d, eftersom ett team av ingenj\u00f6rer vanligtvis arbetar med utveckling av en eller flera applikationer.<\/p>\n<p><i>L\u00e5t oss titta p\u00e5 f\u00f6r- och nackdelarna med detta tillv\u00e4gag\u00e5ngss\u00e4tt.<\/i><\/p>\n<h3>+ Kluster kan anpassas efter applikationen<\/h3>\n<p>\nOm en applikation har s\u00e4rskilda behov kan de tillgodoses inom klustret utan att p\u00e5verka andra kluster.<\/p>\n<p>S\u00e5dana behov kan inkludera arbetare med GPU, specifika CNI-plugin, service mesh eller n\u00e5gon annan tj\u00e4nst.<\/p>\n<p>Varje kluster kan anpassas f\u00f6r den applikation som k\u00f6rs i det, s\u00e5 att det inneh\u00e5ller endast det som beh\u00f6vs.<\/p>\n<h3>\u2212 Olika milj\u00f6er i ett kluster<\/h3>\n<p>\nNackdelen med detta tillv\u00e4gag\u00e5ngss\u00e4tt \u00e4r att instanser av applikationer fr\u00e5n olika milj\u00f6er samexisterar i ett och samma kluster.<\/p>\n<p>Till exempel k\u00f6rs prod-versionen av applikationen i samma kluster som dev-versionen. Det betyder ocks\u00e5 att utvecklarna arbetar i samma kluster som den produktionsversion av applikationen som k\u00f6rs.<\/p>\n<p>Om ett fel uppst\u00e5r i klustret p\u00e5 grund av utvecklarnas \u00e5tg\u00e4rder eller buggar i dev-versionen kan ocks\u00e5 prod-versionen potentiellt p\u00e5verkas \u2014 en stor nackdel med detta tillv\u00e4gag\u00e5ngss\u00e4tt.<\/p>\n<p><i>Och slutligen, det sista scenariot i v\u00e5r lista.<\/i><\/p>\n<h2>4. Ett kluster f\u00f6r varje milj\u00f6<\/h2>\n<p>\nDetta scenario inneb\u00e4r att ett separat kluster tilldelas varje milj\u00f6:<\/p>\n<p><img decoding=\"async\" alt=\"Design av Kubernetes-kluster: hur m\u00e5nga b\u00f6r det finnas?\" src=\"\/wp-content\/uploads\/2020\/05\/157da599edf178832b1b15459786fbc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ett kluster per milj\u00f6<\/i><\/p>\n<p>Till exempel kan du ha kluster <i>dev<\/i>, <i>test<\/i> och <i>prod<\/i>, d\u00e4r du k\u00f6r alla instanser av applikationen avsedda f\u00f6r en specifik milj\u00f6.<\/p>\n<p><i>H\u00e4r \u00e4r f\u00f6rdelarna och nackdelarna med detta tillv\u00e4gag\u00e5ngss\u00e4tt.<\/i><\/p>\n<h3>+ Isolering av prod-milj\u00f6<\/h3>\n<p>\nInramverket f\u00f6r denna strategi inneb\u00e4r att alla milj\u00f6er blir isolerade fr\u00e5n varandra. Detta \u00e4r s\u00e4rskilt viktigt f\u00f6r produktionsmilj\u00f6n.<\/p>\n<p>Produktionsversioner av applikationen \u00e4r nu oberoende av vad som h\u00e4nder i andra kluster och milj\u00f6er.<\/p>\n<p>Om det uppst\u00e5r ett problem i dev-klustret kommer produktionsversionerna av applikationerna att forts\u00e4tta fungera som om ingenting har h\u00e4nt.<\/p>\n<h3>+ Klustret kan anpassas efter milj\u00f6n<\/h3>\n<p>\nVarje kluster kan anpassas efter sin milj\u00f6. Till exempel kan man:<\/p>\n<ul>\n<li> installera utvecklings- och fels\u00f6kningsverktyg i dev-klustret;<\/li>\n<li> installera testverktyg och ramverk i klustret <i>test<\/i>;<\/li>\n<li> anv\u00e4nda kraftfullare h\u00e5rdvara och n\u00e4tverkskanaler i klustret <i>prod<\/i>.<\/li>\n<\/ul>\n<p>\nDetta \u00f6kar b\u00e5de effektiviteten vid utveckling och drift av applikationer.<\/p>\n<h3>+ Begr\u00e4nsad \u00e5tkomst till produktionsklustret<\/h3>\n<p>\nDet \u00e4r s\u00e4llan n\u00f6dv\u00e4ndigt att arbeta direkt med produktionsklustret, s\u00e5 man kan i stor utstr\u00e4ckning begr\u00e4nsa antalet personer som har tillg\u00e5ng till det.<\/p>\n<p>Man kan g\u00e5 \u00e4nnu l\u00e4ngre och helt ber\u00f6va m\u00e4nniskor \u00e5tkomst till detta kluster, och ist\u00e4llet utf\u00f6ra alla distributioner med hj\u00e4lp av ett automatiserat CI\/CD-verktyg. Denna strategi minimerar risken f\u00f6r m\u00e4nskliga misstag d\u00e4r det \u00e4r som mest kritiskt.<\/p>\n<p><i>Och nu n\u00e5gra ord om nackdelarna.<\/i><\/p>\n<h3>\u2212 Brist p\u00e5 isolering mellan applikationer<\/h3>\n<p>\nEn av huvudsakliga nackdelarna med denna strategi \u00e4r avsaknaden av h\u00e5rdvaru- och resursisolering mellan applikationerna.<\/p>\n<p>Orelaterade applikationer delar resurser i klustret: k\u00e4rnan, processor, minne och vissa andra tj\u00e4nster.<\/p>\n<p>Som redan n\u00e4mnts kan detta vara potentiellt farligt.<\/p>\n<h3>\u2212 Of\u00f6rm\u00e5ga att lokalisera applikationernas beroenden<\/h3>\n<p>\nOm en applikation har speciella krav, beh\u00f6ver de uppfyllas i alla kluster.<\/p>\n<p>Om en applikation kr\u00e4ver GPU, m\u00e5ste varje kluster inneh\u00e5lla minst en worker med GPU (\u00e4ven om den endast anv\u00e4nds av denna applikation).<\/p>\n<p>Som ett resultat riskerar vi att f\u00e5 h\u00f6gre kostnader och ineffektiv resursanv\u00e4ndning.<\/p>\n<h2>Slutsats<\/h2>\n<p>\nMed ett visst antal applikationer kan de placeras i flera stora kluster eller m\u00e5nga sm\u00e5.<\/p>\n<p>Artikeln diskuterar f\u00f6rdelar och nackdelar med olika strategier, allt fr\u00e5n ett globalt kluster till flera sm\u00e5 och specialiserade:<\/p>\n<ul>\n<li> en stor gemensam kluster;<\/li>\n<li> m\u00e5nga sm\u00e5 nischade kluster;<\/li>\n<li> ett kluster f\u00f6r varje applikation;<\/li>\n<li> ett kluster f\u00f6r varje milj\u00f6.<\/li>\n<\/ul>\n<p>\n<i>S\u00e5 vilken metod ska man v\u00e4lja?<\/i><\/p>\n<p>Som vanligt beror svaret p\u00e5 anv\u00e4ndningsscenariot: man m\u00e5ste v\u00e4ga f\u00f6rdelar och nackdelar med olika tillv\u00e4gag\u00e5ngss\u00e4tt och v\u00e4lja det mest optimala alternativet.<\/p>\n<p>Men valet \u00e4r inte begr\u00e4nsat till exemplen ovan \u2014 man kan anv\u00e4nda vilken kombination som helst!<\/p>\n<p>Till exempel kan man organisera ett par kluster f\u00f6r varje team: ett kluster f\u00f6r utveckling (d\u00e4r milj\u00f6er <i>dev<\/i> och <i>test<\/i>) och ett kluster f\u00f6r <i>production<\/i> (d\u00e4r produktionsmilj\u00f6n kommer att finnas).<\/p>\n<p>Baserat p\u00e5 informationen i denna artikel kan du optimera f\u00f6rdelar och nackdelar utifr\u00e5n det specifika scenariot. Lycka till!<\/p>\n<h2>P.S.<\/h2>\n<p>\nL\u00e4s \u00e4ven i v\u00e5r blogg:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/484954\/\">Visuell guide f\u00f6r fels\u00f6kning i Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/480946\/\">Loggar i Kubernetes (och mer) idag: f\u00f6rv\u00e4ntningar och verklighet<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/478306\/\">Service Mesh: vad varje mjukvaruingenj\u00f6r beh\u00f6ver veta om den mest hypeade teknologin<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468679\/\">S\u00e4kerhetsalfabetet i Kubernetes: autentisering, auktorisering, granskning<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/498100\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0442 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 learnk8s \u2014 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 Kubernetes. \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043b\u044e\u0441\u043e\u0432 \u0438 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. TL;DR: \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 (\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80077,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80076","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=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\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\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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-02T23:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-02T23:42:34+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\udd47Design av Kubernetes-kluster: hur m\u00e5nga ska det vara? | ProHoster","description":"Ex.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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-02T23:42:34+00:00","article:modified_time":"2020-05-02T23:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80076","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:24:58","updated":"2022-10-02 20:23:35","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\/80076","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=80076"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/80076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/80077"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=80076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=80076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=80076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}