Aktion: .ch-Domains jetzt nur CHF 4.90!

Aktion gültig auf Neubestellungen und Transfers bis 31.12.2024

Status

/

/

Kubernetes: Diese Aufgaben übernimmt die Open-Source-Lösung

Kubernetes: Diese Aufgaben übernimmt die Open-Source-Lösung

Veröffentlicht am 9. Dezember 2021
  6 Min. Lesezeit
  Aktualisiert am 11. November 2024

Durch die zunehmende Komplexität von IT-Infrastrukturen ist es heutzutage immer wichtiger, dass jede einzelne Anwendung skaliert und verwaltet werden kann. Da diese Organisation von Hand kaum zu bewältigen ist, schafft Kubernetes Abhilfe. Wir zeigen, was dahintersteckt.

Kubernetes Logo Titelbild

Inhalt

Was ist Kubernetes?

Die Open-Source-Lösung Kubernetes dient zur automatisierten Distribution, Skalierung und Verwaltung von Container-Anwendungen. Kubernetes ist heute fast Standard, wenn es um Container-Orchestrierung geht. Zur Anwendung kommt Kubernetes, wenn viele einzelne Microservices verwaltet werden müssen. Einzelne Anwendungen werden oft parallel gestartet, verwaltet und neu strukturiert – manchmal mehrmals täglich. Um Zeit, Kosten und Aufwand zu sparen, übernimmt Kubernetes diese Organisation und Orchestrierung.

Kubernetes ist zuständig für die komplette Bereitstellung von Anwendungen. Diese werden innerhalb von Servern platziert, und zwar so, dass eine optimale Auslastung gewährleistet ist. Mithilfe des Open-Source-Systems nehmen Administrationsarbeiten deutlich ab, denn Kubernetes kümmert sich um die Kommunikation zwischen den Anwendungen und sagt ihnen, wie sie einander finden können.

Der Aufbau von Kubernetes

Um zu verstehen, wie Kubernetes die Steuerung übernimmt, zeigen wir als Erstes den Aufbau von Kubernetes auf. Kubernetes besteht aus zwei Ebenen:

Kubernetes Master: ist die Steuerebene und kümmert sich um die Verwaltung und Steuerung des gesamten Systems.

Arbeitsknoten: führen die bereitgestellten Anwendungen aus und bestehen aus definierten Bereichen.

Grafik des Aufbaus von Kubernetes
Quelle: gridscale

Kubernetes Master

  • Der API-Server: ist für die Kommunikation innerhalb des Kubernetes Clusters zuständig.
  • Der Scheduler: weist den bereitstellbaren Komponenten von Anwendungen entsprechende Arbeitsknoten zu.
  • Der Controller-Manager: kontrolliert die Replikation von Komponenten, prüft Arbeitsknoten und handhabt Knotenausfälle.
  • Die etcd Datenbank: hier wird die gesamte Clusterkonfiguration persistent festgehalten.

Arbeitsknoten

  • Container runtime: führt die Docker oder rkt Container aus.
  • Kubelet: steuert die Container auf den Arbeitsknoten und kommuniziert mit dem Master.
  • Kubernetes-Dienstproxy (Kube-Proxy): ist für Proxy- und Lastenausgleichsfunktionen (Loadbalancing) im Datenverkehr zwischen den Anwendungskomponenten zuständig.

Der Grundstein von Kubernetes bilden die sogenannten Pods.

Ein Pod besteht aus einem oder mehreren Containern, welche jeweils zusammen auf einem Node ausgeführt werden. So wird sichergestellt, dass Container, welche voneinander abhängig sind, als Einheit auf demselben Node ausgeführt werden.

Da sich Container in einem Pod einen Netzwerk-Namespace teilen, können diese direkt via Loopback-Interface miteinander kommunizieren. Im Gegensatz dazu kommunizieren Pods über ihre IP-Adresse miteinander. Pods können mit einem Host oder einer virtuellen Maschine verglichen werden. Die Aufteilung von Pods kann, voneinander unabhängig, für die Skalierung und Aktualisierung der einzelnen Komponente genutzt werden.

Grafik des Aufbaus von Arbeitsknoten in Kubernetes
Quelle: gridscale

Kommunikation von Komponenten

Steuerkomponente

Die Steuerkomponente aus dem Kubernetes Master kommunizieren indirekt über den API-Server miteinander. Der API-Server kommuniziert als einziger direkt mit etcd. Somit lesen und schreiben alle anderen Komponenten über den API-Server in den etcd. Da etcd vor allen Komponenten verborgen ist, vereinfacht es das eventuelle Ersetzen. Diese Kommunikation bietet den Vorteil eines stabilen und optimistischen Sperrsystems und einer stabileren Validierung.

Auch die Komponenten der Steuerebene müssen über API-Server laufen, nur so ist eine konsistente Aktualisierung des Clusterstatus möglich. Der Clusterstatus kann über die CRUD-Schnittstelle (Create, Read, Update, Delete) abgefragt und bearbeitet werden. Die CRUD-Schnittstelle wird über REST-API zur Verfügung gestellt.

Der API-Server ist für die Gültigkeit der geschriebenen Dateien im Speicher zuständig und stellt sicher, dass Änderungen nur von autorisierten Clients durchgeführt werden können.

Die Aufgabe des Schedulers besteht darin, passende Knoten für neu erstellte Pods zu finden und sie zuzuweisen. Dazu gehört auch die Poddefinition (bestehend aus Status, Metadaten und Beschreibung der Podinhalte) über den API-Server. Der Beobachtungsmechanismus des API-Servers hilft ihm dabei. Um den passenden Knoten für den Pod zu finden, filtert der Scheduler die Knotenliste nach Priorität und Wahl. Ziel ist eine gleichmässige Auslastung der Nodes.

Um die Kontrolle über das gesamte System zu behalten, gibt es die Controller im Controller-Manager. Sie passen den Ist-Zustand des Systems an den Soll-Zustand an. Wie der Soll-Zustand genau aussieht, ist in den bereitgestellten Ressourcen des API-Servers festgelegt. Für jede Aufgabe gibt es verschiedene Controller, die innerhalb von Controller-Manager-Prozessen festgelegt sind.


Zum Beispiel: Replikationsmanager für die Replikationskontrolle, Deploymentcontroller, SatefulSet Controller u.v.m. Die Kommunikation läuft dabei indirekt über API-Server miteinander. Um Änderungen an Ressourcen nicht zu verpassen, überwachten sie den API-Server. Benötigte Operationen (Erstellen, Änderung oder Löschen eines Objekts) werden durch die Controller ausgeführt und den neuen Status in die Ressourcen eingetragen.

Komponente Arbeitsknoten

Der Scheduler ist für die Planung der angegebenen Containergruppen auf den Arbeitsknoten zuständig und orientiert sich dazu am Ressourcenbedarf der Containergruppen.

Das Kubelet hat diverse Aufgaben:

  • Es teilt die Containerlaufzeit auf, um die nötigen Containerimages herunterzuladen und auszuführen.
  • Es ist verantwortlich für alle laufenden Prozesse im Arbeitsknoten.
  • Es registriert den Knoten, auf dem rs ausgeführt wird (Erstellen einer Knotenressource im API-Server).
  • Der API-Server wird überwacht (betreffend Pods), um notwendige Container zu starten. Zum Beispiel: Der Docker wird auf Basis eines Images angewiesen, einen Container zu starten.
  • Überwacht alle laufenden Container und meldet den Status oder Ressourcenverbrauch an den API-Server.

In der Beschreibung der Pods wird festgehalten, welche Containerimages eine Anwendung enthalten, wie die verschiedenen Komponenten miteinander in Beziehung stehen und ob Anwendungen auf demselben Knoten ausgeführt werden sollen. Diese Beschreibung wird vom Entwickler geschrieben.

Die Kube-Proxys (Dienst-Proxys) sind für die Verbindung zwischen Clients und Diensten zuständig, damit die IP und der Port des Dienstes bei einem Pod landet, der den Dienst unterstützt. Falls mehrere Ports zur Verfügung stehen, wird ein Loadbalancing (Lastenausgleich) vorgenommen.

Grafik der einzelnen Komponenten der Arbeitsknoten in Kubernetes
Quelle: gridscale

Die Vorteile

Kubernetes nutzt Container, um Umgebungen für verschiedene Anwendungen vorzubereiten. So werden die Administrationsarbeit sowie die Bereitstellung von Diensten vereinfacht und Entwickler müssen sich nicht mehr darum kümmern, auf welchem Server welche Anwendung läuft. Voraussetzung dafür ist, dass die Server die benötigten Ressourcen zur Verfügung stellen.

Als Grundlage nimmt Kubernetes immer die Beschreibung der Ressourcenanforderungen des Entwicklers. Danach kümmert sich Kubernetes darum, auf welchen Arbeitsknoten welche Anwendung laufen soll. Bei Bedarf kann er so Anwendungen aufräumen und woanders platzieren. Diese Methode ist viel effizienter, als wenn Entwickler dies von Hand erledigen würden, da er immer die optimale Kombination finden und so eine gute Auslastung garantieren kann.

Ein weiterer wichtiger Punkt ist die Zustandsprüfung der Arbeitsknoten. Denn je grösser die Infrastruktur, desto höher die Wahrscheinlichkeit eines Ausfalls eines Knotens. In diesem Fall verschiebt Kubernetes die Anwendungen auf andere Knoten.

Als Letztes bietet die automatische Skalierbarkeit von Pods den Vorteil, Redundanzen von Pods zu vermeiden. Denn Kubernetes ist in der Lage, einen Pod vertikal zu skalieren.

Kubernetes in unserem virtual Datacenter

Wir stellen Kubernetes in unserem virtual Datacenter kostenlos zur Verfügung. Nebst den gewohnten Vorteilen unseres vDCs wie intuitive Bedienung, minutengenaue Abrechnung deiner Ressourcen und höchsten Sicherheitsstandards in unserem Datacenter DATAROCK, musst du dich dank Kubernetes nicht um die Orchestrierung kümmern. So kannst du dich ganz auf die Anwendungsentwicklung konzentrieren.

Dieser Blog entstand in Zusammenarbeit mit gridscale.

Inhalt

Artikel teilen

Link kopieren

Artikel teilen

Link kopieren
Manuel Kälin

CTO & Co-Founder    2 Artikel

535
Kategorie
Illustration eines Blogs mit der Domain-Endung punkt Blog als Beschriftung

Heute ist der Tag des Bloggens. Seit 2018 wird dieser offiziell im Kalender der kuriosen Feiertage geführt. Wir zeigen dir, welche Möglichkeiten ein Blog bietet und worauf du achten musst.

Eine M.2 NVMe SSD wird in einen Rootserver von hosttech eingebaut.

SSD-Speicherlösungen sorgen für schnelle, hochperformante Server-Systeme. Doch SSD ist nicht gleich SSD. Ein Überblick über die verschiedenen Formen und deren Vor- und Nachteile.

Bildcollage zum PCtipp Test-Bericht zu Homepage-Baukasten-Systemen. Der Website Creator von hosttech hat mit Prädikat "Sehr gut" abgeschnitten. Im Hintergrund ein Bildschirm mit einer in Website Creator erstellten Website, davor ein Screenshot des PCtipp-Artikels.

Die PCtipp-Redaktion hat in der aktuellen Ausgabe verschiedene Website-Baukästen getestet. Unser Website Creator schnitt mit einem "Sehr gut" ab. Zusätzlich hervorgehoben wurden die fairen monatlichen Kosten.

Titelbild zum Blogbeitrag von hosttech anlässlich des internationalen Caps Lock Day

AM 22. OKTOBER IST WORLD CAPS LOCK DAY! Keine Sorge, dieser Blogbeitrag ist NICHT komplett in Grossbuchstaben geschrieben. Erfahre mehr über den kuriosen Feiertag für die Grossschreibung.

Headerbild zum Blogbeitrag zum Thema Webspace. Zu sehen sind Server und Icons für Mediendaten, Datenbanken, E-Mails und weiteren Daten, welche im Webspace gespeichert werden.

Willst du mit deiner Website oder Web-Anwendung im Internet präsent sein, brauchst du entsprechenden Webspace. Lies jetzt alles Wissenswerte rundum Webspace und den Unterschied zu Webhosting.

Headerbild zum Blogbeitrag über Virtual Private Server (VPS).

Virtual Private Server (VPS) bieten dir eine spannende Möglichkeit, die Vorteile eines dedizierten Servers zu einem Bruchteil der Kosten zu geniessen. Erfahre mehr über VPS und die möglichen Anwendungsbereiche.

Foto eines Laptops auf Tisch mit Domain .me Schriftzug auf dem BIldschirn.

.me ist ursprünglich die länderspezifische Top-Level-Domain (ccTLD) von Montenegro. Inzwischen wird die Domain-Endung aber für vielfältige Zwecke genutzt, sowohl privat als auch von Unternehmen.

myhosttech Kundencenter