Kubernetes Cluster sind ein grundlegender Baustein vieler moderner Cloud-Umgebungen. Auf hoher Ebene ist jeder Cluster eine Gruppe von Maschinen, die zusammenarbeiten, um Workloads verfügbar zu halten.
Lesen Sie weiter, um tiefer in die Funktionsweise von Kubernetes Clustern sowie deren Installation und Verwaltung einzutauchen.
Was ist ein Kubernetes Cluster?
Ein Kubernetes Cluster ist eine Gruppe von Knoten , die Workloads hosten. Der Cluster hostet auch Kubernetes selbst, d. h. er führt die Kubernetes-Steuerungssoftware aus.
Jeder Knoten ist eine unabhängige physische oder virtuelle Maschine. (Ein Cluster kann aus einer Mischung physischer und virtueller Maschinen bestehen, obwohl es üblicher ist, nur VMs oder nur physische Server zu verwenden.) Einige Knoten in einem Cluster fungieren als Master, d. h. sie hosten die Kubernetes-Steuerungssoftware, die andere Knoten und die darauf bereitgestellten Workloads verwaltet. Andere Knoten sind Arbeitsknoten, die Anwendungen hosten, die Administratoren über Kubernetes ausführen möchten.
Warum sind Kubernetes Cluster wichtig?
Cluster sind für die von Kubernetes bereitgestellte Funktionalität von zentraler Bedeutung.
Der Hauptzweck von Kubernetes besteht im Wesentlichen darin, eine zuverlässige, weitgehend automatisierte Möglichkeit zur Verwaltung von Anwendungen bereitzustellen, die gleichzeitig auf mehreren Servern bereitgestellt werden. Obwohl es also möglich ist, Kubernetes auf nur einem einzigen Server auszuführen (was bedeutet, dass Sie einen Cluster mit einem einzigen Knoten hätten), können Sie die volle Funktionalität nur dann wirklich nutzen, wenn Sie einen Cluster mit mehreren Knoten haben.
Mit Multi-Node-Clustern kann Kubernetes Workloads so planen, dass der Ressourcenverbrauch zwischen den Servern ausgeglichen ist. Außerdem kann Kubernetes Workloads auf einen anderen Knoten verschieben, falls ein Knoten ausfällt oder nicht mehr verfügbar ist.
Wie viele Knoten befinden sich in einem Cluster?
Die Gesamtzahl der in einem Cluster ausgeführten Knoten kann zwischen einem einzigen und bis zu 5.000 Knoten liegen (was derzeit die offizielle Gesamtzahl der Knoten darstellt, obwohl es in der Praxis schwierig werden kann, Knoten zuverlässig zu verwalten, wenn die Gesamtzahl etwa 500 überschreitet).
Einzelknotencluster werden normalerweise nur zu experimentellen Zwecken verwendet. Wenn Sie beispielsweise gerade erst mit Kubernetes beginnen und eine leichte Distribution wie Minikube verwenden , erstellen Sie normalerweise zunächst einen Einzelknotencluster.
Für eine Produktionsumgebung benötigen Sie jedoch mit ziemlicher Sicherheit mindestens mehrere Knoten in Ihrem Cluster, möglicherweise Hunderte oder Tausende. Die Gesamtzahl der Knoten, die Sie für einen Cluster erstellen sollten, hängt davon ab, wie viele Workloads Sie ausführen müssen. Bedenken Sie auch, wie viele Ressourcen diese Workloads erfordern und wie zuverlässig jeder Knoten ist.
So richten Sie einen Kubernetes Cluster ein
Der genaue Prozess zum Einrichten eines Kubernetes Clusters hängt davon ab, welche Kubernetes-Distribution Sie verwenden und wo sie bereitgestellt wird. Im Allgemeinen umfassen die Schritte jedoch:
- Erstellen Sie Ihre Knoten : Beginnen Sie mit dem Einrichten physischer Server oder virtueller Maschinen, die als Knoten dienen.
- Jeder Knoten muss mit einem Betriebssystem ausgestattet werden, in den meisten Fällen sollte es sich um eine Form von Linux handeln.
- Jeder Knoten erfordert außerdem eine Container-Laufzeitumgebung. Dabei handelt es sich um die Software, die Container ausführt (und die Ihnen im weiteren Sinne das Ausführen von Pods ermöglicht).
- Stellen Sie die Kubernetes-Steuerebene bereit : Stellen Sie auf Ihrem oder Ihren Masterknoten die Komponenten der Kubernetes-Steuerebene bereit – den API-Server, den Scheduler, den Etcd-Schlüssel-Wert-Speicher usw.
- Fügen Sie Worker-Knoten zu Ihrem Cluster hinzu : Fügen Sie Worker-Knoten zu Ihrem Cluster hinzu, indem Sie sie mit Ihrem Master-Knoten verbinden. Normalerweise tun Sie dies mit dem Befehl kubeadm join auf den Knoten, die Sie verbinden möchten.
Der einfachste Weg, einen Kubernetes Cluster zu installieren
Wenn diese Schritte einschüchternd klingen, dann deshalb, weil sie es auch sind. Das Einrichten eines produktionstauglichen Kubernetes Clusters ist selbst für erfahrene Administratoren eine Menge Arbeit.
Glücklicherweise gibt es jedoch Möglichkeiten, die Clustereinrichtung zu vereinfachen. Sie können entweder eine leichte Distribution verwenden, die die meisten Aufgaben zur Einrichtung von Knoten und Clustern automatisiert, oder Kubernetes mithilfe eines verwalteten Dienstes in der Cloud ausführen, der den Cluster automatisch für Sie erstellt.
Sehen wir uns beide Ansätze an.
Einrichten von leichten Kubernetes Clustern
Die meisten leichten Kubernetes-Distributionen wie Minikube oder MicroK8s erstellen automatisch Knoten für Sie und fügen sie einem Cluster hinzu.
Mit Minikube können Sie beispielsweise mit diesem Befehl einen Cluster erstellen:
Der Befehl erstellt und startet Ihren Cluster. Standardmäßig erstellt Minikube einen Einzelknotencluster. Je nachdem, welchen Minikube-Treiber Sie verwenden, wird der Knoten entweder als VM oder als dieselbe Maschine ausgeführt, auf der Sie Minikube ausführen.
Einrichten von Kubernetes Clustern in der Cloud
Die meisten cloudbasierten Kubernetes-Dienste – wie etwa Amazon Elastic Kubernetes Service, Azure Kubernetes Service und Google Kubernetes Engine – können mithilfe cloudbasierter VM-Instanzen automatisch Cluster für Sie einrichten.
Um beispielsweise einen Cluster in der Amazon-Cloud zu erstellen, führen Sie diesen Befehl mit Amazons Kubernetes CLI-Verwaltungstool eks aus :
Standardmäßig erstellt der Befehl einen Cluster mit zwei Knoten. Die Knoten sind EC2-Instanzen, die in der von Ihnen standardmäßig verwendeten AWS-Cloudregion ausgeführt werden.
Sie müssen die automatisierte Clustereinrichtung nicht in Verbindung mit Cloud-basierten Kubernetes-Diensten verwenden. In den meisten Fällen können Sie Knoten bei Bedarf manuell erstellen und verwalten. Die Nutzung der automatisierten Clustereinrichtung in der Cloud ist jedoch eine der einfachsten Möglichkeiten, einen Cluster schnell zum Laufen zu bringen. Der Nachteil besteht natürlich darin, dass Sie für die Cloud-Ressourcen bezahlen müssen, die Ihre Knoten verbrauchen.
Kubernetes mit mehreren Clustern
In seinen Anfängen wurde Kubernetes mit der Erwartung entwickelt, dass jede Umgebung nur einen Cluster umfassen würde.
Heute jedoch besteht ein zunehmendes Interesse an Multi-Cluster-Kubernetes-Setups . Bei Multi-Cluster-Kubernetes verwaltet eine einzige Steuerebene mehr als einen Cluster. Mit anderen Worten: Sie können unterschiedliche Servercluster betreiben, wobei jeder Cluster von den anderen isoliert ist, und sich gleichzeitig auf eine einzige Steuerebenensoftware verlassen, um sie alle zu verwalten.
Der Vorteil von Multiclusterumgebungen besteht darin, dass sie maximale Isolierung zwischen Workloads bieten. Sie minimieren das Risiko, dass ein Sicherheits- oder Stabilitätsproblem in einem Cluster auf die im anderen Cluster gehosteten Workloads übergreifen und diese stören könnte.
Darüber hinaus können Multi-Cluster-Setups die Verwaltungskomplexität für Organisationen vereinfachen, die über unterschiedliche Servercluster verfügen und deren Verwaltung zentralisieren möchten. Wenn Sie beispielsweise über mehrere Rechenzentren verfügen, können Sie jedes Rechenzentrum als eigenen Cluster betreiben und sie alle über eine einzige Steuerebene verwalten. Bei guter Umsetzung würde dieses Setup weniger Verwaltungsaufwand verursachen, als wenn Sie für jedes Rechenzentrum eine eigene Steuerebene bereitstellen und verwalten müssten.
Der Nachteil von Multi-Cluster-Kubernetes besteht jedoch darin, dass es wesentlich schwieriger einzurichten und zu verwalten ist als Single-Cluster-Konfigurationen. Insbesondere Multi-Cluster bringen zwei Hauptherausforderungen mit sich:
- Erstellen einer konsistenten Methode zur Verwaltung von Netzwerkressourcen für verschiedene Cluster. Dies ist besonders schwierig, wenn sich Ihre Cluster an verschiedenen physischen Standorten befinden und daher in völlig unterschiedlichen Netzwerken mit unterschiedlichen IP-Adressbereichen, Routen usw. betrieben werden.
- Einen Weg finden, die Daten der Steuerungsebene über mehrere Cluster hinweg synchron zu halten. Auch das ist besonders schwierig, wenn Sie Cluster an verschiedenen physischen Standorten haben, denn Netzwerklatenz kann es für die Steuerungsebenenkomponenten, die jeden Cluster verfolgen, schwierig machen, perfekt synchron zu bleiben – und selbst Unterschiede von nur Bruchteilen einer Sekunde können zu Problemen führen, wenn sie dazu führen, dass die Steuerungsebene sich über den tatsächlichen Zustand der Gesamtumgebung nicht mehr im Klaren ist.
Diese Herausforderungen können mit Tools wie Virtual Kubelet angemessen bewältigt werden . Allerdings erhöhen sie die Komplexität, die Kubernetes bereits innewohnt, noch zusätzlich. Aus diesem Grund sind Multi-Cluster-Setups nichts für schwache Nerven quality assurance.
Sofern Sie nicht unbedingt mehrere Cluster benötigen, ist es einfacher, mehrere Namespaces zu konfigurieren und diese zur Isolierung von Workloads zu verwenden. Namespaces sind in Kubernetes viel einfacher einzurichten und zu verwalten als mehrere Cluster.
Fazit
Es gibt viele Möglichkeiten, Cluster in Kubernetes einzurichten und zu verwalten. Wenn Sie neu bei Kubernetes sind und einfach nur experimentieren möchten, sollten Sie einen Einzelknotencluster auf Ihrem PC oder Laptop einrichten. Für Produktionsworkloads sollten Sie Ihre Clusterarchitektur und die Gesamtzahl der Knoten jedoch sorgfältig planen, basierend auf Ihren Workloadanforderungen.