Alle 14 Tage aktuelle News aus der IT-Szene >
Im Gespräch über Kubernetes: Sascha Möllering von AWS.
Container als Technologie sind nicht neu, bereits im Jahr 2000 hat das Betriebssystem FreeBSD Jails eingeführt, ein Ansatz, bei dem das Betriebssystem partitioniert werden kann. Kurze Zeit später wurden im Linux Kernel Modifikationen für ähnliche Ansätze implementiert und im Jahre 2008 hat die Container-Technologie dann mit Docker einen weiteren Schub bekommen. Die Open Container Initiative definiert seit 2017 die drei wichtigen Standards Image-, Distribution- und Runtime-Spezifikationen.
Wir erleben seit einigen Jahren, dass die Akzeptanz von Container-Technologien immer weiter zunimmt: Anfangs haben vor allem Start-ups diese Technolgie genutzt, um ihre Compute-Ressourcen so effizient wie möglich zu nutzen. Nach und nach erkennen immer mehr Unternehmen die positiven Aspekte für ihre Arbeitslasten. Das betrifft aber nicht nur Microservice-Anwendungen, sondern auch hybride Anwendungen, Arbeitslasten für maschinelles Lernen (ML) und die Batch-Verarbeitung. Kunden wie Samsung, Expedia, KPMG, GoDaddy und Snap betreiben ihre Arbeitslasten in Containern auf AWS. Seit 2017 haben wir ein Wachstum von mehr als 750 Prozent bei Container Instanzen gesehen, die auf Amazon Elastic Container Service (Amazon ECS) laufen.
Die Sicherheit von Containern ist ein sehr wichtiges Thema, das bei jeder Diskussion über Container zur Sprache kommt. Dabei sind mehrere Aspekte zu beachten: die Sicherheit der darunterliegenden Infrastruktur, die Sicherheit der Anwendungen, die in den Containern laufen, die Sicherheit der Container Images, die Best Practices, die beim Bauen der Container beachtet werden müssen, und noch einige weitere Aspekte. Ganz besonders wichtig ist, dass Container eine sichere Basis benötigen, auf der sie laufen können. Das bedeutet, dass das Patch-Management ein wichtiger Aspekt der Sicherheitsmaßnahmen ist. Die Anwendungen, die in den Containern laufen, sollten beispielsweise keine Secrets enthalten, diese sollten beim Start übergeben werden. Vor dem Ablegen in einer Registry sollten die Container Images auf Sicherheitslücken überprüft werden. In dem Container selbst sollten die Anwendungen nicht mit root-Rechten laufen. Dies sind nur ein paar Beispiele, die zeigen sollen, dass Sicherheit bei Containern eine Herausforderung auf mehreren Ebenen ist.
AWS bietet mit Amazon Elastic Kubernetes Service (Amazon EKS) einen vollständig verwalteten Kubernetes-Service. EKS betreibt die Kubernetes-Control-Plane-Infrastruktur über mehrere AWS Verfügbarkeitszonen hinweg, erkennt und ersetzt automatisch ungesunde Knoten der Control-Plane und bietet bei Bedarf Upgrades und Patches ohne Ausfallzeiten. Weltweit bietet AWS 77 solcher Verfügbarkeitszonen, in 24 Regionen. Dabei beschreibt eine Region einen geografischen Standort mit mehreren Verfügbarkeitszonen. Eine Verfügbarkeitszone umfasst in diesem Zusammenhang ein oder mehrere eigene Rechenzentren mit redundanter Stromversorgung und Netzwerkanbindung.
Kubernetes ist eine Plattform zur Verwaltung von containerisierten Arbeitslasten, die beliebig angepasst werden kann und somit nahezu überall läuft. Der Fokus liegt auf der Automatisierung und deklarativer Konfiguration der angesprochenen containerisierten Anwendungen. 2014 wurde das Projekt als Open Source Software veröffentlicht. Die Cloud Native Computing Foundation (CNCF) hat eine Umfrage bei Unternehmen durchgeführt und festgestellt, dass 78% der befragten Unternehmen Kubernetes im produktiven Betrieb einsetzen. Ein wesentlicher Aspekt warum Kubernetes so erfolgreich ist, besteht in der sehr aktiven Entwickler-Community. Wie bereits beschrieben ist Kubernetes Open Source Software, somit kann jeder - ähnlich wie bei Linux - zum Projekt beitragen. Dies führt zu einer sehr schnellen Entwicklung neuer Features und Bugfixes und somit einer rasanten Entwicklung neuer Versionen. Ein weiterer Aspekt ist, dass Kubernetes auf vielen unterschiedlichen Plattformen läuft: Firmen können Cluster in ihrem eigenen Rechenzentrum aufsetzen, aber auch die Cloud dafür nutzen. Somit ist die Migration von Arbeitslasten aus dem eigenen Rechenzentrum in die Cloud denkbar einfach, da die genutzten Werkzeuge zur Orchestrierung vollständig gleich sind.
Die Geschwindigkeit der Entwicklung bei Kubernetes ist Vor- und Nachteil zugleich. Das Kubernetes-Projekt unterstützt die letzten drei Minor-Releases und vier mal im Jahr wird eine neue Version veröffentlicht. Das bedeutet, dass das Konzept der Long-term support (LTS)-Releases bei Kubernetes nicht existiert. Firmen stehen somit vor der Herausforderung, eines dauerhaften Aktualisierungszwangs. Darüber hinaus verschwindet die Komplexität mit Kubernetes nicht, sondern verlagert sich auf anderen Ebenen: die Implementierung und der Betrieb einer verteilte Anwendung ist immer noch eine anspruchsvolle Aufgabe. Firmen müssen auch im Kontext von Kubernetes es Konzept für das Management von Berechtigungen erarbeiten und wie die einzelnen Anwendungen voneinander separiert werden sollen.
Technologische Entwicklungen sind - gerade in einem solchen dynamischen Umfeld - schwierig vorherzusagen. In den unterschiedlichen Special Interest Groups (SIGs) wird von der Community an unterschiedlichen Projekten gearbeitet. Ein spannendes Themenfeld ist Federation: hierbei geht es um die Herausforderung, mehrere Kubernetes-Cluster zu verbinden und diese quasi als einen Cluster anzusprechen. Zur Zeit ist Kubernetes primär in Datacentern und der Cloud anzutreffen, doch auch Edge Computing und IoT sind interessante Einsatzbereiche. Mehr und mehr Firmen entscheiden sich für Container, um ihre Anwendungen einfacher und sicherer zu skalieren.
Aktuell sind Container bei der Software-Entwicklung sehr präsent. Wie bereits beschrieben, verschwindet die Komplexität bei Technologien wie Kubernetes nicht, sondern verlagert sich auf andere Ebenen. Der Trend geht ganz klar in die Richtung, dass die Komplexität für die Kunden reduziert und auf den Cloud-Anbieter verlagert wird. Ein erster Schritt hat AWS in diese Richtung mit Amazon EKS gemacht, da dieser Dienst die Verwaltung des Kubernetes-Clusters übernimmt. Dennoch mussten sich Kunden um die eigentlichen Knoten im Cluster kümmern, auf denen ihre Anwendungen laufen. Mit AWS Fargate wird einn weiterer Mechsnismus zur Komplexitätreduktion für Container-Anwendungen angeboten. Fargate macht die Bereitstellung und Verwaltung von Servern überflüssigund ermöglicht es, Ressourcen pro Anwendung festzulegen und zu bezahlen, und es verbessert die Sicherheit durch eingebaute Anwendungsisolation. Diese Art, Container zu betreiben, wird auch serverless genannt.