Jump to section

Einführung in die Kubernetes-Architektur

URL kopieren

Wenn Sie mit den Grundlagen von Kubernetes vertraut sind, wissen Sie bereits, dass es sich um eine Open Source-Plattform zur Container-Orchestrierung handelt, auf der verteilte Anwendungen und Services in großem Umfang ausgeführt werden können. Möglicherweise kennen Sie jedoch nicht die einzelnen Komponenten und ihre Interaktionen.

Lassen Sie uns einen kurzen Blick auf die Designprinzipien werfen, die Kubernetes zugrunde liegen, und dann untersuchen, wie die verschiedenen Komponenten von Kubernetes zusammenwirken.

Das Design eines Kubernetes-Clusters basiert auf drei Prinzipien, die in den Details zur Implementierung von Kubernetes erläutert werden.

Ein Kubernetes-Cluster sollte folgende Eigenschaften haben:

  • Sicher: Er sollte den neuesten Best Practices für die Sicherheit entsprechen.
  • Anwenderfreundlich: Er sollte mit wenigen einfachen Befehlen zu verwenden sein. 
  • Erweiterbar: Er sollte keinen Anbieter bevorzugen und über eine Konfigurationsdatei angepasst werden können.

Ein funktionierendes Kubernetes-Deployment wird als Cluster bezeichnet. Ein Kubernetes-Cluster besteht aus zwei Teilen: der Control Plane und den Rechenmaschinen oder Knoten. Jeder Knoten ist eine eigene Linux®-Umgebung und kann entweder eine physische oder eine virtuelle Maschine sein. Auf den Knoten werden Pods ausgeführt, die aus Containern bestehen.

Dieses Diagramm zeigt, wie sich die Teile eines Kubernetes-Clusters zueinander verhalten:

A diagram showing how the parts of a Kubernetes cluster relate to one another

Control Plane

Beginnen wir im Nervenzentrum unseres Kubernetes-Clusters, der Control Plane. Hier finden wir die Kubernetes-Komponenten zur Steuerung des Clusters sowie Daten zum Status und zur Konfiguration des Clusters. Die Kernkomponenten von Kubernetes übernehmen die wichtige Aufgabe, sicherzustellen, dass die Container in ausreichender Anzahl und mit den erforderlichen Ressourcen ausgeführt werden. 

Die Control Plane steht in ständigem Kontakt mit den Rechenmaschinen. Sie haben Ihren Cluster so konfiguriert, dass er auf eine bestimmte Weise ausgeführt wird. Dies wird von der Control Plane sichergestellt.

kube-apiserver

Sie müssen mit dem Kubernetes-Cluster interagieren? Interagieren Sie mit der API. Die Kubernetes-API ist das Frontend der Kubernetes Control Plane und verarbeitet interne und externe Anfragen. Der API-Server ermittelt, ob eine Anfrage gültig ist, und verarbeitet sie dann. Sie können die API über REST-Aufrufe, über die Befehlszeile kubectl oder über andere Befehlszeilen-Tools wie kubeadm aufrufen.

kube-scheduler

In welchem Zustand befindet sich der Cluster? Wenn neue Container benötigt werden, wo passen sie hin? Dies sind die Fragen, die im Kubernetes-Scheduler beantwortet werden.

Der Scheduler berücksichtigt den Ressourcenbedarf eines Pods, wie die CPU oder den Arbeitsspeicher, sowie den Zustand des Clusters. Anschließend wird der Pod für einen geeigneten Rechenknoten geplant.

kube-controller-manager

Controller sorgen dafür, dass der Cluster tatsächlich ausgeführt wird, und der Kubernetes-Controller-Manager enthält mehrere ineinander verschachtelte Controller-Funktionen. Ein Controller befragt den Scheduler und stellt sicher, dass die richtige Anzahl von Pods ausgeführt wird. Wenn ein Pod ausfällt, springt ein anderer Controller ein. Ein Controller verbindet die Services mit den Pods, sodass alle Anfragen an die richtigen Endpunkte gelangen. Außerdem gibt es Controller, die Accounts und API-Zugriffs-Token erstellen.

etcd

Konfigurationsdaten und Informationen zum Status des Clusters befinden sich in etcd, einer Speicherdatenbank für Schlüsselwerte. Etcd ist fehlertolerant, dezentralisiert und bildet die „Ultimate Source of Truth" für Ihren Cluster.

Knoten

Ein Kubernetes-Cluster benötigt mindestens einen Rechenknoten, hat jedoch normalerweise viele. Pods werden zur Ausführung auf Knoten geplant und orchestriert. Sie müssen die Kapazität Ihres Clusters vergrößern? Fügen Sie weitere Knoten hinzu.

Pods

Ein Pod ist die kleinste und einfachste Einheit im Kubernetes-Objektmodell. Er steht für eine einzelne Instanz einer Anwendung. Jeder Pod besteht aus einem Container oder einer Reihe eng gekoppelter Container sowie den Optionen, mit denen die Ausführung der Container gesteuert werden. Pods können mit persistentem Storage verbunden werden, um zustandsbehaftete Anwendungen auszuführen.

Container Runtime Engine

Zur Ausführung der Container verfügt jeder Rechenknoten über eine Container Runtime Engine. Docker ist nur ein Beispiel, aber Kubernetes unterstützt auch andere Runtimes, die mit der Open Container Initiative kompatibel sind, z. B. rkt und CRI-O.

Kubelet

Jeder Rechenknoten enthält ein Kubelet, eine winzige Anwendung, die mit der Control Plane kommuniziert. Das Kubelet stellt sicher, dass die Container in einem Pod ausgeführt werden. Wenn die Control Plane einen Vorgang in einem Knoten benötigt, führt das Kubelet die Aktion aus.

kube-proxy

Jeder Rechenknoten enthält auch kube-proxy, einen Netzwerk-Proxy für die Kubernetes-Netzwerk-Services. Kube-proxy verwaltet die Netzwerkkommunikation innerhalb oder außerhalb Ihres Clusters. Dabei wird entweder die Paketfilterschicht Ihres Betriebssystems verwendet oder der Datenverkehr selbst weitergeleitet.

Persistenter Storage

Kubernetes verwaltet nicht nur die Container, in denen eine Anwendung ausgeführt wird, sondern auch die an einen Cluster angehängten Anwendungsdaten. Mit Kubernetes können Nutzer Storage-Ressourcen anfordern, ohne die Details der zugrunde liegenden Storage-Infrastruktur kennen zu müssen. Persistente Volumes sind spezifisch für einen Cluster und nicht für einen Pod und können daher die Lebensdauer eines Pods überleben.

Container-Registry

Die Container-Images, auf denen Kubernetes basiert, werden in einer Container-Registry gespeichert. Dies kann eine von Ihnen konfigurierte Registry oder die Registry eines Drittanbieters sein.

Zugrunde liegende Infrastruktur

Worauf Sie Kubernetes ausführen, liegt ganz bei Ihnen. Sie können Bare Metal-Server, virtuelle Maschinen, Public Cloud-Anbieter, Private Clouds und Hybrid Cloud-Umgebungen verwenden. Einer der Hauptvorteile von Kubernetes ist, dass es auf diversen Infrastrukturarten ausgeführt werden kann.

Diese vereinfachte Beschreibung der Kubernetes-Architektur geht nicht in die Tiefe. Wenn Sie jedoch genauer überlegen, wie diese Komponenten miteinander und mit externen Ressourcen und Infrastrukturen kommunizieren, fangen Sie an zu verstehen, was die Herausforderungen beim Konfigurieren und Sichern eines Kubernetes-Clusters ausmacht.

Kubernetes bietet die Tools zum Orchestrieren einer großen und komplexen containerisierten Anwendung, überlässt Ihnen aber auch viele Entscheidungen. Sie wählen das Betriebssystem, die Container Runtime, das CI/CD-Tool, die Anwendungsservices, den Storage und die meisten anderen Komponenten. Außerdem ist es Ihre Aufgabe, die Rollen, Zugriffskontrolle, Mandantenfähigkeit und sichere Standardeinstellungen zu verwalten. Darüber hinaus können Sie Kubernetes selbst ausführen oder mit einem Anbieter zusammenarbeiten, der eine unterstützte Version bereitstellen kann.

Diese Wahlfreiheit macht die Flexibilität von Kubernetes aus. Die Implementierung kann komplex sein, aber Kubernetes bietet Ihnen Möglichkeiten, containerisierte Anwendungen zu Ihren eigenen Bedingungen auszuführen und agil auf Änderungen in Ihrem Unternehmen zu reagieren.

Cloudnative Anwendungen mit Kubernetes erstellen

In dieser Webcast-Reihe werden Sie von Fachleuten dabei unterstützt, die Datenplattform in Kubernetes für Unternehmen einzurichten, die Sie zum Erstellen, Ausführen, Bereitstellen und Modernisieren von Anwendungen benötigen. 

Red Hat ist ein führender und aktiver Entwickler von Open-Source-Container-Technologien (darunter auch Kubernetes) und entwickelt wichtige Tools zum Sichern, Vereinfachen und automatischen Aktualisieren Ihrer Container-Infrastruktur. 

Red Hat® OpenShift® ist eine Kubernetes-Distribution für Unternehmen. Mit Red Hat OpenShift steht den Teams eine integrierte Einzelplattform für DevOps zur Verfügung. Mit Red Hat OpenShift können Entwickler zwischen verschiedenen Sprachen, Frameworks, Middleware und Datenbanken wählen und automatisierte Prozesse mit CI/CD entwickeln und bereitstellen, um die Produktivität weiter zu steigern. Ebenfalls verfügbar ist eine speziell für Container entwickelte Daten- und Storage-Service-Plattform: Red Hat OpenShift Data Foundation.

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.

Mehr über Container erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Unternehmensanwendungen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Ressourcen

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures