Kubernetes Container Cluster Orchestrierung und Scheduling

Kubernetes ist eine Open Source Container Cluster Management Software, die ursprünglich von Google entwickelt wurde und der Cloud Native Computing Foundation (eine Koop von Google mit der Linux Foundation) zur Verfügung gestellt wurde. Kubernetes wurde in der Entwicklung stark von einem umfangreichen Google Software System namens Borg beeinflusst, mit dem tausende von Googles Servern in den Rechenzentren rund um den Globus verwaltet werden und das es Google Ingenieuren ermöglicht, im Handumdrehen unfassbar viel Rechenpower aus den Rechenzentren des Konzerns zu reservieren und sie dort einzusetzen, wo sie sie gerade brauchen: Egal ob Tools wie die Google Suche, Gmail oder Google Maps.

Viele der Entwickler von Kubernetes haben vorher am Borg Projekt gearbeitet und mit Kubernetes haben nun viele Internet Unternehmen die Möglichkeit, Projekte in der Größe von Google Maßstäben zu entwickeln. Das Wort Kubernetes enstammt dem Altgriechischen und bedeutet etwa so viel wie Steuermann oder Pilot. Mit der Open Source Cluster Management Software Kubernetes lassen sich in Docker Container (wird auch bei Google Borg und seinem Nachfolger Google Omega verwendet) verpackte Software Applikation bequem über große verteilte Cloud Computersysteme deployen und orchestrieren.

Eine Besonderheit von Kubernetes ist dabei, dass es nicht nur relativ einfach in der Handhabung ist, sondern auch das Maximum aus der vorhandenen Rechenpower rausholen kann. Werden Software Applikationen in Docker Container auf verschiedenen Cluster Knoten wenig oder garnicht genutzt, kann Kubernetes diesen Cluster Knoten vorübergehend oder dauerhaft neue Aufgaben zuweisen und so vollautomatisch die vorhandenen Rechenleistung der Server oder Rechenzentren optimal auslasten.

Die Bausteine von Kubernetes

Kubernetes definiert einen Satz von primitiven Bausteinen ("Building Blocks"), die gemeinsam die Mechanismen für das Deployen, Aufrechterhalten und Skalieren von Cloud Applikationen bereitstellen. Die Kern Komponenten von Kubernetes sind lose gekoppelt und in einer gewissen Weise flexibel und erweiterbar, so dass eine große Bandbreite möglicher Lastszenarien abgedeckt werden kann. Die Kubernetes API stellt diesen Mechanismus sowohl den internen Komponenten zur Verfügung, als auch sämtlichen Erweiterungen und Containern, die auf Kubernetes laufen.

Kubernetes Pods

Die kleinste Grundeinheit bei Kubernetes nennt sich "Pod". Ein Kubernetes Pod besteht aus einem oder mehreren Containern, die auf einer Maschine laufen und sich deren Resourcen und eine einzigartige IP Adresse teilen. Pods können über die Kubernetes API einzeln verwaltet werden, oder Ihre Verwaltung kann an einen Controller abgetreten werden.

Kubernetes Labels und Selektoren

Mit Labels und Selektoren bietet die Kubernetes API einen zentralen Gruppierungsmechanismus, mit dem Pods oder Knoten zusammengefasst und addressiert werden können. Mit Label Selektoren kann in einer Abfrage, die ein wenig an SQL queries oder CSS Selektoren erinnert, festgelegt werden, welche Operationen auf welche Komponenten angewendet werden sollen. Labels werden als Key-Value Paare belibigen API Objekten , wie Pods oder Knoten, zugewiesen.

Kubernetes Controller

Ein Controller ist bei Kubernetes ein Mechanismus, der den aktuellen Cluster Zustand in einen gewünschten Cluster Zustand überführt. Es gibt verschiedene Arten von Controllern, etwa für die Replizierung oder Job Controller. Ein Controller verwaltet einen Satz von Pods, die er über Label Selektoren festgelegt werden.

Kubernetes Services

Ein Kubernetes Service ist ein Satz von Kubernetes Pods, die zusammenarbeiten. Der Satz an Pods, die einen Kubernetes Service ausmachen, wird über Label Selektoren festgelegt. Kubernetes bietet Service Discovery, DNS Namensauflösung für den Service sowie eine feste IP Adressierung. Standardmäßig sind Services nur innerhalb eines Clusters ansprechbar, können aber auch ausserhalb zugänglich gemacht werden.

Die Kubernetes Architektur

Kubernetes nutzt eine Master Slave Architektur und lässt sich grob unterteilen in Kubernetes Nodes (Knoten) und Kubernetes Control Plane, der zentralen Steurungseinheit.

Master Komponenten

Die Master Komponenten von Kubernetes sind Bestandteil des sogn. Cluster Control Plane. Hierzu gehören der kube-apiserver, der die Kubernetes API bereitstellt, etcd, welches alle Cluster Daten speichert, kube-controller-manager, eine ausführbare Datei, die Kubernetes Controller ausführt, Hintergrund Prozesses oder Threads, die Routine Aufgaben erledigen und der kube-scheduler, der neu instanziierte Pods überwacht und ihnen Kubernetes Nodes zuweist, auf denen sie laufen können. Weitere Komponenten sind in addons zusammengefasst, wie etwa DNS, User Interface (nicht zu verwechseln mit WEB UI, dem Browser basierten Dashboard, mit dem man Applications deployen kann und den ubernetes Cluster und seine Resourcen steuern kann), Container Resource Monitoring oder Cluster Level Logging.

Komponeneten eines Kubernetes Node

Ein Kubernetes Nodes ist der einzelne Rechner (oder virtuelle Maschine) eines Clusters, auf dem standardmäßig folgende Node Komponenten laufen: kubelet, der die einzelnen Pods des Nodes verwaltet, mounted, Container via Docker ausführt, Status Meldungen zwischen Pod und Node kapselt, kube-proxy, docker, rkt (eine experimentelle Docker alternative), supervisord und fluent.

Ihr Projekt mit Kubernetes

Was auch immer Sie mit Kubernetes aufziehen wollen - eine lokale Testumgebung oder eine global verteilte Enterprise Applikation - wir können Ihnen helfen. Sprechen Sie uns an und binden Sie unsere Experten von Anfang an in Ihr Team ein!

Unverbindliche Erstberatung

Wir bieten Ihnen Kubernetes unter anderem in folgenden Regionen an:

Aachen, Düsseldorf, Frankfurt, Hamburg, Hannover, Köln, Leverkusen, München, Münster, Stuttgart