single.php
< Beitrag von Frank Oltmanns-Mack

Container on Azure 2: Was ist Kubernetes?

In meinem letzten Beitrag habe ich das Konzept hinter Docker Containern erklärt. Dabei wurde auch darauf hingewiesen, dass sich die Verwaltung von Docker unter Umständen als schwierig erweisen kann. Durch die Verwendung von Orchestrierungswerkzeugen lassen sich die meisten der manuellen Prozesse vermeiden, die durch die Verwendung und Skalierung von containerbasierten Anwendungen entstehen. Bei den Orchestrierungswerkzeugen hat sich mittlerweile Kubernetes als De-Facto-Standard durchgesetzt. Mit Kubernetes können Entwickler und Administratoren das Deployment, den Betrieb, die Wartung und auch die Skalierung von verteilten Anwendungen vereinfachen und automatisieren.

Geschichte und Herkunft des Namens

Kubernetes wurde von Google entwickelt und die Version 1.0 wurde Mitte des Jahres 2015 veröffentlicht. Das Tool ist aus dem Borg Projekt entstanden, das Google schon vorher zur Verwaltung von Container-Umgebungen genutzt hat. Google machte Kubernetes sehr schnell zu Open-Source und spendete es der Cloud Native Computing Foundation. Die momentan aktuelle Version ist 1.11.

Der Name „Kubernetes“ kommt aus dem Griechischen und bedeutet Steuermann. Deswegen ist das Logo auch einem Steuerrad nachempfunden. Zusätzlich wird die Zahl 7 durch die 7 Speichen referenziert – eine Anspielung auf „Seven of Nine“ aus Star Trek, welche wiederum Teil der Borg war. Kubernetes wird auch gerne als K8s abgekürzt.

Kubernetes Logo

Die Grundsätze von Kubernetes

Folgende 3 Konzepte sind der Kern von Kubernetes:

  • Unveränderlichkeit (Immutability)
  • Deklarative Konfiguration (Declarative Configuration)
  • selbstheilende Online-Systeme (Online self-healing systems)

Im Folgenden sollen diese 3 Konzepte kurz näher erklärt werden.

1 | Unveränderlichkeit …

bedeutet im Bezug auf Kubernetes und Container: Sobald ein Objekt im System verändert wird, wird dieses Objekt in der neuen Konfiguration ersetzt. Früher wurden Systeme inkrementell verändert und haben sich im Laufe ihrer Lebenszeit immer weiter verändert. Um in diesem System dann nochmal auf einen Zustand X zu kommen, mussten fast alle Schritte, die während der Zeit durchgeführt wurden, wiederholt werden. Bei Unveränderlichkeit ist dies nicht der Fall. Wird eine Konfiguration geändert, dann wird ein neues Objekt mit dieser Konfiguration erzeugt. Wir haben also immer eine genaue Beschreibung des Zustands. In den Containern, die wir in Kubernetes bereitstellen, wird also keine zusätzliche Software installiert.

Bei einem Neustart wären diese Änderungen wieder verschwunden und der Container im Zustand, den wir am Anfang vorgesehen hatten.

2 |Deklarative Konfiguration

Die Unveränderlichkeit führt direkt zum 2. Konzept der deklarativen Konfiguration. Normalerweise wurden früher alle Schritte aufgezeichnet, die für eine bestimmte Konfiguration erforderlich waren. Dies entsprach dem Konzept der imperativen Konfiguration.

Bei der deklarativen Konfiguration wird nur der benötigte Zustand des Systems beschrieben. Kubernetes kümmert sich im Hintergrund dann um die Bereitstellung des gewünschten Zustands. Der deklarative Ansatz macht es viel einfacher zu verstehen, was die entsprechende Konfiguration erzeugen soll. Dadurch wird das System weniger fehleranfällig. Zusätzlich ist es einfacher, zwischen verschiedenen Versionen der Konfiguration hin und her zu wechseln. Bei imperativen Konfigurationen war gerade der Rücksprung nahezu unmöglich.

3 | Selbstheilende Online-Systeme

Die selbstheilenden Online-Systeme runden das Ganze schließlich ab. Haben wir eine deklarative Konfiguration erstellt und diese in das System eingespielt, so kümmert sich das System selbstständig darum, dass dieser Zustand auch bestehen bleibt. Sollte es dabei zu Fehlern kommen, so kümmert sich Kubernetes selbständig um den Austausch der fehlerhaften Komponente. Will man z. B. 3 Repliken einer Komponente in Kubernetes haben, dann kümmert sich das System selbstständig darum, dass auch immer genau 3 Repliken vorhanden sind.

Fazit

Die 3 Grundkonzepte machen Kubernetes zu einem sehr robusten und effizienten System, das die Bereitstellung von Architekturen mit Microservices sehr einfach macht. Auf Grund des Umfangs werden wir das Thema Kubernetes über mehrere Blogbeiträge verteilen, da gerade Themen wie Automatisierung und Sicherheit in Kubernetes eine genauere Betrachtung erfordern. Ich würde mich freuen, wenn Sie auch im nächsten Teil wieder mit dabei sind.

Bisherige Teile der Serie:

Container on Azure 1: Was sind Container?

Container on Azure 2: Was ist Kubernetes? Teil 1

Folgen
X

Folgen

E-mail : *
Kategorie: Cloud | Schlagwörter: , , , | Kommentare: 0

Beitrag kommentieren

CAPTCHA * Time limit is exhausted. Please reload CAPTCHA.