{"id":18447,"date":"2021-03-22T11:46:00","date_gmt":"2021-03-22T10:46:00","guid":{"rendered":"https:\/\/www.sysbus.eu\/?p=18447"},"modified":"2021-03-16T10:57:40","modified_gmt":"2021-03-16T09:57:40","slug":"container-orchestrierung-mit-kubernetes-hart-steuerbord","status":"publish","type":"post","link":"https:\/\/www.sysbus.eu\/?p=18447","title":{"rendered":"Container-Orchestrierung mit Kubernetes: hart Steuerbord"},"content":{"rendered":"\n<p>Autor\/Redakteur: <a href=\"https:\/\/www.a1.digital\/\">Denis Arnst, Cloud Solution Architect bei A1 Digital<\/a>\/gg<\/p>\n\n\n\n<p>Die Container-Technologie ist die zu Ende gedachte Systemvirtualisierung. Ihr Einsatz wird immer mehr zum Mittel der Wahl in der Cloud. Ein Blick auf die Arbeitsteilung zwischen Entwickler und Systemadministrator ist aufschlussreich, will man die Popularit\u00e4t der Technologie begreifen. Bei der herk\u00f6mmlichen Bereitstellung einer neuen Anwendung sind die Entwickler sehr stark von den Systemadministratoren abh\u00e4ngig. Letztere m\u00fcssen daf\u00fcr sorgen, dass der neuen Anwendung die ben\u00f6tigten Ressourcen wie Sourcecode, Systembibliotheken, System-Tools und Laufzeitumgebung zur Verf\u00fcgung stehen. Durch Einsatz der Container-Technologie k\u00f6nnen Entwickler diesen Job selbst \u00fcbernehmen. Sie packen alle ben\u00f6tigten Komponenten zusammen mit der Anwendung in einen Container und liefern diesen an die System-Administratoren. Diese m\u00fcssen den fraglichen Container lediglich noch auf einer geeigneten Plattform ausf\u00fchren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"1024\" src=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-683x1024.jpg\" alt=\"\" class=\"wp-image-18448\" srcset=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-683x1024.jpg 683w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-200x300.jpg 200w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-768x1152.jpg 768w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-1024x1536.jpg 1024w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-1365x2048.jpg 1365w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-1320x1980.jpg 1320w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Denis-Arnst-scaled.jpg 1707w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/a><figcaption>Bild: A1 Digital<\/figcaption><\/figure>\n\n\n\n<!--more-->\n\n\n\n<p>Es erscheint so, als k\u00f6nnten System-Administratoren sich nun l\u00e4ssig zur\u00fccklehnen. Das trifft allerdings umso weniger zu, desto gr\u00f6\u00dfer die Anzahl der Container wird. Der eigentliche Einsatz von Containern ist manuell einfach zu erledigen, jedoch wird die Orchestrierung einer gr\u00f6\u00dferen Anzahl von Containern ohne entsprechende Hilfsmittel schnell zur Herausforderung. Eine solche Orchestrierung wird nicht nur durch die reine Anzahl von Containern erforderlich, sondern beispielsweise auch, um Funktionen wie Lastverteilung oder den Start zus\u00e4tzlicher Container-Klone zu erm\u00f6glichen, die helfen Spitzenlasten abzufangen.<\/p>\n\n\n\n<p><strong>Chefsteuermann Kubernetes<\/strong><\/p>\n\n\n\n<p>Das beliebteste Hilfsmittel zur Container Orchestrierung ist Kubernetes, auch bekannt als K8s. Mit diesem System k\u00f6nnen Systemadministratoren die Bereitstellung, Skalierung und Verwaltung von Containern automatisieren. Kubernetes ist au\u00dferordentlich leistungsstark. Die Plattform erm\u00f6glicht unter anderem:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Lastverteilung: Wenn ein Container (zu) starken Datenverkehr erf\u00e4hrt, ist Kubernetes in der Lage, die Last auszugleichen und den Netzwerkverkehr so zu verteilen, dass der gelieferte Service stabil bleibt. Bei Bedarf kann Kubernetes auch einen zus\u00e4tzlichen Container-Klon starten, um die zus\u00e4tzliche Last abzufangen.<\/li><li>Speicherbereitstellung: Mit Kubernetes k\u00f6nnen Systemadministratoren einem Container automatisch den ben\u00f6tigten Speicher zur Verf\u00fcgung stellen. Dabei spielt es keine Rolle, ob es sich um eine Speicherinfrastruktur im eigenen Rechenzentrum, die Public Cloud oder eine Hybridform handelt.<\/li><li>Selbstreparatur: Kubernetes kann \u201egecrashte\u201c Container neu starten, Container ersetzen oder Container abschalten, die nicht innerhalb vorher bestimmter Parameter arbeiten.<\/li><li>Automatische Rollouts und Rollbacks: Systemadministratoren k\u00f6nnen Kubernetes beispielsweise so konfigurieren, dass es neue Container f\u00fcr ein Deployment erstellt, bestehende Container entfernt und alle deren Ressourcen in einen neuen Container \u00fcbernimmt.<\/li><\/ul>\n\n\n\n<p>Kubernetes stellt eine enorme Arbeitserleichterung f\u00fcr Systemadministratoren dar. Mit der Plattform l\u00e4sst sich ein bisher kaum vorstellbares Niveau an Automatisierung erreichen. Es gilt allerdings zu bedenken, dass der Umgang mit Kubernetes umfangreiches Spezialwissen erfordert und Systemadministratoren umlernen m\u00fcssen, weil keiner der ihnen bekannten Prozesse wie die Bereitstellung von Rechen-, Netzwerk- oder Speicherressourcen auf dieselbe Weise verl\u00e4uft wie in traditionellen Umgebungen. Und selbst wenn das IT-Team \u00fcber das erforderliche Spezialwissen verf\u00fcgt, sind Aufbau und Unterhalt des ben\u00f6tigten Kubernetes-Clusters alles andere als eine Kleinigkeit.<\/p>\n\n\n\n<p><strong>Wer steuert den Steuermann?<\/strong><\/p>\n\n\n\n<p>Der wesentliche Punkt, weshalb Einsatz und Unterhalt eines Kubernetes-Clusters sich als komplexe Herausforderung erweisen kann ist, schlicht gesagt, dass auch Kubernetes nat\u00fcrlich nicht im luftleeren Raum stattfindet und auf eine dezidierte (Hardware-) Infrastruktur angewiesen ist. Auf vergleichsweise abstrakter Ebene sind vor allem Pods, Nodes, Master Nodes und Cluster selbst zu nennen.<\/p>\n\n\n\n<p>Ein Pod ist die kleinste Einheit, die von Kubernetes verwaltet werden kann. Es handelt sich um eine logische Gruppe mit einem oder mehreren Containern, die dieselbe IP-Adresse haben. Ihr wesentlicher Zweck besteht darin, die gemeinsam genutzten Prozesse zu unterst\u00fctzen, wie zum Beispiel einen Anwendungsserver und seinen lokalen Cache. Ein Node oder Knoten ist eine physische oder virtuelle Maschine, auf der Kubernetes installiert ist. In einem Knoten werden die Container innerhalb der Pods von Kubernetes gestartet. Ein Cluster ist eine Gruppe von Knoten, die aneinandergekoppelt sind. Selbst wenn ein Knoten ausf\u00e4llt, ist die entsprechende Anwendung weiterhin von den anderen Knoten aus erreichbar. Die Verwendung mehrerer Knoten hilft zudem dabei, die Rechenlast zu verteilen.<\/p>\n\n\n\n<!--nextpage-->\n\n\n\n<p>Die zentrale Rolle innerhalb des Clusters kommt dem Master Node zu. Dieser ist f\u00fcr die Verwaltung des Clusters verantwortlich, speichert die Informationen \u00fcber die Mitglieder des Clusters und \u00fcberwacht diese. Wenn ein Knoten ausf\u00e4llt, k\u00fcmmert sich der Master Node darum, die Arbeitslast des ausgefallenen Knotens auf einen anderen zu verschieben oder auf andere zu verteilen.<\/p>\n\n\n\n<p>Nicht nur ist die Koordination dieser vier wesentlichen Module eines Kubernetes-Clusters alles andere als trivial. Die einzelnen Elemente weisen zudem eine nicht zu untersch\u00e4tzende interne Komplexit\u00e4t auf. Ein Master Node beispielsweise umfasst seinerseits wiederum einen API-Server, einen Controller Manager, den ETCD und einen Scheduler.<\/p>\n\n\n\n<p>Auf dem Master Node befindet sich eine Komponente, die die APIs bereitstellt, mit deren Hilfe Anwendungen miteinander kommunizieren k\u00f6nnen. Sie bildet das Front-End f\u00fcr die Kubernetes-Kontrollebene und skaliert horizontal, das hei\u00dft, sie skaliert mit der Anzahl bereitgestellter Instanzen. Die Benutzer, Verwaltungsger\u00e4te und Befehlszeilenschnittstellen sprechen alle mit dem API-Server, um mit dem Kubernetes-Cluster zu interagieren. Der ETCD ist ein konsistenter und hochverf\u00fcgbarer Schl\u00fcsselwertspeicher (Key value Store). Er speichert die Konfigurationsinformationen, die von jedem der Knoten im Cluster verwendet werden k\u00f6nnen und nur f\u00fcr den Kubernetes-API-Server direkt zug\u00e4nglich ist, da er einige sensible Informationen enthalten kann.<\/p>\n\n\n\n<p>Der Controller Manager ist eine Komponente auf dem Master Node, auf dem verschiedenen Controller laufen. Dazu geh\u00f6ren der Node Controller, der f\u00fcr die \u00dcberwachung der Nodes verantwortlich ist, der Endpoints Controller der die genutzten Dienste mit den relevanten Pods verkn\u00fcpft und der Replication Controller, der f\u00fcr die richtige Anzahl von Pods f\u00fcr jedes Replikationsobjekt (Replica) im System verantwortlich ist.<\/p>\n\n\n\n<p>Der Scheduler schlie\u00dflich ist ein Dienst des Kubernetes-Masters, der f\u00fcr die Verteilung der Arbeitslast oder Container auf mehrere Knoten verantwortlich ist. Er beh\u00e4lt die Auslastung auf den Cluster-Knoten im Auge und platziert die Arbeitslast auf den verf\u00fcgbaren Ressourcen. Anders ausgedr\u00fcckt, handelt es sich um den Mechanismus, der f\u00fcr die Zuweisung von Pods zu verf\u00fcgbaren Knoten verantwortlich ist.<\/p>\n\n\n\n<p>Das Gesagte f\u00fchrt vor Augen, \u00fcber welche Komplexit\u00e4t die einzelnen Module eines Kubernetes-Clusters verf\u00fcgen. Nicht nur m\u00fcssen all diese Komponenten eingerichtet und ihre Beziehungen untereinander geregelt werden. Dar\u00fcber hinaus fallen vergleichsweise traditionelle Unterhaltsarbeiten f\u00fcr das IT-Team an. Ein gro\u00dfer Teil dieser Arbeiten besteht aus der Verwaltung des Lebenszyklus von Knoten, der Bereitstellung neuer Hosts und daraus, die Hosts mit den neuesten Betriebssystem-Patches und Container-Laufzeitversionen auf dem aktuellen Stand zu halten.<\/p>\n\n\n\n<p><strong>Kubernetes auf Autopilot<\/strong><\/p>\n\n\n\n<p>Addiert man zu dieser Komplexit\u00e4t noch die Knappheit qualifizierter IT-Fachleute hinzu, dr\u00e4ngt sich die Alternative auf, Kubernetes als Managed Service zu nutzen. Wird Kubernetes als Managed Service genutzt, profitiert ein Unternehmen von allen Vorteilen der Technologie, ohne durch die zugrundeliegende Komplexit\u00e4t \u00fcberfordert zu werden.<\/p>\n\n\n\n<p>Auch bei der Nutzung von Kubernetes als Manged Service gibt es einige Dinge zu beachten. In erster Linie gilt es, wie bei anderen Cloud-Diensten auch, auf eine verl\u00e4ssliche Infrastruktur zu achten, welche die Einhaltung der DSGVO wirklich gew\u00e4hrleisen kann. Mit anderen Worten: einen bew\u00e4hrten Provider aus der EU mit rein europ\u00e4ischem Backbone.<\/p>\n\n\n\n<p>Unternehmen auf der Suche nach einem Anbieter, der Kubernetes als Managed Service anbietet, m\u00fcssen sich \u00fcberlegen, welche Prozesse sie in die Verantwortlichkeit des Providers legen wollen. Dabei gilt es die Bequemlichkeit eines Komplettservices mit den Vorteilen abzuw\u00e4gen, die sich ergeben, wenn man bestimmte Prozesse in eignen H\u00e4nden h\u00e4lt. Dabei hat sich ein gewisser \u201eSweet Spot\u201c ergeben, eine Kombination, die als Best Practice f\u00fcr die meisten Unternehmen gelten kann, die Kubernetes als Managed Service nutzen wollen.<\/p>\n\n\n\n<p>Im Rahmen dieser Best Practice \u00fcbernimmt der Provider die Installation und Administration der Kubernetes Plattform. Das ist die Minimalanforderung, um die oben genannte Komplexit\u00e4t bei Aufbau und Betrieb eines Kubernetes-Clusters zu vermeiden. Dar\u00fcber hinaus sollte der Provider das Backup und Scaling der Kubernetes-Plattform \u00fcbernehmen sowie die Bereitstellung der Rechenressourcen f\u00fcr die Nodes. Das Deployment sowie die Konfiguration f\u00fcr die Skalierung der Anwendungen muss in jedem Fall in H\u00e4nden des Unternehmens selbst bleiben.<\/p>\n\n\n\n<p>Nicht zuletzt sollte man darauf achten, durch die Nutzung von Kubernetes als Managed Service nicht wichtige Vorteile der Technologie zu verlieren, n\u00e4mlich Flexibilit\u00e4t und Wahlfreiheit. Manche Anbieter von Managed Kubernetes Services lassen ihren Kunden keine oder kaum eine Wahl bei den zu verwendenden Betriebssystemen und Container-Software. Auch bei L\u00f6sungen, die Kubernetes erg\u00e4nzen, gilt es, sich die Wahlfreiheit zu erhalten. Das hei\u00dft, der Anbieter sollte eine Auswahl an L\u00f6sungen zum Beispiel f\u00fcr Container Lifecycle Management, Monitoring, Backup, CI\/CD, Security sowie Logging &amp; Registration bereitstellen.<\/p>\n\n\n\n<p>Container-Technologie ist aktuell der wahrscheinlich wichtigste Trend in der Cloud. Die konsequenteste Weise, diese Technologie zu nutzen, ist ihr Einsatz als Managed Service. Andernfalls handelt sich eine IT-Abteilung wahrscheinlich mehr Probleme ein, als sie durch Kubernetes l\u00f6st.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Container-Technologie ist die zu Ende gedachte Systemvirtualisierung. Ihr Einsatz wird immer mehr zum Mittel der Wahl in der Cloud. Ein Blick auf die Arbeitsteilung zwischen Entwickler und Systemadministrator ist aufschlussreich, will man die Popularit\u00e4t der Technologie begreifen. Bei der herk\u00f6mmlichen Bereitstellung einer neuen Anwendung sind die Entwickler sehr stark von den Systemadministratoren abh\u00e4ngig. Letztere m\u00fcssen daf\u00fcr sorgen, dass der neuen Anwendung die ben\u00f6tigten Ressourcen wie Sourcecode, Systembibliotheken, System-Tools und Laufzeitumgebung zur Verf\u00fcgung stehen. Durch Einsatz der Container-Technologie k\u00f6nnen Entwickler diesen Job selbst \u00fcbernehmen. Sie packen alle ben\u00f6tigten Komponenten zusammen mit der Anwendung in einen Container und liefern diesen an die System-Administratoren. Diese m\u00fcssen den fraglichen Container lediglich noch auf einer geeigneten Plattform ausf\u00fchren.<\/p>\n","protected":false},"author":3,"featured_media":18448,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[8,18],"tags":[10809,4185,2540,3137,14748,7360,9619,4010],"class_list":["post-18447","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artikel","category-virtualisierung","tag-a1-digital","tag-api","tag-cluster","tag-container","tag-etcd","tag-kubernetes","tag-node","tag-scheduler"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/18447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18447"}],"version-history":[{"count":1,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/18447\/revisions"}],"predecessor-version":[{"id":18449,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/18447\/revisions\/18449"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/media\/18448"}],"wp:attachment":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}