{"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\/de\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","title":{"rendered":"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Anmerkung des \u00dcbersetzers.<\/b>: Dieses Material stammt aus einem Bildungsprojekt <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">learnk8s<\/a><\/noindex> \u2014 eine Antwort auf die h\u00e4ufige Frage beim Entwerfen einer Infrastruktur auf Basis von Kubernetes. Wir hoffen, dass die ausreichend ausf\u00fchrlichen Beschreibungen der Vor- und Nachteile jeder Option Ihnen helfen, eine optimale Entscheidung auch f\u00fcr Ihr Projekt zu treffen.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/d3cc3b7e686e39032b1f02f3e8b6c46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>TL;DR<\/b>: Dieselbe Reihe von Workloads kann auf mehreren gro\u00dfen Clustern ausgef\u00fchrt werden (auf jeden Cluster entf\u00e4llt eine gro\u00dfe Anzahl von Workloads) oder auf vielen kleinen (mit einer geringen Anzahl von Workloads in jedem Cluster).<\/p>\n<p>Nachfolgend finden Sie eine Tabelle, die die Vor- und Nachteile jedes Ansatzes bewertet:<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/ab5b5fefc97c3befddbaeb0791f8a90d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBei der Verwendung von Kubernetes als Plattform f\u00fcr den Betrieb von Anwendungen tauchen oft mehrere grundlegende Fragen zur Feinabstimmung von Clustern auf:<\/p>\n<ul>\n<li> <i>Wie viele Cluster sollen verwendet werden?<\/i><\/li>\n<li> <i>Wie gro\u00df sollen sie sein?<\/i><\/li>\n<li> <i>Was soll jeder Cluster beinhalten?<\/i><\/li>\n<\/ul>\n<p>\nIn diesem Artikel versuche ich, all diese Fragen zu beantworten, indem ich die Vor- und Nachteile jedes Ansatzes analysiere.<\/p>\n<h2>Die Fragestellung<\/h2>\n<p>\nAls Softwareentwickler entwickeln und betreiben Sie wahrscheinlich gleichzeitig viele Anwendungen.<\/p>\n<p>Au\u00dferdem werden viele Instanzen dieser Anwendungen sicherlich in verschiedenen Umgebungen gestartet \u2013 zum Beispiel k\u00f6nnten dies sein <i>dev<\/i>, <i>test<\/i> und <i>prod<\/i>.<\/p>\n<p>Infolgedessen ergibt sich eine gesamte Matrix von Anwendungen und Umgebungen:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/f2a811fa82e1e433463ba25d29f837e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Anwendungen und Umgebungen<\/i><\/p>\n<p>Im obigen Beispiel sind 3 Anwendungen und 3 Umgebungen dargestellt, was insgesamt 9 m\u00f6gliche Szenarien ergibt.<\/p>\n<p>Jede Instanz einer Anwendung ist eine autarke Deployment-Einheit, mit der unabh\u00e4ngig von anderen gearbeitet werden kann.<\/p>\n<p><i>Beachten Sie, dass <b>Instanz einer Anwendung<\/b> kann aus mehreren <b>Komponenten<\/b>bestehen, wie Frontend, Backend, Datenbank usw. Bei einer Mikrodiensten-Anwendung w\u00fcrde die Instanz alle Mikrodienste umfassen.<\/i><\/p>\n<p>Infolgedessen haben Benutzer von Kubernetes mehrere Fragen:<\/p>\n<ul>\n<li> Sollten alle Instanzen einer Anwendung in einem Cluster betrieben werden?<\/li>\n<li> Sollte f\u00fcr jede Instanz einer Anwendung ein separater Cluster eingerichtet werden?<\/li>\n<li> Oder sollte vielleicht eine Kombination der oben genannten Ans\u00e4tze genutzt werden?<\/li>\n<\/ul>\n<p>\nAll diese Optionen sind durchaus machbar, denn Kubernetes ist ein flexibles System, das dem Benutzer keine M\u00f6glichkeiten nimmt.<\/p>\n<p>Hier sind einige m\u00f6gliche Ans\u00e4tze:<\/p>\n<ul>\n<li> ein gro\u00dfer gemeinsamer Cluster;<\/li>\n<li> viele kleine, spezialisierte Cluster;<\/li>\n<li> ein Cluster pro Anwendung;<\/li>\n<li> ein Cluster pro Umgebung.<\/li>\n<\/ul>\n<p>\nWie unten gezeigt, liegen die ersten beiden Ans\u00e4tze an den entgegengesetzten Enden des Spektrums:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/99b8fd0d1e4173705e7996cf8ccb6eec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Von wenigen gro\u00dfen Clustern (links) bis zu vielen kleinen (rechts)<\/i><\/p>\n<p><i>Im Allgemeinen gilt ein Cluster als \u201egr\u00f6\u00dfer\u201c als ein anderer, wenn die Summe seiner Knoten und Pods gr\u00f6\u00dfer ist. Zum Beispiel ist ein Cluster mit 10 Knoten und 100 Pods gr\u00f6\u00dfer als ein Cluster mit 1 Knoten und 10 Pods.<\/i><\/p>\n<p>Nun, lassen Sie uns anfangen!<\/p>\n<h2>1. Ein gro\u00dfer gemeinsamer Cluster<\/h2>\n<p>\nDie erste Option besteht darin, alle Workloads in einem Cluster zu hosten:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/283fc3c3f5ccb40a157ccff600628114.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ein gro\u00dfer Cluster<\/i><\/p>\n<p>Im Rahmen dieses Ansatzes wird der Cluster als universelle <b>Infrastrukturplattform<\/b> verwendet \u2013 alles Notwendige wird einfach in dem bestehenden Kubernetes-Cluster bereitgestellt.<\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\">Namespaces<\/a><\/noindex> In Kubernetes k\u00f6nnen Teile des Clusters logisch voneinander getrennt werden, sodass f\u00fcr jede Instanz der Anwendung ein eigenes Namensraum verwendet werden kann.<\/i><\/p>\n<p><i>Lassen Sie uns die Vor- und Nachteile dieses Ansatzes betrachten.<\/i><\/p>\n<h3>+ Effiziente Ressourcennutzung<\/h3>\n<p>\nIm Falle eines einzigen Clusters wird nur eine Kopie aller Ressourcen ben\u00f6tigt, die notwendig sind, um einen Kubernetes-Cluster zu starten und zu verwalten.<\/p>\n<p>Das gilt zum Beispiel f\u00fcr die Master-Knoten. Normalerweise gibt es f\u00fcr jeden Kubernetes-Cluster 3 Master-Knoten, sodass f\u00fcr einen einzelnen Cluster deren Anzahl gleich bleibt (zum Vergleich: 10 Cluster ben\u00f6tigen 30 Master-Knoten).<\/p>\n<p>Dieses Detail gilt auch f\u00fcr andere Dienste, die im gesamten Cluster betrieben werden, wie Lastenausgleicher, Ingress-Controller, Authentifizierungssysteme, Protokollierung und Monitoring.<\/p>\n<p>In einem einzigen Cluster k\u00f6nnen all diese Dienste sofort f\u00fcr alle Workloads verwendet werden (es m\u00fcssen keine Kopien erstellt werden, wie im Fall mehrerer Cluster).<\/p>\n<h3>+ Kosteneffizienz<\/h3>\n<p>\nDaraus ergibt sich, dass eine geringere Anzahl von Clustern normalerweise g\u00fcnstiger ist, da die Ausgaben f\u00fcr \u00fcberfl\u00fcssige Ressourcen entfallen.<\/p>\n<p>Das gilt insbesondere f\u00fcr Master-Knoten, die erhebliche Kosten verursachen k\u00f6nnen, unabh\u00e4ngig von der Art der Bereitstellung (On-Premises oder in der Cloud).<\/p>\n<p>Einige verwaltete Kubernetes-Dienste wie <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">Google Kubernetes Engine (GKE)<\/a><\/noindex> oder <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/\">Azure Kubernetes Service (AKS)<\/a><\/noindex>, bieten eine verwaltete Schicht kostenlos an. In diesem Fall sind die Kosten weniger kritisch.<\/p>\n<p>Es gibt auch verwaltete Dienste, die eine feste Geb\u00fchr f\u00fcr die Arbeit jedes Kubernetes-Clusters erheben (z. B. <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/eks\/\">Amazon Elastic Kubernetes Service, EKS<\/a><\/noindex>).<\/p>\n<h3>+ Effektive Verwaltung<\/h3>\n<p>\nEinen Cluster zu verwalten, ist einfacher als mehrere.<\/p>\n<p>Die Verwaltung kann folgende Aufgaben umfassen:<\/p>\n<ul>\n<li> Aktualisierung der Kubernetes-Version;<\/li>\n<li> Einrichtung der CI\/CD-Pipeline;<\/li>\n<li> Installation des CNI-Plugins;<\/li>\n<li> Konfiguration des Benutzerauthentifizierungssystems;<\/li>\n<li> Installation des Zugangscontrollers;<\/li>\n<\/ul>\n<p>\nund viele andere \u2026<\/p>\n<p>Im Fall eines Clusters muss man sich nur einmal um all dies k\u00fcmmern.<\/p>\n<p>Bei mehreren Clustern m\u00fcssen die Operationen jedoch mehrfach wiederholt werden, was wahrscheinlich eine gewisse Automatisierung der Prozesse und Werkzeuge erfordert, um Systematik und Einheitlichkeit zu gew\u00e4hrleisten.<\/p>\n<p><i>Jetzt ein paar Worte zu den Nachteilen.<\/i><\/p>\n<h3>\u2212 Einzelner Ausfallpunkt<\/h3>\n<p>\nIm Falle eines Ausfalls <i>des einzigen<\/i> Clusters werden sofort <i>Ressourcen) abgeschlossen ist, l\u00f6sen wir<\/i> alle Arbeitslasten nicht mehr funktionieren!<\/p>\n<p>Es gibt viele M\u00f6glichkeiten, wie etwas schiefgehen kann:<\/p>\n<ul>\n<li> Das Upgrade von Kubernetes f\u00fchrt zu unerwarteten Nebenwirkungen;<\/li>\n<li> Ein Clusterkomponente (z. B. ein CNI-Plugin) funktioniert nicht wie erwartet;<\/li>\n<li> Eine der Clusterkomponenten ist falsch konfiguriert;<\/li>\n<li> Ein Ausfall der zugrunde liegenden Infrastruktur.<\/li>\n<\/ul>\n<p>\nEin solcher Vorfall kann allen Arbeitslasten, die im gemeinsamen Cluster gehostet werden, erheblichen Schaden zuf\u00fcgen.<\/p>\n<h3>\u2212 Fehlende strikte Isolierung<\/h3>\n<p>\nDie Arbeit in einem gemeinsamen Cluster bedeutet, dass Anwendungen die Hardware, Netzwerkm\u00f6glichkeiten und das Betriebssystem auf den Clusterknoten gemeinsam nutzen.<\/p>\n<p>In gewisser Weise sind zwei Container mit zwei verschiedenen Anwendungen, die auf demselben Knoten laufen, \u00e4hnlich wie zwei Prozesse, die auf demselben Computer unter demselben Betriebssystem-Kernel laufen.<\/p>\n<p><i>Linux-Container bieten eine gewisse Form der Isolation, aber sie ist bei weitem nicht so stark wie die einer virtuellen Maschine. Im Wesentlichen ist ein Prozess im Container derselbe Prozess, der im Hostbetriebssystem ausgef\u00fchrt wird.<\/i><\/p>\n<p>Dies kann aus Sicherheitssicht problematisch sein: Eine solche Anordnung erm\u00f6glicht theoretisch, dass nicht verbundene Anwendungen miteinander interagieren (ob absichtlich oder versehentlich).<\/p>\n<p>Dar\u00fcber hinaus nutzen alle Arbeitslasten im Kubernetes-Cluster gemeinsam einige clusterweite Dienste wie <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/dns-pod-service\/\">DNS<\/a><\/noindex> \u2014 dies erm\u00f6glicht es Anwendungen, die Services anderer Anwendungen im Cluster zu finden.<\/p>\n<p><i>Die oben genannten Punkte k\u00f6nnen unterschiedliche Bedeutungen haben, abh\u00e4ngig von den an die Sicherheit der Anwendungen gestellten Anforderungen.<\/i><\/p>\n<p>Kubernetes bietet verschiedene Werkzeuge zur Vermeidung von Problemen im Sicherheitssystem, wie <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/\">PodSecurityPolicies<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">NetworkPolicies<\/a><\/noindex>. F\u00fcr ihre korrekte Einrichtung ist jedoch bestimmte Erfahrung erforderlich; zudem sind sie nicht in der Lage, alle Sicherheitsl\u00fccken zu schlie\u00dfen.<\/p>\n<p>Es ist wichtig, stets daran zu denken, dass Kubernetes urspr\u00fcnglich f\u00fcr <i>gemeinsame Nutzung<\/i>, nicht f\u00fcr <i>Isolation und Sicherheit<\/i>.<\/p>\n<h3>\u2212 Keine strikte Multi-Tenancy<\/h3>\n<p>\nAngesichts der F\u00fclle gemeinsamer Ressourcen im Kubernetes-Cluster gibt es viele M\u00f6glichkeiten, wie verschiedene Anwendungen \"einander in die Quere kommen\" k\u00f6nnen.<\/p>\n<p>Zum Beispiel kann eine Anwendung eine bestimmte gemeinsame Ressource (wie CPU oder Speicher) monopolieren und anderen Anwendungen, die auf demselben Knoten laufen, den Zugriff darauf verwehren.<\/p>\n<p>Kubernetes bietet verschiedene Mechanismen zur Kontrolle eines solchen Verhaltens, wie <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-compute-resources-container\/\">Ressourcens\u00e4tze und -limits<\/a><\/noindex> <i>(! siehe auch den Artikel \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\"> CPU-Grenzen und aggressives Throttling in Kubernetes <\/a><\/noindex>\u201c \u2014 Anm. d. \u00dc.)<\/i>, <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\/\">ResourceQuotas<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/limit-range\/\">LimitRanges<\/a><\/noindex>. Wie im Sicherheitsfall ist ihre Einrichtung jedoch relativ komplex, und sie k\u00f6nnen nicht alle unvorhergesehenen Nebenwirkungen verhindern.<\/p>\n<h3>\u2212 Eine gro\u00dfe Anzahl von Benutzern<\/h3>\n<p>\nBei einem einzelnen Cluster muss der Zugang f\u00fcr viele Personen ge\u00f6ffnet werden. Je mehr es sind, desto h\u00f6her ist das Risiko, dass sie etwas \u201ekaputtmachen\u201c.<\/p>\n<p>Innerhalb des Clusters kann kontrolliert werden, wer was tun kann, mithilfe von <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\">Rollenbasiertem Zugriffsmanagement (RBAC)<\/a><\/noindex> <i>(! siehe den Artikel \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/470503\/\"> Benutzer und RBAC-Authorization in Kubernetes <\/a><\/noindex>\u201c \u2014 Anm. d. \u00dc.)<\/i>. Es wird jedoch nicht verhindern, dass Benutzer innerhalb ihres Verantwortungsbereichs etwas \u201ekaputt machen\u201c.<\/p>\n<h3>\u2212 Cluster k\u00f6nnen nicht unbegrenzt wachsen<\/h3>\n<p>\nEin Cluster, der f\u00fcr alle Workloads verwendet wird, wird wahrscheinlich ziemlich gro\u00df sein (in Bezug auf die Anzahl der Knoten und Pods).<\/p>\n<p>Aber hier entsteht ein weiteres Problem: Cluster in Kubernetes k\u00f6nnen nicht unbegrenzt wachsen.<\/p>\n<p>Es gibt eine theoretische Grenze f\u00fcr die Gr\u00f6\u00dfe eines Clusters. In Kubernetes liegt diese bei etwa <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\">5000 Knoten, 150.000 Pods und 300.000 Container<\/a><\/noindex>.<\/p>\n<p>In der Praxis k\u00f6nnen jedoch die Probleme viel fr\u00fcher beginnen \u2014 zum Beispiel schon bei <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 Knoten<\/a><\/noindex>.<\/p>\n<p>Das Problem ist, dass gro\u00dfe Cluster eine hohe Belastung f\u00fcr die Steuerungsebene von Kubernetes darstellen. Mit anderen Worten, um einen Cluster betriebsf\u00e4hig zu halten und die Ressourcen effizient zu nutzen, ist eine sorgf\u00e4ltige Konfiguration erforderlich.<\/p>\n<p><i>Dieses Problem wird in dem entsprechenden Artikel im Originalblog mit dem Titel \u201e<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>Aber betrachten wir den gegenteiligen Ansatz: viele kleine Cluster.<\/i><\/p>\n<h2>2. Viele kleine, spezialisierte Cluster<\/h2>\n<p>\nBei diesem Ansatz verwenden Sie einen separaten Cluster f\u00fcr jedes bereitzustellende Element:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/2320f62d945944f2e26f07252e9b8440.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Viele kleine Cluster<\/i><\/p>\n<p>F\u00fcr die Zwecke dieses Artikels wird unter <i>bereitzustellendes Element<\/i> ein Anwendungsexemplar verstanden \u2014 zum Beispiel eine Entwicklungsversion einer separaten Anwendung.<\/p>\n<p>In dieser Strategie wird Kubernetes als spezialisierte <b>Laufzeitumgebung<\/b> f\u00fcr einzelne Anwendungsinstanzen verwendet.<\/p>\n<p><i>Lassen Sie uns die Vor- und Nachteile dieses Ansatzes betrachten.<\/i><\/p>\n<h3>+ Eingeschr\u00e4nkter<\/h3>\n<p>\nIm Falle eines \u201eAusfalls\u201c des Clusters beschr\u00e4nken sich die negativen Folgen nur auf die Workloads, die in diesem Cluster bereitgestellt wurden. Alle anderen Workloads bleiben unber\u00fchrt.<\/p>\n<h3>Im Falle eines \u201eAusfalls\u201c des Clusters sind die negativen Folgen auf die Arbeitslasten beschr\u00e4nkt, die in diesem Cluster bereitgestellt wurden. Alle anderen Workloads bleiben unber\u00fchrt.<\/h3>\n<p>\n+ Isolierung<\/p>\n<p>Arbeitslasten, die in separaten Clustern platziert sind, teilen sich keine gemeinsamen Ressourcen wie Prozessor, Speicher, Betriebssystem, Netzwerk oder andere Dienste.<\/p>\n<h3>Infolgedessen erhalten wir eine strenge Isolierung zwischen nicht verwandten Anwendungen, was sich positiv auf ihre Sicherheit auswirken kann.<\/h3>\n<p>\n+ Geringe Zahl an Nutzern<\/p>\n<p>Da jeder Cluster nur eine begrenzte Anzahl an Arbeitslasten enth\u00e4lt, verringert sich die Anzahl der Nutzer, die darauf zugreifen k\u00f6nnen.<\/p>\n<p><i>Je weniger Menschen Zugriff auf den Cluster haben, desto geringer ist das Risiko, dass etwas \u201ekaputt geht\u201c.<\/i><\/p>\n<h3>Schauen wir uns die Nachteile an.<\/h3>\n<p>\n- Ineffiziente Ressourcennutzung<\/p>\n<p>Wie bereits erw\u00e4hnt, ben\u00f6tigt jeder Kubernetes-Cluster eine bestimmte Menge an Steuerungsressourcen: Master-Knoten, Komponenten der Steuerungsebene, \u00dcberwachungs- und Protokollierungsl\u00f6sungen.<\/p>\n<h3>Bei einer gro\u00dfen Anzahl kleiner Cluster muss ein gr\u00f6\u00dferer Teil der Ressourcen f\u00fcr die Verwaltung aufgewendet werden.<\/h3>\n<p>\nEine ineffiziente Ressourcennutzung f\u00fchrt automatisch zu hohen Kosten.<\/p>\n<p>Zum Beispiel wird die Wartung von 30 Master-Knoten anstelle von drei bei gleicher Rechenleistung zwangsl\u00e4ufig Auswirkungen auf die Ausgaben haben.<\/p>\n<h3>\u2212 Schwierigkeiten bei der Verwaltung<\/h3>\n<p>\nDie Verwaltung einer Vielzahl von Kubernetes-Clustern ist viel komplizierter als die Arbeit mit einem einzigen.<\/p>\n<p>Sie m\u00fcssen zum Beispiel die Authentifizierung und Autorisierung f\u00fcr jedes Cluster einrichten. Auch die Aktualisierung der Kubernetes-Version wird mehrmals erforderlich sein.<\/p>\n<p>Wahrscheinlich werden Sie Automatisierung anwenden m\u00fcssen, um die Effizienz all dieser Aufgaben zu steigern.<\/p>\n<p><i>Schauen wir uns jetzt weniger extreme Szenarien an.<\/i><\/p>\n<h2>3. Ein Cluster f\u00fcr jede Anwendung<\/h2>\n<p>\nBei diesem Ansatz erstellen Sie einen separaten Cluster f\u00fcr alle Instanzen einer bestimmten Anwendung:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/238ee74d4e4dc42b7daeadc1ce484905.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Cluster f\u00fcr die Anwendung<\/i><\/p>\n<p>Dieser Weg kann als Verallgemeinerung des Prinzips \u201e<b>ein separater Cluster f\u00fcr jedes Team<\/b>\u201c betrachtet werden, da normalerweise ein Team von Ingenieuren an der Entwicklung einer oder mehrerer Anwendungen arbeitet.<\/p>\n<p><i>Lassen Sie uns die Vor- und Nachteile dieses Ansatzes betrachten.<\/i><\/p>\n<h3>+ Cluster k\u00f6nnen auf die Anwendung zugeschnitten werden<\/h3>\n<p>\nWenn eine Anwendung besondere Anforderungen hat, k\u00f6nnen diese im Cluster umgesetzt werden, ohne andere Cluster zu beeintr\u00e4chtigen.<\/p>\n<p>Solche Anforderungen k\u00f6nnen Worker mit GPU, bestimmte CNI-Plugins, Service-Mesh oder einen anderen Dienst umfassen.<\/p>\n<p>Jeder Cluster kann auf die Anwendung, die darin l\u00e4uft, angepasst werden, damit er nur das enth\u00e4lt, was ben\u00f6tigt wird.<\/p>\n<h3>\u2212 Verschiedene Umgebungen in einem Cluster<\/h3>\n<p>\nEin Nachteil dieses Ansatzes besteht darin, dass Instanzen von Anwendungen aus verschiedenen Umgebungen in einem Cluster koexistieren.<\/p>\n<p>Zum Beispiel l\u00e4uft die Produktionsversion einer Anwendung im selben Cluster wie die Entwicklungsversion. Dies bedeutet auch, dass die Entwickler in demselben Cluster arbeiten, in dem die Produktionsversion der Anwendung betrieben wird.<\/p>\n<p>Wenn es aufgrund der Aktivit\u00e4ten der Entwickler oder von Fehlern in der Entwicklungsversion zu einem Ausfall des Clusters kommt, k\u00f6nnte potenziell auch die Produktionsversion betroffen sein \u2013 ein erheblicher Nachteil dieses Ansatzes.<\/p>\n<p><i>Und schlie\u00dflich das letzte Szenario in unserer Liste.<\/i><\/p>\n<h2>4. Ein Cluster f\u00fcr jede Umgebung<\/h2>\n<p>\nDieses Szenario sieht die Zuweisung eines separaten Clusters f\u00fcr jede Umgebung vor:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes-Cluster entwerfen: Wie viele sollten es sein?\" src=\"\/wp-content\/uploads\/2020\/05\/157da599edf178832b1b15459786fbc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ein Cluster f\u00fcr jede Umgebung<\/i><\/p>\n<p>Zum Beispiel k\u00f6nnten Sie Cluster haben <i>dev<\/i>, <i>test<\/i> und <i>prod<\/i>, in denen Sie alle Instanzen der Anwendung starten, die f\u00fcr eine bestimmte Umgebung vorgesehen sind.<\/p>\n<p><i>Hier sind die Vor- und Nachteile eines solchen Ansatzes.<\/i><\/p>\n<h3>+ Isolation der Produktionsumgebung<\/h3>\n<p>\nIm Rahmen dieses Ansatzes sind alle Umgebungen voneinander isoliert. In der Praxis ist dies jedoch besonders f\u00fcr die Produktionsumgebung wichtig.<\/p>\n<p>Produktionsversionen der Anwendung sind nun nicht mehr von den Ereignissen in anderen Clustern und Umgebungen abh\u00e4ngig.<\/p>\n<p>Wenn im Entwicklungscluster pl\u00f6tzlich ein Problem auftritt, funktionieren die Produktionsversionen der Anwendungen weiter, als w\u00e4re nichts passiert.<\/p>\n<h3>+ Cluster k\u00f6nnen an die Umgebung angepasst werden<\/h3>\n<p>\nJeder Cluster kann an seine Umgebung angepasst werden. Zum Beispiel kann man:<\/p>\n<ul>\n<li> Entwicklungs- und Debugging-Tools im Entwicklungscluster installieren;<\/li>\n<li> Testframeworks und -tools im Cluster installieren; <i>test<\/i>;<\/li>\n<li> leistungsf\u00e4higere Hardware und Netzwerkkapazit\u00e4ten im Cluster nutzen. <i>prod<\/i>.<\/li>\n<\/ul>\n<p>\nDies erh\u00f6ht die Effizienz sowohl der Entwicklung als auch des Betriebs der Anwendungen.<\/p>\n<h3>+ Einschr\u00e4nkung des Zugangs zum Produktionscluster<\/h3>\n<p>\nDie Notwendigkeit, direkt mit dem Produktionscluster zu arbeiten, tritt nicht oft auf, sodass man den Personenkreis, der Zugriff darauf hat, erheblich einschr\u00e4nken kann.<\/p>\n<p>Man kann sogar noch weiter gehen und den Menschen den Zugang zu diesem Cluster ganz verweigern, w\u00e4hrend alle Deployments \u00fcber ein automatisiertes CI\/CD-Tool durchgef\u00fchrt werden. Ein solcher Ansatz minimiert das Risiko menschlicher Fehler dort, wo es am relevantesten ist.<\/p>\n<p><i>Jetzt ein paar Worte zu den Nachteilen.<\/i><\/p>\n<h3>\u2212 Fehlende Isolation zwischen Anwendungen<\/h3>\n<p>\nDer Hauptnachteil des Ansatzes ist das Fehlen von Hardware- und Ressourcenauslagen zwischen Anwendungen.<\/p>\n<p>Unabh\u00e4ngige Anwendungen nutzen gemeinsam die Ressourcen des Clusters: Betriebssystemkerne, Prozessoren, Speicher und einige andere Dienste.<\/p>\n<p>Wie bereits erw\u00e4hnt, kann dies potenziell gef\u00e4hrlich sein.<\/p>\n<h3>\u2212 Unm\u00f6glichkeit, Abh\u00e4ngigkeiten von Anwendungen zu lokalisieren<\/h3>\n<p>\nWenn eine Anwendung bestimmte Anforderungen hat, m\u00fcssen diese in allen Clustern erf\u00fcllt werden.<\/p>\n<p>Zum Beispiel, wenn eine Anwendung eine GPU ben\u00f6tigt, muss jeder Cluster mindestens einen Worker mit GPU enthalten (selbst wenn dieser nur von dieser Anwendung genutzt wird).<\/p>\n<p>Infolgedessen riskieren wir h\u00f6here Kosten und eine ineffiziente Nutzung der Ressourcen.<\/p>\n<h2>Fazit<\/h2>\n<p>\nBei Vorhandensein einer bestimmten Anzahl von Anwendungen k\u00f6nnen diese in mehreren gro\u00dfen Clustern oder in vielen kleinen untergebracht werden.<\/p>\n<p>In dem Artikel werden die Vor- und Nachteile verschiedener Ans\u00e4tze untersucht, von einem gro\u00dfen globalen Cluster bis hin zu mehreren kleinen und spezialisierten:<\/p>\n<ul>\n<li> ein gro\u00dfer gemeinsamer Cluster;<\/li>\n<li> viele kleine, spezialisierte Cluster;<\/li>\n<li> ein Cluster pro Anwendung;<\/li>\n<li> ein Cluster pro Umgebung.<\/li>\n<\/ul>\n<p>\n<i>Welchen Ansatz sollten wir also w\u00e4hlen?<\/i><\/p>\n<p>Wie \u00fcblich h\u00e4ngt die Antwort vom Nutzungsszenario ab: Man muss die Vor- und Nachteile verschiedener Ans\u00e4tze abw\u00e4gen und die optimalste Variante w\u00e4hlen.<\/p>\n<p>Die Auswahl beschr\u00e4nkt sich jedoch nicht auf die oben genannten Beispiele \u2013 jede Kombination kann eingesetzt werden!<\/p>\n<p>Zum Beispiel k\u00f6nnte man f\u00fcr jedes Team ein Paar Cluster einrichten: ein Cluster f\u00fcr die Entwicklung (in dem Umgebungen <i>dev<\/i> und <i>test<\/i>) und ein Cluster f\u00fcr <i>Produktion<\/i> (in dem sich die Produktionsumgebung befindet).<\/p>\n<p>Basierend auf den Informationen aus diesem Artikel k\u00f6nnen Sie die Vor- und Nachteile entsprechend dem spezifischen Szenario optimieren. Viel Erfolg!<\/p>\n<h2>P.S.<\/h2>\n<p>\nLesen Sie auch in unserem Blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/484954\/\">Visuelle Anleitung zur Fehlersuche in Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/480946\/\">Logs in Kubernetes (und nicht nur) heute: Erwartungen und Realit\u00e4t<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/478306\/\">Service Mesh: was jeder Software Engineer \u00fcber die angesagteste Technologie wissen sollte.<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468679\/\">Sicherheitsgrundlagen in Kubernetes: Authentifizierung, Autorisierung, Audit<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Quelle: <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.1.1 - 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\/de\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47Entwurf von Kubernetes-Clustern: Wie viele sollten es sein? | ProHoster","description":"z.B.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/80076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=80076"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/80076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/80077"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=80076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=80076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=80076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}