Was ist ein Kubernetes-Cluster?

Was ist ein Kubernetes-Cluster?

Die Containerisierung ist trotz ihrer vielen Vorteile ein anspruchsvolles Softwareentwicklungsmodell. Es kann leicht kompliziert werden, insbesondere wenn die Container in großem Umfang eingesetzt werden. Kubernetes ist ein System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Es trägt dazu bei, die Probleme des Containermanagements zu verringern, aber seine Hilfe ist nur so wirksam wie der Zustand seiner Komponenten. Ein Kubernetes-Cluster ist eine solche Komponente, die für das reibungslose Funktionieren des Kubernetes-Systems entscheidend ist. In diesem Artikel wird erklärt, was ein Kubernetes-Cluster ist und wie er funktioniert, und es werden seine Anwendungsfälle und technischen Vorteile untersucht.

Kubernetes-Cluster verstehen

Ein Kubernetes-Cluster besteht aus einer Reihe von Rechnern, den so genannten Knoten, auf denen containerisierte Anwendungen ausgeführt werden, die von Kubernetes bereitgestellt und orchestriert werden. Ein Cluster besteht aus mindestens einem Master-Knoten und mehreren Worker-Knoten, die zusammenarbeiten, um containerisierte Anwendungen auszuführen und zu skalieren. Normalerweise gibt es mehrere Master-Knoten, um eine hohe Verfügbarkeit und Fehlertoleranz zu gewährleisten.

Wenn Sie Ihre Anwendung in einem Kubernetes-Cluster bereitstellen, geben Sie eine Reihe von Anweisungen vor, wie die Anwendung ausgeführt werden soll, wie viele Instanzen ausgeführt werden sollen, auf welchen Knoten sie ausgeführt werden sollen, welche Ressourcen sie verwenden sollen und wie sie auf verschiedene Probleme reagieren sollen. Diese Anweisungen werden dem Kubernetes-System über eine deklarative API gegeben, d. h. Sie „erklären“, was passieren soll, und Kubernetes sorgt dafür, dass dies geschieht. Der Master-Knoten im Cluster verwendet diese Anweisungen, um Container auf den entsprechenden Worker-Knoten zu planen und auszuführen. Außerdem wird der Status des Clusters ständig überwacht, um sicherzustellen, dass er den von Ihnen angegebenen Anweisungen entspricht. Wenn ein Knoten oder eine Anwendung ausfällt, kümmert sich Kubernetes automatisch um die Neuplanung und Neuverteilung auf der Grundlage des von Ihnen angegebenen Status und bietet somit Selbstheilungsfunktionen. Diese Merkmale sowie die Fehlertoleranz sorgen für eine hervorragende Zuverlässigkeit und Betriebszeit, was wiederum zu einer positiven Erfahrung für den Endbenutzer führt.

Um zu verstehen, wie ein Kubernetes-Cluster aufgebaut ist und wie er bereitgestellte Container entwickelt und orchestriert, sollten wir uns die Kubernetes-Architektur im Allgemeinen ansehen.

Die Architektur des Kubernetes-Clusters

Die Architektur eines Kubernetes-Clusters besteht aus einem Netzwerk von miteinander verbundenen Komponenten. die miteinander verknüpfte Funktionen erfüllen und dazu beitragen, dass der Cluster wie erwartet funktioniert. Für jede Komponente gibt es vorgegebene Ressourcen, Grenzen und Werte. Wenn Workloads nicht unter Berücksichtigung dieser Grenzen und Werte zugewiesen werden, summieren sich die Werte und behindern das reibungslose Funktionieren des Kubernetes-Ökosystems. Einige Komponenten übernehmen primäre Aufgaben und bewältigen erhebliche Workloads, während andere als Zusatzkomponenten zur Verbesserung der Funktionalität und Effizienz dienen.

Die folgende Abbildung fasst die Beziehung zwischen den Kernkomponenten der Kubernetes-Cluster-Architektur zusammen.

Architektur des Kubernetes-Clusters mit den Komponenten der Steuerebene und der Worker-Knoten
Abbildung 1: Kubernetes-Cluster-Architektur

Schauen wir uns nun die Komponenten und Unterkomponenten der oben dargestellten Kubernetes-Cluster-Architektur genauer an.

Master-Knoten/Steuerebene

Der Master-Knoten, auch Steuerebene genannt, ist das zentrale System, das die Gesamtverantwortung für den Kubernetes-Cluster trägt. Er verwaltet und pflegt die Kommunikation zwischen den Worker-Knoten im Kubernetes-System. Der Master-Knoten plant die Workloads und verwaltet den Lebenszyklus von Pods und anderen Ressourcen.

Jeder Pod (oder Workload) wird einem Worker-Knoten zugewiesen, der über die optimalen Ressourcen und die optimale Umgebung verfügt, um das reibungslose Funktionieren des Pods zu gewährleisten. Der kube-scheduler, eine der Komponenten des Master-Knotens, übernimmt diese Planungsaufgabe, die einen Overhead verhindert und das reibungslose Funktionieren des Kubernetes-Ökosystems gewährleistet. In der nachstehenden Tabelle sind die vier kritischen Komponenten des Master-Knotens aufgeführt.

KomponentenFunktion(en)
Kubernetes API-ServerDies ist der Eingangspunkt für die Kommunikation zwischen dem Kubernetes-Cluster und externen Clients. Der Kubernetes API-Server ist der primäre Endpunkt für alle Interaktionen mit dem Cluster. Alle Aufgaben, wie das Erstellen, Aktualisieren und Löschen von Workloads, werden über ihn ausgeführt.
kube-controller-managerDer kube-controller-manager ist für die Verwaltung der Kernkomponenten des Kubernetes-Clusters, die Überwachung des Clusterzustands, die Bearbeitung von API-Aufrufen und andere Aufgaben der Workloadverwaltung zuständig, wie z.B. die Sicherstellung der Aufrechterhaltung des gewünschten Zustands von Bereitstellungen und Replikatsätzen.
kube-schedulerDer kube-scheduler interagiert mit dem Kubernetes API-Server, um Aufgaben auf Worker-Knoten zu planen und eine optimale Ressourcennutzung zu gewährleisten. Er weist den Knoten Pods auf der Grundlage der Ressourcenverfügbarkeit und anderer Einschränkungen wie Affinität, Anti-Affinität und Standort zu.
etcdDies ist ein verteilter Key-Value-Speicher, der clusterweite Konfigurationsdaten wie Kubernetes-Objekte und Metadaten speichert. Er kann auf mehreren Knoten in einem Kubernetes-Cluster ausgeführt werden und sorgt für Datenkonsistenz, indem es Datenaktualisierungen schnell und konsistent im gesamten Cluster verbreitet.

Worker-Knoten

Worker-Knoten sind die grundlegenden Bausteine des Kubernetes-Clusters. Sie führen Anwendungs-Workloads aus und führen Container aus. Worker-Knoten kommunizieren mit dem Kubernetes-Master-Knoten, um die erforderlichen Dienstdefinitionen und Zeitpläne zu erhalten, Pods zu erstellen und den Status der laufenden Container zu melden. Auf jedem Worker-Knoten läuft eine Kubernetes-Laufzeitumgebung für containerisierte Workloads, wie Docker oder CRI-O. Die Komponenten eines Worker-Knotens sind in der nachstehenden Tabelle aufgeführt.

KomponentenFunktion(en)
kubeletKubelets laufen auf jedem Worker-Knoten. Sie kommunizieren mit dem Master-Knoten, um Anweisungen abzurufen und Containeraufgaben zu planen.
kube-proxy  Dies ist ein Netzwerk-Proxy, der auf jedem Worker-Knoten läuft. Er verwaltet die Netzwerkkommunikation innerhalb des Worker-Knotens, sorgt für das Load Balancing des Netzwerkverkehrs zwischen Containern, hört Kubernetes-Dienste ab und stellt die notwendigen Regeln auf, um den Traffic an die entsprechenden Pods weiterzuleiten.
Container-LaufzeitSoftware, die für die Ausführung und Verwaltung von Containern auf jedem Worker-Knoten zuständig ist. Beispiele für Container-Laufzeiten sind Docker, CRI-O und Containerd.
Pod-VernetzungJeder Worker-Knoten muss über eine Netzwerkschnittstelle verfügen, über die er mit den anderen Knoten des Clusters kommunizieren kann. Die Pod-Vernetzung ermöglicht es Containern, die auf verschiedenen Worker-Knoten laufen, miteinander zu kommunizieren, als ob sie auf demselben Knoten laufen würden.

Daraus können wir schließen, dass eine starke Abhängigkeit zwischen dem Master- und dem Worker-Knoten besteht. Die folgende Abbildung verdeutlicht diesen Zusammenhang.

Die Beziehung zwischen den Master- und Worker-Knoten im Kubernetes-Cluster
Abbildung 2: Beziehung zwischen Master- und Worker-Knoten

Pod

Ein Pod ist die kleinste bereitstellbare Einheit in einem Kubernetes-Cluster. Ein oder mehrere Container können in einem Pod eingesetzt werden, so dass sie sich dieselben Netzwerk- und Speicherressourcen teilen. Ein Pod wird verwaltet und für die Ausführung auf einem Worker-Knoten geplant.

Service

Ein Service ist ein Kubernetes-Objekt, das eine Standardmethode für den Zugriff auf einen oder mehrere Pods bietet. Er versorgt die Pods mit stabilen IP-Adressen und DNS-Namen. Services stellen Pods anderen Teilen des Kubernetes-Clusters oder externen Netzwerken zur Verfügung und abstrahieren dabei Details der einzelnen Pods, wie z.B. ihre IP-Adressen. Das Service-Objekt kann auch verschiedene andere Funktionen bieten, wie z.B. die Sitzungsaffinität, die es Clients ermöglicht, Verbindungen mit demselben Pod über mehrere Anfragen hinweg aufrechtzuerhalten.

Deployment

Ein Deployment ist ein Objekt, das zur Verwaltung der Erstellung und Skalierung von Pods verwendet wird. Es stellt sicher, dass die richtige Anzahl von Replikatsätzen läuft.

Namespace

Namespaces sind ein virtueller Cluster, der Ressourcen innerhalb eines Kubernetes-Clusters partitioniert. Jeder Namespace ist von anderen isoliert und kann zur Organisation und Sicherung von Kubernetes-Objekten verwendet werden.

Volume

Volumes werden in einen Container in einem Pod eingebunden. Ein Volume speichert Daten getrennt von dem Container, in dem es läuft. Es bietet Containern die Möglichkeit, auf Daten zuzugreifen, sie gemeinsam zu nutzen, zu übertragen und über die Lebensdauer des Containers hinaus zu erhalten. Da Container flüchtig sind, hilft das Volume, die Daten zu erhalten, wenn sie nicht mehr laufen.

ConfigMap

Eine ConfigMap ist ein Kubernetes-Objekt zum Speichern von Konfigurationsdaten als Key-Value-Paare, auf die Anwendungen zur Laufzeit zugreifen können. Es dient dazu, Konfigurationsdaten vom Anwendungscode zu entkoppeln. ConfigMap kann mit YAML-Dateien, Befehlszeilen-Tools oder der Kubernetes-API erstellt werden.

Add-ons

Add-ons sind optionale Komponenten, die auf Worker-Knoten installiert werden und dem Kubernetes-Cluster zusätzliche Funktionen bieten. Sie dienen verschiedenen Zwecken, beispielsweise der Überwachung der Containerleistung und der Verwaltung von Anwendungsprotokollen. Beispiele für Add-ons sind das Kubernetes-Dashboard, Metrics Server und DNS.

Ingress

Ein Ingress verwaltet den Traffic des Clusters und leitet externe Anfragen an den entsprechenden Container weiter. Es kann den Traffic auf der Grundlage von Hostnamen, Pfaden, URL-Schemata und anderen Bedingungen weiterleiten. Er fungiert als Layer-7-Load-Balancer und wird verwendet, um HTTP- und HTTPS-Routen von außerhalb des Clusters für Services innerhalb des Clusters freizugeben. Mit anderen Worten ermöglicht ein Ingress externen Benutzern den Zugriff auf Services, die innerhalb des Kubernetes-Clusters ausgeführt werden, und bietet einen einzigen Zugangspunkt zu den Services.

DNS

In einem Kubernetes-Cluster ist ein DNS ein Dienst, der für die Auflösung des Namenspace von Kubernetes-Objekten verantwortlich ist. Es handelt sich um ein Add-on, das ein Namenssystem für die im Cluster laufenden Container, Pods und Services bereitstellt. Darüber hinaus ermöglicht ein DNS-Service den Entwicklern die Verwendung von Standard-DNS-Abfragen zur Ermittlung von und Verbindung zu Services, die innerhalb des Clusters laufen. Wenn ein Pod oder ein Service erstellt wird, wird ein entsprechender DNS-Eintrag erzeugt.

Container-Netzwerk-Schnittstelle (CNI)

Die CNI ist ein Kubernetes-Netzwerkstandard, der für die Bereitstellung einer einheitlichen Netzwerkschicht für den Cluster verantwortlich ist. Sie definiert, wie Container-Laufzeiten eine Verbindung zu verschiedenen Netzwerkanbietern herstellen können. CNI definiert einen standardisierten Weg für Kubernetes-Netzwerk-Plugins, um Aufgaben wie IPAM (IP-Adressverwaltung), Netzwerk-Namespaces und die Konfiguration von Container-Netzwerkschnittstellen zu erledigen. Sie ermöglicht es Kubernetes-Administratoren, die für ihren spezifischen Anwendungsfall am besten geeignete Netzwerklösung zu wählen.

Wie ein Kubernetes-Cluster funktioniert

Ein Kubernetes-Cluster automatisiert die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Dies wird im nachstehenden Flussdiagramm näher erläutert.

Ein Flussdiagramm, das die Arbeitsweise eines Kubernetes-Clusters zeigt

Managed vs. Unmanaged Kubernetes

Kubernetes kann als verwalteter Dienst angeboten werden. Managed Kubernetes ist ein vollständig verwalteter Kubernetes-Dienst, der Benutzern einen Kubernetes-Cluster zur Verfügung stellt, ohne dass sie die zugrunde liegende Infrastruktur verwalten müssen. Dies ist aufgrund der Komplexität von Kubernetes-Clustern von Vorteil.

Managed-Kubernetes-Dienste werden von Cloud-Service-Anbietern, einschließlich Gcore, angeboten, die die Verantwortung für die Einrichtung, Konfiguration und den Betrieb der Kubernetes-Cluster übernehmen. So können Teams problemlos große Mengen von Containern bereitstellen und skalierbare, fehlertolerante und hochverfügbare Plattformen für die Bereitstellung und Ausführung von containerisierten Anwendungen bereitstellen.

Bei verwaltetem Kubernetes verwaltet der Anbieter den Master-Knoten und andere komplexe Aspekte der Infrastruktur wie die Steuerebene, seinen API-Server sowie den etcd, Scheduler und Controller-Manager. Der Worker-Knoten und die Computerinfrastruktur werden bereitgestellt, an Ihre Bedürfnisse angepasst und (vom Anbieter) entsprechend Ihren Konfigurationseinstellungen automatisch skaliert. Bei Bedarf können Sie über SSH auf den Worker-Knoten zugreifen.

Managed Kubernetes kann erhebliche Kontrolle über die Worker-Knoten bieten und verspricht hohe SLA mit den verwalteten Master-Knoten, je nach Anbieter und Bedürfnissen Ihres Unternehmens. Unabhängig vom Umfang der Verwaltung gewährleistet verwaltetes Kubernetes, dass Ihre Container mit optimaler Effizienz arbeiten.

Unmanaged Kubernetes

„Unverwaltet“ Kubernetes bedeutet, dass Sie Kubernetes selbst installieren, verwalten und warten müssen. Von der Installation der Knoten, der Softwarepakete und der gesamten erforderlichen Infrastruktur bis hin zur Verwaltung und Synchronisierung der Master- und Worker-Knoten, um festzulegen, auf welchem Knoten die Anwendung ausgeführt wird, müssen alle komplexen Verfahren und Entscheidungen von Ihnen getroffen werden.

Vorteile von Managed Kubernetes

Zu den Vorteilen von verwaltetem Kubernetes gehören Kosteneffizienz, automatische Skalierbarkeit, Sicherheit und Zugriffskontrolle sowie einfache Bereitstellung und Konfiguration.

Kosteneffizienz

Verwaltetes Kubernetes reduziert den betrieblichen Aufwand, da Sie nicht in die Hardware-Infrastruktur und das für die Verwaltung der Master-Knoten erforderliche Fachwissen investieren müssen.

Automatisierte Skalierbarkeit

Anbieter von Managed-Kubernetes-Diensten bieten in der Regel eine automatische Skalierung der Knoten an, um Lastspitzen auszugleichen, so auch Gcore.

Vereinfachte und schnellere Bereitstellung

Da die Verwaltung des Master-Knotens vom Dienstanbieter übernommen wird, werden alle Patches, die Sie auf dem Worker-Knoten bereitstellen, nahtlos übernommen, was die Softwarefreigabe erleichtert und beschleunigt.

Sicherheit und Zugriffskontrolle

Anbieter von Managed Kubernetes bieten in ihren Plattformen durchgängige Sicherheit auf Cluster- und Pod-Ebene sowie automatisierte Sicherheitsfunktionen wie regelmäßige aktuelle Sicherheits-Patches und Bugfixes. Durch den Einsatz einer verwalteten Kubernetes-Lösung können Sie den Cluster-Zugriff fein abstimmen, um den Root-Zugriff nur autorisierten Einheiten zu gewähren.

Dynamische und schnelle Konfiguration

Managed Kubernetes ermöglicht es Entwicklern, Anwendungskonfigurationen im Handumdrehen zu verwalten. Dies ermöglicht eine schnelle Aktualisierung der Anwendungskonfiguration, ohne dass die gesamte Anwendung neu bereitgestellt werden muss.

Vorteile des Root-Zugriffs auf Managed Kubernetes

Der Root-Zugang gewährt administrativen Zugriff auf die Worker-Knoten. Dies erfordert die Erlaubnis und Authentifizierung des Anbieters und wird in der Regel über das SSH-Protokoll durch Angabe der entsprechenden Zugangsdaten aktiviert. Der Root-Zugriff ist häufig ein Merkmal von verwaltetem Kubernetes und etwas, worauf man bei der Auswahl eines Anbieters von verwaltetem Kubernetes achten sollte.

Mit dem Root-Zugriff können Sie den Worker-Knoten zu Fehlerbehebungszwecken zeitlich begrenzten Zugriff gewähren. Sie können die Kubernetes-Cluster auch optimieren, um bestimmte Leistungs- und Sicherheitsanforderungen zu erfüllen. Es ist jedoch zu beachten, dass dieser Zugriff bei unangemessener Handhabung Sicherheitsrisiken mit sich bringen kann. Seien Sie vorsichtig, indem Sie den Root-Zugang nur für vertrauenswürdige Mitarbeiter und Anbieter freigeben, die ihn benötigen.

Anwendungsfälle von Kubernetes-Clustern

Sehen wir uns einige Anwendungsfälle für Kubernetes-Cluster an.

Bereitstellung von Microservice-basierten Anwendungen

Ein Kubernetes-Cluster ist für die Bereitstellung und Verwaltung von Microservices-basierten Anwendungen konzipiert. Kubernetes orchestriert Microservices zu kohärenten Anwendungen, vereinfacht deren Verwaltung und Skalierung und gewährleistet gleichzeitig hohe Verfügbarkeit.

Ausführen von Machine-Learning-Workloads

Der Kubernetes-Cluster ermöglicht auch die Bereitstellung und Verwaltung von Machine-Learning-Modellen, Trainingsprozessen und Modellstatus. Dadurch wird sichergestellt, dass Entwickler ihre Trainings-Workloads auf verteilten Computerressourcen skalieren und die Nachbearbeitung ihrer Modelle effizient verwalten können.

Verwaltung von Internet-der-Dinge-(IoT)-Anwendungen

IoT-Anwendungen haben in der Regel verschiedene Endpunkte mit unterschiedlichen Konnektivitätsoptionen. Der Kubernetes-Cluster ermöglicht Entwicklern die Bereitstellung von IoT-Anwendungen und stellt sicher, dass Geräte und Sensoren die Anwendungslogik und serverlose Funktionen ausführen, wodurch die Datenübertragung zur zentralen Cloud minimiert wird.

Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD)

Mit dem Kubernetes-Cluster können Entwickler ihre Software-Bereitstellungspipeline automatisieren und so schnellere Release-Zyklen, eine bessere Nutzung der Infrastruktur und eine bessere Qualitätskontrolle ermöglichen.

Fazit

Der Kubernetes-Cluster ist ein unverzichtbares Werkzeug für die moderne Anwendungsentwicklung. Er bietet eine optimierte und effiziente Möglichkeit zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Es ermöglicht technischen Entscheidern, komplexe containerisierte Anwendungen in großem Umfang über mehrere Infrastrukturen hinweg zu verwalten.

Gcore bietet Managed Kubernetes für Unternehmen und technische Entscheider an, die die Vorteile von Kubernetes ohne die damit verbundenen Komplexitäten und Kosteneskalationen seiner nicht verwalteten Pendants nutzen möchten.

Subscribe to our newsletter

Stay informed about the latest updates, news, and insights.