Kubernetes (Software)

Was ist Kubernetes?

Kubernetes (im Allgemeinen als “K8s” bezeichnet) ist ein Open-Source-Container-Orchestrierungssystem zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Urspr├╝nglich wurde es von Google entwickelt und wird jetzt von der Cloud Native Computing Foundation verwaltet.

Ziel

Ziel ist es, eine Plattform f├╝r die Automatisierung der Bereitstellung, Skalierung und des Betriebs von Anwendungs-Containern ├╝ber Host-Cluster bereitzustellen. Seit seiner ersten Ver├Âffentlichung funktioniert Kubernetes mit einer Reihe von entsprechenden Container-Tools, einschlie├člich Docker.

Entstehung

Der Begriff Kubernetes stammt aus dem Griechischen und bedeutet so viel wie “Kapit├Ąn” oder “Steuermann” und wurde von den Herren Joe Beda, Craig McLuckie und Brendan Burns gegr├╝ndet, denen rasch andere Google-Ingenieure, darunter auch Brian Grant und Tim Hockin, folgten und wurde erstmals von Google im Jahr 2014 angek├╝ndigt. Seine Entwicklung und sein Design sind stark von Googles Borg-System und vielen der Hauptakteure des Projekts, das zuvor mit Borgs gearbeitet hat, beeinflusst. Der urspr├╝ngliche Codename f├╝r Kubernetes in Google war Projekt Seven, ein Verweis auf die Star Trek-Figur von Seven of Nine, die ein “freundlicherer” Borg ist. Die sieben Speichen auf dem Rad des Kubernetes-Logo sind eine Anspielung auf diesen Codenamen.

Kubernetes Version 1.0 wurde am 21.07.2015 ver├Âffentlicht. Neben der Ver├Âffentlichung gr├╝ndete Google mit der Linux Foundation die Cloud Native Computing Foundation (CNCF) und bot K8s als Seed-Technologie an. Am 06.03.2018 erreichte K8s Projekt bei GitHub den neunten Platz und bei Autoren und Ausgaben den zweiten Platz beim Linux-Kernel.

Design

Kubernetes definiert eine Reihe von Bausteinen, sogenannte Grundelemente, die gemeinsam Mechanismen bereitstellen, mit denen Anwendungen basierend auf CPU, Arbeitsspeicher oder benutzerdefinierter Metriken bereitgestellt, verwaltet und skaliert werden. Es ist lose gekoppelt und erweiterbar, um unterschiedliche Workloads zu bew├Ąltigen. Diese Erweiterung wird zu einem gro├čen Teil von der Kubernetes-API bereitgestellt, die sowohl von internen Komponenten als auch von Containern verwendet wird, die auf K8s laufen.

Pods

Die grundlegende Planungseinheit ist eine Pod. Es f├╝gt eine h├Âhere Abstraktionsebene hinzu, indem Container-Komponenten gruppiert werden. Ein Pod besteht aus einem oder mehreren Containern, die sich garantiert auf dem Host-Computer befinden und Ressourcen gemeinsam nutzen k├Ânnen.

Jedem Pod wird innerhalb des Clusters eine eindeutige Pod-IP-Adresse zugewiesen, sodass Anwendungen Ports ohne Konfliktrisiko verwenden k├Ânnen. Innerhalb des Pods k├Ânnen sich alle Container auf Localhost (definierter Domainname einer virtuellen IP-Adresse per Internetstandard) gegenseitig referenzieren. Ein Container innerhalb eines Pods hat jedoch keine M├Âglichkeit, einen anderen Container innerhalb eines anderen Pods direkt anzusprechen. Dazu muss die IP-Adresse des Pods verwendet werden.

Ein Anwendungsentwickler sollte jedoch niemals die IP-Adresse des Pods verwenden, um eine Funktion in einem anderen Pod zu referenzieren oder aufzurufen, da die IP-Adressen des Pods kurzlebig sind. Dem Pod, auf den er sich bezieht, kann beim Neustart eine andere Pod-IP-Adresse zugwiesen werden. Stattdessen sollten sie einen Verweis auf einen Dienst verwenden, der einen verweis auf den Ziel-Pod an der spezifischen Pod-IP-Adresse enth├Ąlt.

Ein Pod kann einen Speicher definieren, z.┬áB. ein lokales Festplattenverzeichnis oder eine Netzwerkfestplatte und es den Containern im Pod zur Verf├╝gung stellen. Pods k├Ânnen manuell ├╝ber die Kubernetes-API verwaltet werden oder ihre Verwaltung an einen Controller delegieren. Diese Datentr├Ąger sind auch die Basis f├╝r die Funktionen von ConfigMaps (um Zugriff auf die Konfiguration ├╝ber das f├╝r den Container sichtbare Dateisystem zu gew├Ąhren) und Secrets (um Zugriff auf Anmeldeinformationen zu gew├Ąhren, die f├╝r den sicheren Zugriff auf Remote-Ressourcen erforderlich sind, indem diese Anmeldeinformationen nur im Dateisystem angezeigt werden).

Labels und Selektoren

Mit Kubernetes k├Ânnen Clients (Benutzer oder interne Komponenten) Schl├╝sselwertpaare, sogenannte “Labels”, an jedes API-Objekt im System (z.┬áB. Pods und Knoten) anh├Ąngen. Entsprechend sind “Label-Selektoren” Abfragen gegen Labels, die zu ├╝bereinstimmenden Objekten aufgel├Âst werden. Wenn ein Service definiert ist, k├Ânnen die Label-Selektoren festgesetzt werden, die vom Service-Router oder Load-Balancer verwendet werden, um die Pod-Instanzen auszuw├Ąhlen, zu denen der Datenverkehr geleitet wird.

Durch einfaches Wechseln der Labels der Pods oder ├Ąndern der Label-Selektoren des Dienstes, kann gesteuert werden, welche Pods den Verkehr erhalten und welche nicht. Dies kann zur Unterst├╝tzung verschiedener Bereitstellungsmuster wie blau-gr├╝ner Bereitstellungen oder AB-Tests verwendet werden. Diese F├Ąhigkeit, dynamisch zu steuern, wie Dienste Implementierungs-Ressourcen nutzen, sorgt f├╝r eine lose Kopplung innerhalb der Infrastruktur.

Controller

Ein Controller ist eine Abgleichschleife, die den tats├Ąchlichen Clusterstatus auf den gew├╝nschten Clusterstatus ausrichtet. Dies geschieht durch die Verwaltung einer Reihe von Pods. Eine Art von Controller ist ein Replikationscontroller, der die Replikation und Skalierung durch das Ausf├╝hren einer angegebenen Anzahl von Kopien eines Pods im gesamten Cluster ├╝bernimmt. Er behandelt auch das Erstellen von Ersatz-Pods, wenn der zugrunde liegende Knoten ausf├Ąllt.

Andere Controller, die Teil des Kern-Kubernetes-Systems sind, umfassen einen “DaemonSet-Controller” zum genauen Ausf├╝hren eines Pods auf jeder Maschine (oder einer Teilmenge von Maschinen) und einen “Job-Controller” zum Ausf├╝hren von Pods, die zum Abschluss laufen, z.┬áB. als Teil eines Batch-Jobs. Die von einem Controller verwalteten Pods werden von Label-Selektoren bestimmt, die Teil der Controller-Definition sind.

Services

Ein Kubernetes-Dienst besteht aus einer Gruppe von Pods, die zusammenarbeiten, z.┬áB. eine Schicht einer mehrschichtigen Anwendung. Die Gruppe von Pods, die einen Dienst ausmachen, wird durch einen Etikettenw├Ąhler definiert. K8s bietet zwei Arten der Dienstermittlung, indem Umgebungsvariablen oder K8s-DNS verwendet werden. Die Dienstermittlung weist dem Dienst eine stabile IP-Adresse und einen DNS-Namen zu und verteilt den Netzwerkverkehr dieser IP-Adresse auf eine Round-Robin-Art zwischen den Pods, die mit dem Selektor ├╝bereinstimmen (selbst wenn Fehler dazu f├╝hren, dass sich die Pods von Maschine zu Maschine bewegen).

Standardm├Ą├čig wird ein Dienst innerhalb eines Clusters verf├╝gbar gemacht (z.┬áB. k├Ânnen Back-End-Pods in einem Dienst gruppiert werden, wobei die Anforderungen der Frond-End-Pods zwischen ihnen ausgeglichen werden). Ein Dienst kann jedoch auch au├čerhalb eines Clusters (z.┬áB. f├╝r Clients) bereitgestellt werden, um Front-End-Pods zu erreichen.

Kubernetes Cloud Services

Kubernetes wird als Dienst f├╝r mehrere ├Âffentliche Clouds angeboten, einschlie├člich Amazon Web Services, Microsoft Azure, DigitalOcean und Google Kubernetes Engine in der Google Cloud-Plattform, IBM Cloud, Alibaba Cloud und Mail.Ru Cloud Solutions.

Architektur

Kubernetes folgt der Master-Slave-Architektur. Die Komponenten von K8s k├Ânnen in diejenigen unterteilt werden, die einen einzelnen Knoten verwalten und solche, die Teil der Steuerebene sind.

Der K8s Master ist die Hauptsteuereinheit des Clusters. Er verwaltet seine Arbeitslast und leitet die Kommunikation ├╝ber das System. Die K8s-Steuerebene besteht aus verschiedenen Komponenten, von denen jede einen eigenen Prozess hat, der sowohl auf einem einzigen Master-Knoten als auch auf mehreren Master ausgef├╝hrt werden kann, die Hochverf├╝gbarkeits-Cluster unterst├╝tzen.

Der Knoten, auch Worker oder Minion genannt, ist eine Maschine, auf der Container (Workloads) bereitgestellt werden. Jeder Knoten im Cluster muss eine Containerlaufzeit wie Docker sowie entsprechende Komponenten ausf├╝hren, um mit dem Master f├╝r die Netzwerkkonfiguration dieser Container zu kommunizieren.

Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte