Kubernetes ist ein Open-Source-Container-Orchestrierungssystem, das zum Verwalten und Bereitstellen von Containeranwendungen verwendet wird. Es kann auf virtuellen oder physischen Maschinen ausgeführt oder als Dienst bei mehreren Cloud-Anbietern verwendet werden. Unternehmen aller Größen setzen Kubernetes weithin ein, das zum De-facto-Standard für die Container-Orchestrierung geworden ist.
In diesem Artikel werden wir uns ansehen, was ein kubernetes cluster ist. Anschließend werden wir uns die Komponenten des Masterknotens und der Workerknoten ansehen, aus denen ein K8s-Cluster besteht.
Was ist ein kubernetes cluster?
Ein kubernetes cluster ist eine Sammlung von Knoten, die containerisierte Anwendungen ausführen. Er automatisiert die Verteilung von Anwendungen in einem Cluster, verwaltet Skalierung und Failover für Anwendungen und bietet Bereitstellungsmuster und Dienste für die Verwaltung containerisierter Anwendungen.
Ein K8s-Cluster wird verwendet, um containerisierte Anwendungen für bessere Skalierbarkeit und Zuverlässigkeit zu orchestrieren, CI/CD-Praktiken zu optimieren und die Entwicklung und Bereitstellung Cloud-nativer Anwendungen in unterschiedlichen Umgebungen zu erleichtern.
Was ist ein Knoten in einem kubernetes cluster?
Man kann sich Knoten als einzelne Rechenressourcen vorstellen, sodass praktisch jede Gruppe von Rechenressourcen verwendet werden kann. Normalerweise bestehen Knoten aus einer Gruppe virtueller Maschinen, wenn die Plattform in der Cloud hinter dem Schleier eines PaaS-Angebots (Platform-as-a-Service) ausgeführt wird. Sie können auch auf serverlosen Engines wie Amazon Fargate ausgeführt werden. Wenn der kubernetes cluster vor Ort ausgeführt wird, können Knoten physische Maschinen sein. Sie können sogar einen K8s-Cluster auf einer Gruppe von Raspberry Pis ausführen!
Zum kubernetes cluster gehört auch eine Kontrollebene, die für die Verwaltung und Orchestrierung der Container über die Knoten hinweg sowie für die Aufrechterhaltung des gewünschten Zustands verantwortlich ist.
Wenn Sie eine einfache und effiziente Wartung Ihres K8s-Clusters wünschen, lesen Sie 15 Kubernetes Best Practices, die jeder Entwickler kennen sollte .
Unterschied zwischen kubernetes cluster und Knoten
Ein Kubernetes-Knoten ist eine einzelne Maschine innerhalb eines kubernetes cluster und ist für die Ausführung der Container verantwortlich, aus denen die im Cluster bereitgestellten Anwendungen bestehen. Ein K8s-Cluster enthält einen oder mehrere Kubernetes-Knoten.
Was sind die kubernetes clusterkomponenten?
Ein kubernetes cluster besteht aus zwei Arten von Knoten: Masterknoten und Workerknoten.
Masterknoten hosten die K8s-Steuerungsebenenkomponenten. Der Masterknoten enthält Konfigurations- und Statusdaten, die zur Aufrechterhaltung des gewünschten Status verwendet werden. Die Steuerungsebene hält die Kommunikation mit den Worker-Knoten aufrecht, um Container effizient zu planen. In der Produktion läuft die Steuerungsebene über mehrere Knoten, um Redundanz zu gewährleisten, falls einer ausfällt.
Worker-Knoten werden so genannt, weil sie Pods ausführen. Pods sind normalerweise einzelne Instanzen einer Anwendung. Container werden in Pods ausgeführt und Pods werden auf einem Knoten ausgeführt. Jeder Cluster enthält immer mindestens einen Worker-Knoten. Aus Redundanzgründen wird empfohlen, dass ein Cluster aus mindestens drei Worker-Knoten besteht.
Masterknotenkomponenten
- API-Server (kube-apiserver)
Die REST-API fungiert als Eingangstür zur Kontrollebene. Alle Anfragen für Änderungen am kubernetes cluster kommen über die API, ebenso wie alle Anfragen von Worker-Knoten. Wenn die Anfragen gültig sind, führt der API-Server sie aus. Die Kommunikation mit dem Cluster erfolgt entweder über die REST-API oder über Befehlszeilentools wie kubeadm oder kubectl.
- Planer (kube-scheduler)
Der Scheduler bestimmt, wo Ressourcen auf welchen Knoten innerhalb des K8s-Clusters bereitgestellt werden. Dies geschieht durch die Planung von Container-Pods über Knoten hinweg und trifft diese Entscheidungen auf der Grundlage der Überwachung der Ressourcennutzung. Er platziert die Ressourcen auf fehlerfreien Knoten, die die Anforderungen der Anwendung erfüllen können.
- Controller (kube-controller-manager)
Der Controller führt eine Reihe von Hintergrundprozessen aus und initiiert auch alle angeforderten Statusänderungen. Er stellt sicher, dass der Clusterstatus konsistent bleibt. Der Controller kann ausgefallene Knoten identifizieren und Maßnahmen ergreifen und führt bei Bedarf auch Jobs aus (Jobs sind einmalige Aufgaben). Wenn ein neuer Namespace erstellt wird, erstellt dieser Controller auch Standardkonten und API-Zugriffstoken.
- Etcd (Schlüssel-Wert-Speicher)
Konfigurationsdaten über den Status werden in einem Schlüssel-Wert-Speicher gespeichert, auf den alle Knoten im Cluster zugreifen können. Es handelt sich um eine kritische Komponente, die verteilt und fehlertolerant ist. Etcd kann ein Ziel für böswillige Akteure sein, da es eine effektive Kontrolle über den Cluster bietet und geschützt werden sollte.
- Cloud Controller Manager (Cloud-Controller-Manager)
Eine optionale Komponente, der Cloud Controller Manager, kann verwendet werden, um die K8s-API mit der API des Cloud-Anbieters zu verknüpfen. Nach der Verknüpfung kann der kubernetes cluster horizontal skaliert werden. Komponenten, die mit den Cloud-Anbietern interagieren, werden von denen getrennt, die nur mit der K8s-API interagieren, um die Leistung zu optimieren.
Worker-Knotenkomponenten
- Pods und Behälter
Worker-Knoten werden so genannt, weil sie Pods ausführen, die die Arbeit erledigen. Pods sind normalerweise einzelne Instanzen der Anwendung selbst. Container werden in Pods ausgeführt, Pods werden auf einem Knoten ausgeführt. Wenn im K8s-Cluster mehr Ressourcen zum Ausführen der Workloads benötigt werden, können dem Cluster weitere Knoten hinzugefügt werden.
- Kubelet
Auf jedem Worker-Knoten läuft eine kleine Anwendung namens kubelet, die die Kommunikation mit der Steuerebene ermöglicht. Wenn die Steuerebene Änderungen an den Worker-Knoten vornehmen muss, wird die Anforderung über den weitergeleitet kubelet.
- Kube-Proxy
Jeder Worker-Knoten führt außerdem eine Komponente zur Steuerung des Netzwerkbetriebs innerhalb und außerhalb des Clusters aus, die aufgerufen wird kube-proxy. Der Datenverkehr kann unabhängig oder über die Paketfilterschicht des Betriebssystems weitergeleitet werden. Sie fungiert als Lastenausgleich und leitet Anfragen von der Steuerebene an die richtigen Pods weiter.
Wie funktioniert ein kubernetes cluster?
Ein kubernetes cluster hat den gewünschten Zustand, der normalerweise durch die Verwendung mehrerer YAML- (oder JSON-)Dateien definiert wird.
Der gewünschte Zustand bedeutet, dass dem System keine spezifischen Einzelanweisungen gegeben werden, sondern der gewünschte Endzustand beschrieben wird und Kubernetes entscheidet, welche Befehle ausgegeben werden müssen, um das Endziel zu erreichen.
Die YAML-Dateien definieren beispielsweise, welche Pods ausgeführt werden sollen, wie viele Pods ausgeführt werden sollen und wie viele Ressourcen die Pods benötigen. Anfragen an einen K8s-Cluster werden über die K8s-API, kubectl über die Befehlszeile oder über die REST-API gestellt.
Sie können sich auch ansehen, wie Sie den Betrieb rund um den kubernetes cluster aufrechterhalten und wie Kubernetes in Spacelift integriert ist . Spacelift hilft Ihnen, die Komplexität und die Compliance-Herausforderungen bei der Verwendung von Kubernetes zu bewältigen. Es bringt einen GitOps-Flow mit, sodass Ihre Kubernetes-Bereitstellungen mit Ihren Kubernetes-Stacks synchronisiert werden und Pull Requests Ihnen eine Vorschau der geplanten Änderungen zeigen quality assurance.
Wie erstelle ich einen kubernetes cluster?
Das Erstellen eines kubernetes cluster kann eine anspruchsvolle Aufgabe sein, wenn Sie alle Komponenten manuell installieren möchten. Wenn Sie dies noch nie zuvor getan haben, empfiehlt es sich, einen der Installationsprozesse durchzuführen, um sich mit allen Komponenten vertraut zu machen.
Wenn Sie hingegen schnell loslegen möchten, ist Kind möglicherweise eine sehr einfache Lösung, die Sie auf Ihrem lokalen Computer oder einer VM verwenden können. Es verwendet Docker-Container, um Kubernetes-Knoten zu simulieren, sodass Sie mit einem einzigen Befehl einen KubernetesN Cluster erstellen und ausführen können. Darüber hinaus ist Kind mit vielen beliebten Kubernetes-Tools kompatibel , darunter kubectl und Helm, sodass es sich problemlos in vorhandenen Workflows verwenden lässt. Dafür stehen auch andere leichtgewichtige Tools zur Verfügung, wie Minikube oder K3s .
Wenn Sie einen Cloud-Anbieter wie AWS, Azure, GCP oder OCI verwenden, können Sie problemlos deren verwaltete Kubernetes-Dienste wie EKS , AKS , GKE und OKE nutzen , um in wenigen Minuten einen Kubernetes Cluster zu erstellen.
Kubernetes Cluster erstellen – Beispiel
Es gibt mehrere Möglichkeiten, einen K8s-Cluster zu erstellen:
- Verwendung des jeweiligen Cloud-Dienstes (Amazon EKS, Azure AKS, Google Kubernetes Engine usw.)
- Verwenden von kubeadm
- Minikubus
- Art
- K3s
- MicroK8s
- Rancher
Erstellen wir einen Kubernetes Cluster mit Kind (Kubernetes in Docker).
Zuerst müssen Sie sicherstellen, dass Docker und Golang auf Ihrem Computer installiert sind. Dann müssen Sie Docker starten und anschließend die folgenden Befehle ausführen:
In wenigen Sekunden ist Ihr K8s-Cluster bereit.
Wichtige Punkte
Das Verständnis der Komponenten, aus denen ein K8s-Cluster besteht, ist wichtig, um Ihnen die Grundlagen des K8s-Betriebs zu vermitteln. Wenn Sie wissen, was jede Komponente des Clusters tut, ist dies beim Betrieb, der Verwaltung und der Behebung aller Probleme, die beim Cluster auftreten können, hilfreich.
Und wenn Sie Spacelift noch nicht verwenden, melden Sie sich für eine kostenlose Testversion an .