Kubernetes Cluster
Kubernetes ist ein beliebtes System zur Verwaltung von Containern. Eine der wichtigsten Einheiten im gesamten Kubernetes-System bilden sogenannte Cluster, die bei jeder Verwendung von Kubernetes zum Einsatz kommen.
Die ideale Plattform für performante und hochskalierbare Container-Anwendungen. Umfassend ins IONOS Cloud Ökosystem integriert und rund um die Uhr professionell betreut.
Was ist ein Kubernetes Cluster?
Bei Clustern handelt es sich im Allgemeinen um einen Verbund von Rechnern, der nach außen hin in sich geschlossen erscheint. Bei Kubernetes werden statt physischen Rechnern mehrere Knoten zu Clustern zusammengefasst. Die Knoten, die auch Nodes genannt werden, sind entweder virtuelle oder physische Maschinen.
Auf den Kubernetes Clustern werden die einzelnen Anwendungen ausgeführt. Somit handelt es sich bei Kubernetes Clustern um die höchste Ebene in der Kubernetes-Hierarchie.
Anwendungsbereiche von Kubernetes Clustern
Cluster sind ein wichtiger Bestandteil, um die Vorteile von Kubernetes nutzen zu können. Erst die Cluster ermöglichen es Ihnen, Ihre Anwendungen bereitzustellen, ohne diese an konkrete Maschinen zu binden. Sie dienen also vor allem dazu, Ihre Container zu abstrahieren und somit rechnerübergreifend auszuführen. Dabei sind sie nicht an ein bestimmtes Betriebssystem gebunden und daher hochgradig flexibel.
Cluster eignen sich nicht nur hervorragend für das Deployment Ihrer gesamten Anwendungen, sondern auch für die Verwendung von Microservices. Damit bereitgestellte Anwendungen können dank Kubernetes miteinander kommunizieren. Diese Methode des Deployments garantiert eine hohe Skalierbarkeit, sodass Sie Ihre Ressourcennutzung jederzeit bestmöglich anpassen können.
Cluster lassen sich außerdem dazu nutzen, Continuous-Integration- oder Continuous-Delivery-Jobs zu betreiben.
Mit IONOS Managed Kubernetes erhalten Sie einen perfekt ins IONOS-Ökosystem integrierten Kubernetes Cluster.
Woraus besteht ein Kubernetes Cluster?
Ein Kubernetes Cluster besteht aus einer Steuereinheit, die auch Master-Knoten genannt wird, und einem oder mehreren Worker-Knoten.
Master-Knoten
Der Master-Knoten bildet die Grundlage des gesamten Clusters. Er ist für die Verwaltung des gesamten Clusters zuständig. Dabei kümmert er sich maßgeblich um den Zustand des Clusters, indem er beispielsweise bestimmt, welche Anwendung wann ausgeführt wird. Die Steuereinheit wiederum teilt sich in verschiedene Komponenten auf:
- API-Server
- Scheduler
- Controller Manager
- etcd
API-Server
Der API-Server ist sozusagen das Frontend des Master-Knotens und koordiniert die Kommunikation mit dem Kubernetes Cluster. Über die Schnittstelle wird z. B. der Zustand des Clusters definiert. Eine Interaktion mit der Kubernetes-API ist entweder über die Kommandozeile oder über das User Interface in der Google Cloud Console möglich.
Scheduler
Der Scheduler kümmert sich um die Verteilung von Containern anhand der zur Verfügung stehenden Ressourcen. Er stellt sicher, dass alle Pods (Containergruppen) einem Knoten zugeordnet sind und somit ausgeführt werden können.
Controller Manager
Mit dem Controller Manager werden die verschiedenen Controller, die im Grunde nichts anderes sind als Prozesse, koordiniert. So wird u. a. sichergestellt, dass bei Ausfällen einzelner Knoten angemessen reagiert wird. Allgemeiner gesprochen kümmert sich der Controller Manager darum, den aktuellen Zustand eines Clusters zu jeder Zeit an den gewünschten Zustand anzupassen.
etcd
Bei etcd handelt es sich um eine Komponente der Steuereinheit, die alle wichtigen Clusterdaten speichert. Somit kann etcd als Backupspeicher für Kubernetes angesehen werden.
Worker-Knoten
Jedes Cluster hat mindestens einen, in den meisten Fällen aber gleich mehrere Worker-Knoten. Diese führen die Aufgaben und Anwendungen aus, die ihnen von der Steuereinheit zugeteilt werden. Die Worker-Knoten umfassen zwei Komponenten:
- Kubelet
- Kube-Proxy
Kubelet
Kubelet ist eine Komponente von Worker-Knoten, die sicherstellt, dass jeder Container in einem Pod ausgeführt wird. Hierzu interagiert Kubelet mit der Docker-Engine, einem Programm zur Containererstellung und -verwaltung.
Kube-Proxy
Mithilfe der Kube-Proxy wird sichergestellt, dass Netzwerkregeln eingehalten werden. Außerdem ist die Komponente dafür verantwortlich, eine Verbindungsweiterleitung durchzuführen.
Erstellen von Kubernetes Clustern
Ein Kubernetes Cluster kann entweder auf virtuellen oder physischen Rechnern bereitgestellt werden. Um eigene Cluster zu erstellen, gibt es verschiedene Möglichkeiten.
Wie Sie Kubernetes installieren und mit Clustern in Kubernetes arbeiten, erfahren Sie detailliert in unseren Kubernetes Tutorial.
Minikube
Zum Erstellen eines einfachen Clusters mit einem Worker-Knoten kann Minikube verwendet werden. Hierbei handelt es sich um ein Tool, um Kubernetes lokal auf dem eigenen Rechner auszuführen. Es kann auf allen gängigen Betriebssystemen installiert werden. Um zu überprüfen, ob Ihre Installation von Minikube erfolgreich war, können Sie im Terminal folgenden Befehl eingeben:
minikube version
Mit folgender Anweisung starten Sie Minikube:
minikube start
Nachdem Sie diesen Befehl ausgeführt haben, startet Minikube eine virtuelle Maschine. In dieser läuft automatisch ein Cluster. Um mit Kubernetes zu interagieren, können Sie die Kubernetes Commandline benutzen. Ob diese installiert ist, erfahren Sie mit folgendem Terminalbefehl:
kubectl version
Die Details Ihres Clusters können Sie sich mit
kubectl cluster-info
anzeigen lassen. Auch die einzelnen Knoten, auf denen Ihre Anwendungen laufen können, können Sie direkt im Terminal einsehen:
kubectl get nodes
Kind
Möchten Sie ein Kubernetes Cluster mit mehr als einem Knoten erstellen, können Sie hierfür das Tool kind nutzen. Auch kind ist für alle gängigen Betriebssysteme erhältlich. Die Installation erfolgt am einfachsten mittels Paketmanager. In den hier gezeigten Beispielen wird choco für Windows verwendet:
choco install kind
Für einen Cluster mit mehreren Worker-Knoten erstellen Sie nun eine yaml-Konfigurationsdatei in einem beliebigen Verzeichnis. In dieser Datei definieren Sie den Aufbau Ihres Clusters. Eine Konfigurationsdatei für ein Kubernetes Cluster mit einem Master- und zwei Worker-Knoten kann beispielsweise so aussehen:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
Im Anschluss können Sie ein Kubernetes Cluster gemäß der von Ihnen gewählten Konfiguration mit folgendem Befehl erstellen:
kind create cluster --config beispieldatei.yaml