{"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\/nl\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","title":{"rendered":"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Opmerking vertaler.<\/b>: dit materiaal is afkomstig van een educatief project <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">learnk8s<\/a><\/noindex> \u2014 een antwoord op een veelgestelde vraag bij het ontwerpen van infrastructuur op basis van Kubernetes. We hopen dat de voldoende uitgebreide beschrijvingen van de voor- en nadelen van elk van de opties helpen om de optimale keuze voor uw project te maken.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/d3cc3b7e686e39032b1f02f3e8b6c46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>TL;DR<\/b>: dezelfde set werkbelastingen kan op meerdere grote clusters worden uitgevoerd (elke cluster zal een groot aantal workloads hebben) of op veel kleinere (met een klein aantal workloads in elke cluster).<\/p>\n<p>Hieronder is een tabel waarin de voor- en nadelen van elke benadering worden beoordeeld:<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/ab5b5fefc97c3befddbaeb0791f8a90d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBij het gebruik van Kubernetes als platform voor het in productie nemen van applicaties rijzen vaak enkele fundamentele vragen over de nuances van clusterconfiguraties:<\/p>\n<ul>\n<li> <i>Hoeveel clusters moeten worden gebruikt?<\/i><\/li>\n<li> <i>Hoe groot moeten ze zijn?<\/i><\/li>\n<li> <i>Wat moet elke cluster omvatten?<\/i><\/li>\n<\/ul>\n<p>\nIn dit artikel zal ik proberen al deze vragen te beantwoorden door de voor- en nadelen van elke benadering te analyseren.<\/p>\n<h2>Het formuleren van de vraag<\/h2>\n<p>\nAls softwareontwikkelaar ontwikkelt u waarschijnlijk meerdere applicaties tegelijkertijd.<\/p>\n<p>Bovendien worden er ongetwijfeld meerdere exemplaren van deze applicaties uitgevoerd in verschillende omgevingen \u2014 bijvoorbeeld: <i>, maar volgt geen wijzigingen), gebruikmakend van een andere configuratie.<\/i>, <i>test<\/i> en <i>prod<\/i>.<\/p>\n<p>Hierdoor ontstaat er een volledige matrix van applicaties en omgevingen:<\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/f2a811fa82e1e433463ba25d29f837e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Applicaties en omgevingen<\/i><\/p>\n<p>In het bovenstaande voorbeeld zijn er 3 applicaties en 3 omgevingen, wat uiteindelijk 9 mogelijke combinaties oplevert.<\/p>\n<p>Elk exemplaar van een applicatie vormt een zelfstandige deployment-eenheid, waarmee onafhankelijk van andere kan worden gewerkt.<\/p>\n<p><i>Let op dat <b>exemplaar van de applicatie<\/b> kan uit meerdere <b>componenten<\/b>, zoals frontend, backend, database, enzovoort. In het geval van een microservices-applicatie omvat het exemplaar alle microservices.<\/i><\/p>\n<p>Daarom hebben gebruikers van Kubernetes enkele vragen:<\/p>\n<ul>\n<li> Moet ik alle exemplaren van de applicatie in \u00e9\u00e9n cluster plaatsen?<\/li>\n<li> Moet ik een apart cluster aanmaken voor elk exemplaar van de applicatie?<\/li>\n<li> Of moet ik misschien een combinatie van de bovenstaande benaderingen gebruiken?<\/li>\n<\/ul>\n<p>\nAl deze opties zijn volkomen haalbaar, aangezien Kubernetes een flexibel systeem is dat de gebruiker niet beperkt in mogelijkheden.<\/p>\n<p>Hier zijn enkele van de mogelijke paden:<\/p>\n<ul>\n<li> \u00e9\u00e9n grote gemeenschappelijke cluster;<\/li>\n<li> een groot aantal kleine gespecialiseerde clusters;<\/li>\n<li> \u00e9\u00e9n cluster per applicatie;<\/li>\n<li> \u00e9\u00e9n cluster per omgeving.<\/li>\n<\/ul>\n<p>\nZoals hieronder weergegeven, bevinden de eerste twee benaderingen zich aan de tegenovergestelde uiteinden van de schaal van opties:<\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/99b8fd0d1e4173705e7996cf8ccb6eec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Van enkele grote clusters (links) tot een groot aantal kleine (rechts)<\/i><\/p>\n<p><i>In het algemeen wordt aangenomen dat een cluster 'groter' is dan een ander als het meer knooppunten en pods heeft. Bijvoorbeeld, een cluster met 10 knooppunten en 100 pods is groter dan een cluster met 1 knooppunt en 10 pods.<\/i><\/p>\n<p>Laten we beginnen!<\/p>\n<h2>1. E\u00e9n grote gedeelde cluster<\/h2>\n<p>\nDe eerste optie is om alle werkbelastingen in \u00e9\u00e9n cluster te plaatsen:<\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/283fc3c3f5ccb40a157ccff600628114.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>E\u00e9n grote cluster<\/i><\/p>\n<p>Binnen deze aanpak wordt de cluster gebruikt als een universeel <b>infrastructuurplatform<\/b> \u2014 alles wat je nodig hebt, kun je gewoon implementeren in de bestaande Kubernetes-cluster.<\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\">Namespaces<\/a><\/noindex> Kubernetes maakt het mogelijk om delen van de cluster logisch van elkaar te scheiden, zodat voor elke instance van de applicatie een eigen naamruimte kan worden gebruikt.<\/i><\/p>\n<p><i>Laten we de voor- en nadelen van deze aanpak bekijken.<\/i><\/p>\n<h3>+ Effectief gebruik van middelen<\/h3>\n<p>\nIn het geval van een enkele cluster is er slechts \u00e9\u00e9n kopie nodig van alle middelen die vereist zijn voor het draaien van de Kubernetes-cluster en het beheer ervan.<\/p>\n<p>Bijvoorbeeld, dit geldt voor master knooppunten. Gewoonlijk zijn er 3 master knooppunten per Kubernetes-cluster, dus voor \u00e9\u00e9n enkele cluster blijft dat aantal hetzelfde (ter vergelijking, 10 clusters hebben 30 master knooppunten nodig).<\/p>\n<p>De hierboven genoemde nuance geldt ook voor andere services die op het niveau van de hele cluster functioneren, zoals load balancers, Ingress controllers, authenticatiesystemen, logging en monitoring.<\/p>\n<p>In een enkele cluster kunnen al deze services direct voor alle werkbelastingen worden gebruikt (er hoeven geen kopie\u00ebn te worden gemaakt, zoals in het geval van meerdere clusters).<\/p>\n<h3>+ Goedkoopheid<\/h3>\n<p>\nAls gevolg van het bovenstaande zijn minder clusters meestal goedkoper, omdat er geen kosten zijn voor overbodige middelen.<\/p>\n<p>Dit geldt vooral voor master knooppunten, die aanzienlijke kosten met zich mee kunnen brengen, ongeacht de plaatsingsmethode (on-premises of in de cloud).<\/p>\n<p>Sommige beheerde (managed) Kubernetes-services, zoals <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">Google Kubernetes Engine (GKE)<\/a><\/noindex> of <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/\">Azure Kubernetes Service (AKS)<\/a><\/noindex>, bieden een gratis managementlaag. In dit geval is de vraag naar kosten minder dringend.<\/p>\n<p>Er zijn ook managed-diensten die een vast bedrag vragen voor het gebruik van elke Kubernetes-cluster (bijvoorbeeld, <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/eks\/\">Amazon Elastic Kubernetes Service, EKS<\/a><\/noindex>).<\/p>\n<h3>+ Effici\u00ebnt beheer<\/h3>\n<p>\nHet beheren van \u00e9\u00e9n cluster is eenvoudiger dan meerdere.<\/p>\n<p>Beheer kan de volgende taken omvatten:<\/p>\n<ul>\n<li> het updaten van de Kubernetes-versie;<\/li>\n<li> het instellen van een CI\/CD-pijplijn;<\/li>\n<li> het installeren van de CNI-plugin;<\/li>\n<li> het configureren van het gebruikersauthenticatiesysteem;<\/li>\n<li> het installeren van een toegangscontroller;<\/li>\n<\/ul>\n<p>\nen nog veel meer\u2026<\/p>\n<p>In het geval van \u00e9\u00e9n cluster hoeft u al deze taken maar \u00e9\u00e9n keer uit te voeren.<\/p>\n<p>Voor meerdere clusters moeten de operaties herhaaldelijk worden uitgevoerd, wat waarschijnlijk enige automatisering van processen en tools vereist om de systematiek en uniformiteit van het proces te waarborgen.<\/p>\n<p><i>Laten we nu eens kijken naar de nadelen.<\/i><\/p>\n<h3>\u2212 Enkele punten van falen<\/h3>\n<p>\nBij een storing <i>van de enige<\/i> cluster zullen meteen <i>all<\/i> de workloads uitvallen!<\/p>\n<p>Er zijn talloze scenario's waarin iets mis kan gaan:<\/p>\n<ul>\n<li> een update van Kubernetes leidt tot onverwachte bijwerkingen;<\/li>\n<li> een clustercomponent (bijvoorbeeld de CNI-plugin) functioneert niet zoals verwacht;<\/li>\n<li> een van de clustercomponenten is verkeerd geconfigureerd;<\/li>\n<li> er is een storing in de onderliggende infrastructuur.<\/li>\n<\/ul>\n<p>\nZo'n incident kan ernstige schade toebrengen aan alle workloads die zijn geplaatst in het gedeelde cluster.<\/p>\n<h3>\u2212 Gebrek aan strikte isolatie<\/h3>\n<p>\nWerken in een gedeeld cluster betekent dat applicaties hardware, netwerkcapaciteiten en het besturingssysteem op de clusterknopen gezamenlijk gebruiken.<\/p>\n<p>In zekere zin zijn twee containers met twee verschillende applicaties die op dezelfde knoop draaien vergelijkbaar met twee processen die op dezelfde machine worden uitgevoerd onder hetzelfde besturingssysteemkernel.<\/p>\n<p><i>Linux-containers bieden een zekere mate van isolatie, maar deze is lang niet zo sterk als die welke bijvoorbeeld door virtuele machines wordt geboden. In wezen is een proces in een container hetzelfde proces dat wordt uitgevoerd in het hostbesturingssysteem.<\/i><\/p>\n<p>Dit kan een probleem vormen op het gebied van beveiliging: een dergelijke opzet staat theoretisch niet-verwante applicaties toe om met elkaar te communiceren (opzettelijk of per ongeluk).<\/p>\n<p>Daarnaast delen alle werklasten in het Kubernetes-cluster bepaalde clusterbrede diensten, zoals <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/dns-pod-service\/\">DNS<\/a><\/noindex> \u2014 dit stelt applicaties in staat om de services van andere applicaties in de cluster te vinden.<\/p>\n<p><i>De hierboven genoemde punten kunnen verschillende betekenissen hebben, afhankelijk van de eisen die aan de beveiliging van applicaties worden gesteld.<\/i><\/p>\n<p>Kubernetes biedt verschillende tools om problemen in het beveiligingssysteem te voorkomen, zoals <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/\">PodSecurityPolicies<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">NetworkPolicies<\/a><\/noindex>. Voor een correcte configuratie is echter bepaalde ervaring vereist en bovendien kunnen ze niet alle beveiligingslekken volledig dichten.<\/p>\n<p>Het is belangrijk om altijd in gedachten te houden dat Kubernetes oorspronkelijk is ontworpen voor <i>gedeeld gebruik<\/i>, en niet voor <i>isolatie en veiligheid<\/i>.<\/p>\n<h3>\u2212 Gebrek aan strikte multi-tenancy<\/h3>\n<p>\nGezien de overvloed aan gedeelde middelen in het Kubernetes-cluster zijn er talloze manieren waarop verschillende applicaties \"elkaar in de weg kunnen zitten\".<\/p>\n<p>Bijvoorbeeld, een applicatie kan monopolies vormen op een bepaalde gedeelde hulpbron (zoals CPU of geheugen) en andere applicaties die op dezelfde node draaien van toegang tot die hulpbron beroven.<\/p>\n<p>Kubernetes biedt verschillende mechanismen om dit soort gedrag te controleren, zoals <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-compute-resources-container\/\">hulpbronverzoeken en limieten<\/a><\/noindex> <i>(zie ook het artikel \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\"> CPU-limieten en agressieve throttling in Kubernetes <\/a><\/noindex>) \u2014 bron: vert.<\/i>, <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\/\">ResourceQuotas<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/limit-range\/\">LimitRanges<\/a><\/noindex>. Zoals met beveiliging, is de configuratie ervan ook behoorlijk complex, en ze zijn niet in staat om alle onvoorziene bijwerkingen volledig te voorkomen.<\/p>\n<h3>\u2212 Veel gebruikers<\/h3>\n<p>\nIn het geval van een enkele cluster moet deze voor veel mensen toegankelijk worden gemaakt. En naarmate het aantal toeneemt, neemt ook het risico toe dat iemand iets \"verbreekt\".<\/p>\n<p>Binnen het cluster kan worden gecontroleerd wie wat kan doen via <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\">rolgebaseerde toegangscontrole (RBAC)<\/a><\/noindex> <i>(zie het artikel \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/470503\/\"> Gebruikers en RBAC-autorisatie in Kubernetes <\/a><\/noindex>) \u2014 bron: vert.<\/i>. Het voorkomt echter niet dat gebruikers \"iets breken\" binnen hun verantwoordelijkheidsgebied.<\/p>\n<h3>\u2212 Clusters kunnen niet onbeperkt groeien<\/h3>\n<p>\nEen cluster dat voor alle workloads wordt gebruikt, zal waarschijnlijk vrij groot zijn (qua aantal knooppunten en pods).<\/p>\n<p>Maar hier doet zich een ander probleem voor: clusters in Kubernetes kunnen niet onbeperkt groeien.<\/p>\n<p>Er is een theoretische limiet aan de grootte van een cluster. In Kubernetes bedraagt deze ongeveer <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\">5000 knooppunten, 150 duizend pods en 300 duizend containers<\/a><\/noindex>.<\/p>\n<p>Echter, in de echte wereld kunnen problemen veel eerder ontstaan - bijvoorbeeld al bij <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 knooppunten<\/a><\/noindex>.<\/p>\n<p>Het probleem is dat grote clusters een hoge belasting op de Kubernetes-besturinglaag veroorzaken. Met andere woorden, om een cluster operationeel te houden en de middelen effici\u00ebnt te gebruiken, is zorgvuldige configuratie vereist.<\/p>\n<p><i>Dit probleem wordt besproken in het betreffende artikel op de oorspronkelijke blog met de titel \"<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>Maar laten we de tegenovergestelde benadering bekijken: veel kleine clusters.<\/i><\/p>\n<h2>2. Veel kleine, gespecialiseerde clusters<\/h2>\n<p>\nBij deze benadering gebruikt u een afzonderlijk cluster voor elk te implementeren element:<\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/2320f62d945944f2e26f07252e9b8440.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Veel kleine clusters<\/i><\/p>\n<p>Voor de doeleinden van dit artikel wordt onder <i>een te implementeren element<\/i> een instantie van een applicatie verstaan \u2014 bijvoorbeeld de dev-versie van een afzonderlijke applicatie.<\/p>\n<p>In deze strategie wordt Kubernetes gebruikt als een gespecialiseerde <b>runtime-omgeving<\/b> voor afzonderlijke instanties van applicaties.<\/p>\n<p><i>Laten we de voor- en nadelen van deze aanpak bekijken.<\/i><\/p>\n<h3>+ Beperkte \"explosieradius\"<\/h3>\n<p>\nBij een 'falen' van de cluster zijn de negatieve gevolgen beperkt tot de workloads die in deze cluster zijn ge\u00efmplementeerd. Alle andere workloads blijven onaangetast.<\/p>\n<h3>+ Isolatie<\/h3>\n<p>\nWorkloads geplaatst in individuele clusters delen geen gemeenschappelijke middelen, zoals CPU, geheugen, besturingssysteem, netwerk of andere diensten.<\/p>\n<p>Hierdoor krijgen we strikte isolatie tussen niet-verwante applicaties, wat gunstig kan zijn voor hun veiligheid.<\/p>\n<h3>+ Weinig gebruikers<\/h3>\n<p>\nAangezien elk cluster slechts een beperkte set workloads bevat, neemt het aantal gebruikers met toegang tot het cluster af.<\/p>\n<p>Hoe minder mensen toegang hebben tot een cluster, hoe kleiner het risico dat er iets \"misgaat\".<\/p>\n<p><i>Laten we nu eens kijken naar de nadelen.<\/i><\/p>\n<h3>\u2212 Ineffici\u00ebnt gebruik van middelen<\/h3>\n<p>\nZoals eerder vermeld, heeft elk Kubernetes-cluster een bepaalde set bestuurlijke middelen nodig: master-knooppunten, controlelaagcomponenten, oplossingen voor monitoring en logging.<\/p>\n<p>Bij een groot aantal kleine clusters moet een groter deel van de middelen worden toegewezen aan beheer.<\/p>\n<h3>\u2212 Kostbaar<\/h3>\n<p>\nOneffici\u00ebnt gebruik van middelen leidt automatisch tot hoge kosten.<\/p>\n<p>Bijvoorbeeld, het beheren van 30 masterknooppunten in plaats van drie bij dezelfde rekenkracht zal onvermijdelijk invloed hebben op de kosten.<\/p>\n<h3>\u2212 Beheercomplexiteit<\/h3>\n<p>\nHet beheren van meerdere Kubernetes-clusters is veel moeilijker dan werken met \u00e9\u00e9n cluster.<\/p>\n<p>U moet bijvoorbeeld de authenticatie en autorisatie voor elk cluster configureren. Het updaten van de Kubernetes-versie moet ook meerdere keren gebeuren.<\/p>\n<p>Waarschijnlijk moet automatisering worden toegepast om de effici\u00ebntie van al deze taken te verhogen.<\/p>\n<p><i>Laten we nu minder extreme scenario's bekijken.<\/i><\/p>\n<h2>3. E\u00e9n cluster per applicatie<\/h2>\n<p>\nBij deze aanpak cre\u00ebert u een apart cluster voor alle instanties van een specifieke applicatie:<\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/238ee74d4e4dc42b7daeadc1ce484905.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Cluster per applicatie<\/i><\/p>\n<p>Deze route kan worden gezien als een uitbreiding van het principe \u2018<b>\u00e9\u00e9n cluster per team<\/b>\u2019, aangezien meestal een team ingenieurs verantwoordelijk is voor de ontwikkeling van \u00e9\u00e9n of meerdere applicaties.<\/p>\n<p><i>Laten we de voor- en nadelen van deze aanpak bekijken.<\/i><\/p>\n<h3>+ Cluster kan worden aangepast aan de applicatie<\/h3>\n<p>\nAls de applicatie speciale behoeften heeft, kunnen deze in het cluster worden ge\u00efmplementeerd zonder andere clusters te be\u00efnvloeden.<\/p>\n<p>Dergelijke vereisten kunnen workers met GPU, bepaalde CNI-plugins, service mesh of een andere service omvatten.<\/p>\n<p>Elk cluster kan worden aangepast aan de applicatie die erin draait, zodat het alleen bevat wat noodzakelijk is.<\/p>\n<h3>\u2212 Verschillende omgevingen in \u00e9\u00e9n cluster<\/h3>\n<p>\nNadeel van deze aanpak is dat instanties van applicaties uit verschillende omgevingen samenleven in \u00e9\u00e9n cluster.<\/p>\n<p>Bijvoorbeeld, de productieversie van de applicatie draait in hetzelfde cluster als de ontwikkelversie. Dit betekent ook dat ontwikkelaars hun werkzaamheden uitvoeren in hetzelfde cluster als waarin de productieversie van de applicatie draait.<\/p>\n<p>Als er door de acties van ontwikkelaars of bugs in de ontwikkelversie een storing in het cluster optreedt, kan dit mogelijk ook de productieversie schaden - een enorm nadeel van deze aanpak.<\/p>\n<p><i>En tot slot, het laatste scenario op onze lijst.<\/i><\/p>\n<h2>4. E\u00e9n cluster per omgeving<\/h2>\n<p>\nDit scenario omvat het toewijzen van een apart cluster voor elke omgeving:<\/p>\n<p><img decoding=\"async\" alt=\"Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn?\" src=\"\/wp-content\/uploads\/2020\/05\/157da599edf178832b1b15459786fbc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>E\u00e9n cluster per omgeving<\/i><\/p>\n<p>Bijvoorbeeld, u kunt clusters hebben <i>, maar volgt geen wijzigingen), gebruikmakend van een andere configuratie.<\/i>, <i>test<\/i> en <i>prod<\/i>, waarin u alle exemplaren van de applicatie zult draaien die zijn bedoeld voor een specifieke omgeving.<\/p>\n<p><i>Hier zijn de voor- en nadelen van deze benadering.<\/i><\/p>\n<h3>+ Isolatie van de prod-omgeving<\/h3>\n<p>\nBij deze aanpak zijn alle omgevingen van elkaar ge\u00efsoleerd. Dit is echter vooral belangrijk voor de prod-omgeving.<\/p>\n<p>Productieversies van de applicatie zijn nu niet afhankelijk van wat er in andere clusters en omgevingen gebeurt.<\/p>\n<p>Als er plotseling een probleem in het dev-cluster ontstaat, blijven de prod-versies van de applicaties werken alsof er niets aan de hand is.<\/p>\n<h3>+ Cluster kan worden afgestemd op de omgeving<\/h3>\n<p>\nElk cluster kan worden aangepast aan zijn omgeving. Bijvoorbeeld, men kan:<\/p>\n<ul>\n<li> ontwikkelings- en debugtools in het dev-cluster installeren;<\/li>\n<li> testframeworks en tools in het cluster installeren; <i>test<\/i>;<\/li>\n<li> krachtiger apparatuur en netwerken in het cluster gebruiken; <i>prod<\/i>.<\/li>\n<\/ul>\n<p>\nDit verhoogt zowel de effectiviteit van de ontwikkeling als van de operatie van de applicaties.<\/p>\n<h3>+ Beperking van de toegang tot de production-cluster<\/h3>\n<p>\nDe noodzaak om direct met de prod-cluster te werken komt niet vaak voor, zodat het mogelijk is om het aantal mensen dat toegang heeft aanzienlijk te beperken.<\/p>\n<p>Men kan nog verder gaan en mensen helemaal de toegang tot dit cluster ontzeggen, en alle implementaties uitvoeren met behulp van een geautomatiseerd CI\/CD-instrument. Deze aanpak minimaliseert het risico op menselijke fouten juist daar waar dat het meest kritisch is.<\/p>\n<p><i>Laten we nu eens kijken naar de nadelen.<\/i><\/p>\n<h3>\u2212 Afwezigheid van isolatie tussen applicaties<\/h3>\n<p>\nHet belangrijkste nadeel van deze aanpak is de afwezigheid van hardware- en resource-isolatie tussen applicaties.<\/p>\n<p>Onverwante applicaties delen samen de resources van het cluster: het systeemkern, de processor, het geheugen en enkele andere diensten.<\/p>\n<p>Zoals al eerder vermeld, kan dit potentieel gevaarlijk zijn.<\/p>\n<h3>\u2212 Niet in staat om afhankelijkheden van applicaties te isoleren<\/h3>\n<p>\nAls een applicatie speciale vereisten heeft, moeten deze in alle clusters worden vervuld.<\/p>\n<p>Bijvoorbeeld, als een applicatie een GPU nodig heeft, moet elk cluster minstens \u00e9\u00e9n worker met een GPU bevatten (ook al wordt deze alleen door die applicatie gebruikt).<\/p>\n<p>Het resultaat hiervan is dat we het risico lopen op hogere kosten en een ineffici\u00ebnt gebruik van resources.<\/p>\n<h2>Conclusie<\/h2>\n<p>\nMet een bepaalde set applicaties kunnen ze worden geplaatst in enkele grote clusters of in veel kleine.<\/p>\n<p>In dit artikel worden de voor- en nadelen van verschillende benaderingen besproken, van \u00e9\u00e9n grote globale cluster tot meerdere kleine en gespecialiseerde clusters:<\/p>\n<ul>\n<li> \u00e9\u00e9n grote algemene cluster;<\/li>\n<li> een groot aantal kleine gespecialiseerde clusters;<\/li>\n<li> \u00e9\u00e9n cluster per applicatie;<\/li>\n<li> \u00e9\u00e9n cluster per omgeving.<\/li>\n<\/ul>\n<p>\n<i>Dus, welke benadering moet je kiezen?<\/i><\/p>\n<p>Zoals gebruikelijk hangt het antwoord af van het gebruiksscenario: je moet de voor- en nadelen van verschillende benaderingen afwegen en de meest optimale optie kiezen.<\/p>\n<p>De keuze is echter niet beperkt tot de bovenstaande voorbeelden \u2014 je kunt elke combinatie ervan gebruiken!<\/p>\n<p>Bijvoorbeeld, je kunt voor elk team een paar clusters opzetten: een cluster voor ontwikkeling (met omgevingen <i>, maar volgt geen wijzigingen), gebruikmakend van een andere configuratie.<\/i> en <i>test<\/i>) en een cluster voor <i>production<\/i> (waar de productieomgeving zich zal bevinden).<\/p>\n<p>Op basis van de informatie in dit artikel kun je de voor- en nadelen dienovereenkomstig optimaliseren voor het specifieke scenario. Veel succes!<\/p>\n<h2>P.S.<\/h2>\n<p>\nLees ook op onze blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/484954\/\">Visuele gids voor het diagnosticeren van problemen in Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/480946\/\">Logboeken in Kubernetes (en daarbuiten) vandaag: verwachtingen en realiteit<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/478306\/\">Service Mesh: wat elke Software Engineer moet weten over de meest hyped technologie<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468679\/\">Veiligheidsbasis in Kubernetes: authenticatie, autorisatie, audit<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47Ontwerpen van Kubernetes-clusters: hoeveel moeten er zijn? | ProHoster","description":"Opmerking.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/80076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=80076"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/80076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/80077"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=80076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=80076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=80076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}