Suchen

Verknotet Was ist Kubernetes?

| Autor / Redakteur: Anna Kobylinska und Filipe Martins* / Ulrike Ostler

„Kubernetes“ ist eine Plattform zur Verwaltung von Container-Workloads und -Diensten, welche die IT-Branche im Sturm erobert hat. Ursprünglich aus Googles Feder unterliegt Kubernetes einer quelloffenen Lizenz. Das Kubernetes-Ökosystem umfasst zahlreiche Dienste, Erweiterungen und Werkzeuge und wird von zahlreichen Systemintegratoren unterstützt.

Firmen zum Thema

Kubernetes ist eine Orchestrierungsplattform , mit der sich Container-Workloads und -Dienste verwalten lassen
Kubernetes ist eine Orchestrierungsplattform , mit der sich Container-Workloads und -Dienste verwalten lassen
(Bild: © djama - stock.adob.com )

Die Bezeichnung Kubernetes stammt aus dem Griechischen und bedeutet so viel wie Steuermann oder Pilot. Konzeptionell zieht es Inspiration aus Googles Erfahrungen mit der Ausführung verteilter, massiv skalierbarer Produktions-Workloads in Hyperscale-Rechenzentren.

Kubernetes unterstützt sowohl die Automatisierung von Workloads als auch die deklarative Konfiguration im kleineren Maßstab.

Die Funktionsweise von Kubernetes

Eine Kubernetes-Bereitstellung hantiert mit Clustern. Ein Cluster ist eine Gruppe von Maschinen, den so genannten Knoten, welche containerisierte Anwendungen unter der administrativen Kontrolle von Kubernetes.

Die Architektur eines Kubernetes-Clusters ist recht übersichtlich. Ein Cluster verfügt über mindestens einen Arbeitsknoten (worker node) und mindestens einen Hauptknoten (master node). Die Arbeitsknoten hosten die so genannten Pods, die Komponenten der Anwendung. Die Hauptknoten verwalten die Arbeitsknoten und die Pods in ihrem jeweiligen Cluster. Zur Gewährleistung von Failover und Hochverfügbarkeit benötigt ein Cluster mehrere Hauptknoten.

Schematische Darstellung der Funktionsweise eines Kubernetes-Cluster
Schematische Darstellung der Funktionsweise eines Kubernetes-Cluster
(Bild: Kubernetes.io )

Die Komponenten der Kontrollebene

Die Kontrollebene eines Kubernetes-Clusters bilden die Master-Komponenten. Diese Elemente der Architektur zeichnen für administrative Entscheidungen mit `globaler´ Wirkung verantwortlich, wie zum Beispiel das Scheduling. Sie lassen sich auf jeder Maschine im Cluster ausführen. Der Einfachheit halber die Initialisierungsskripte starten Elemente der Kontrollebene gewöhnlich auf derselben Maschine und führen die Container der Anwendung woanders aus.

API-Server: Dieses Front-End der Kontrollebene von Kubernetes macht die API verfügbar; die Hauptimplementierung, kube-apiserver, skaliert horizontal im Einklang mit dem Bedarf

etcd: Dieser konsistente und hochverfügbare Schlüsselwertspeicher dient als persistenter Speicher für Daten des Cluster.

kube-scheduler: Diese Komponente der Steuerungsebene überwacht die Erstellung von Pods und wählt für sie einen Knoten zur Ausführung unter Einbezug von Kriterien wie die Ressourcenanforderungen der Workloads, Richtlinien für die Nutzung von Hard- und Software, Spezifikationen der Affinität und Anti-Affinität, Datenlokalität, Interferenz zwischen Workloads und Deadlines.

kube-controller-manager: Die Komponente der Kontrollebene, welche die verschiedenen Kontroller zur Steuerung von Knoten, Replikation von Pods, Endpoints, Services-Accounts und Token koordiniert

cloud-controller-manager: Diese Komponente führt Kontroller aus, welche mit der Cloud-Umgebung des Infrastrukturanbieters interagieren.

Master-Komponenten können auf jedem Computer im Cluster ausgeführt werden. Richten Sie jedoch der Einfachheit halber Skripts ein, die in der Regel alle Master-Komponenten auf demselben Computer starten und keine Benutzercontainer auf diesem Computer ausführen. Ein Beispiel für eine Multi-Master-VM-Konfiguration finden Sie unter Erstellen von Hochverfügbarkeits-Cluster.

Die Bestandteile eines Knotens

Eine Gruppe von Kubernetes-Komponenten läuft auf jedem Knoten, um die Lauffähigkeit der Pods zu gewährleisten und die Kubernetes-Runtime am Leben zu halten.

kubelet: Dieser Agent gewährleistet, dass in einem Pod "gesunde" Container unter der Kontrolle von Kubernetes laufen

kube-proxy: Dieser Netzwerkproxy läuft in jedem Knoten in einem Kubernetes-Cluster und wacht hier über die Netzwerkrichtlinien und kann sich hierzu die Paketfilterebene des Betriebssystems zunutze machen (sofern vorhanden und verfügbar).

Container Runtime: Die Container-Laufzeitumgebung von Kubernetes unterstützt neben „Docker“ auch „containerd“, „cri-o“, „rktlet“ und jede Implementierung des „Kubernetes CRI“ (Container Runtime Interface).

Die einzige Komponente der Kontrollebene, welche Remote-Dienste nach außen hin bereitstellt, ist der API-Server. Alle Kommunikationspfade vom Cluster zum Master-Knoten enden am API-Server.

In einer typischen Bereitstellung ist der API-Server so konfiguriert, dass er Remote-Verbindungen an einem sicheren HTTPS-Port (443) mit einer oder mehreren aktivierten Formen der Client-Authentifizierung überwacht. Eine oder mehrere Formen der Zugriffsautorisierung sollten aktiviert werden, insbesondere wenn anonyme Anfragen oder Token zum Zugriff auf Dienste zulässig sind.

Die Sicherheitsaspekte einer Kubernetes-Bereitstellung

Auf dem Weg vom Master (API-Server) zum Cluster gibt es zwei primäre Kommunikationspfade. Zum einen besteht die Möglichkeit im Verbindungsaufbau vom API-Server zum HTTPS-Endpoint des Kubelet-Prozesses, der auf jedem Knoten im Cluster ausgeführt wird. Die Standardkonfiguration macht stillschweigend die Annahme, dass Kubernetes in einem vertrauenswürdigen Netzwerk läuft.

Da der API-Server standardmäßig die Zertifikatsprüfung unterlässt, besteht bei diesem Setup die Gefahr einer MITM-Attacke (Man-in-the-Middle-Attacke) . Um diesen Angriffsvektor zu neutralisieren, kann der Administrator entweder die Zertifikatsprüfung einstellen oder SSL-Tunneling aktivieren.

  • Beim Einsatz von SSH-Tunneling initiiert der API-Server einen SSH-Tunnel zu jedem Knoten im Cluster (wobei er eine Verbindung zum SSH-Server herstellt, der Port 22 überwacht) und leitet den gesamten Datenverkehr, der für ein Kubelet, einen Knoten, einen Pod oder einen Dienst bestimmt ist, durch den Tunnel. Dieser Tunnel stellt sicher, dass der Datenverkehr nicht außerhalb des Netzwerks ausgesetzt wird, in dem die Knoten ausgeführt werden Letzteres ist eigentlich auch schon wieder veraltet; die Kubernetes-Community tüftelt an einer Ersatzlösung.
  • Der zweite Kommunikationspfad führt vom API-Server zu einem beliebigen Knoten, Pod oder Dienst über die Proxy-Funktionalität von Kubernetes. Standardmäßig erfolgt der Verbindungsaufbau unverschlüsselt ganz einfach via HTTP.
    Der Administrator kann zwar HTTPS konfigurieren, aber die Zertifikatsvalidierung findet dann trotzdem nicht statt. Diese Art des Verbindungsaufbaus eignet sich nicht zur Ausführung in nicht vertrauenswürdigen Netzen.

Die Add-ons

Mit zusätzlichen Addons lassen sich zusätzliche Features implementieren. Zu den empfehlenswerten Erweiterungen zählen DNS, Dashboard (eine Web-basierte Admin-Schnittstelle), Container Resource Monitoring und Logging auf Cluster-Ebene.

Die Version 1.0 von Kubernetes wurde im Juli 2015 veröffentlichtt. Nahezu zeitgleich kündigte Google die Gründung der Cloud Native Computing Foundation (CNCF) unter dem Dach der Linux Foundation an.Die Google-Entwickler übergaben das Kubernetes-Projekt der Stiftung, die seither die Sourcen von Kubernetes hostet.

*Das Autorenduo Anna Kobylinska und Filipe Pereira Martins arbeitet für McKinley Denali Inc. (USA).

Artikelfiles und Artikellinks

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de (ID: 46313703)