Was ist ein Kubernetes-Cluster?
Ein Kubernetes (K8s)-Cluster ist eine Gruppe von Rechenknoten oder Arbeitscomputern, auf denen containerisierte Anwendungen ausgeführt werden. Containerisierung ist ein Softwarebereitstellungs- und Laufzeitprozess, bei dem der Code einer Anwendung mit allen Dateien und Bibliotheken gebündelt wird, die für die Ausführung in einer beliebigen Infrastruktur benötigt werden. Kubernetes ist eine Open-Source-Container-Orchestrierungssoftware, mit der Sie Container in großem Maßstab verwalten, koordinieren und planen können. Kubernetes platziert Container in Pods und führt sie auf Knoten aus. Ein Kubernetes-Cluster hat mindestens einen Hauptknoten, auf dem ein Container-Pod ausgeführt wird, und eine Steuerebene, die den Cluster verwaltet. Wenn Sie Kubernetes bereitstellen, führen Sie im Wesentlichen einen Kubernetes-Cluster aus.
Was sind Kubernetes-Grundlagen?
Um einen Kubernetes-Cluster zu verstehen, müssen Sie zunächst die Grundlagen der Containerisierung mit Kubernetes verstehen.
Ein Container ist eine einzelne Anwendung oder ein Microservice, der mit seinen Abhängigkeiten verpackt ist und als eigenständige Umgebung und Anwendung in einem ausgeführt werden kann. Moderne Anwendungen verwenden eine verteilte Microservices-Architektur, bei der jede Anwendung Hunderte oder sogar Tausende von diskreten Softwarekomponenten umfasst, die unabhängig voneinander ausgeführt werden. Jede Komponente (oder jeder Microservice) führt eine einzelne unabhängige Funktion aus, um die Modularität des Codes zu verbessern. Durch die Erstellung unabhängiger Container für jeden Dienst können Anwendungen auf einer Reihe von Computern bereitgestellt und verteilt werden. Sie können einzelne Microservice-Workloads und Rechenfunktionen hoch- oder herunterskalieren, um die Anwendungseffizienz zu maximieren.
Kubernetes ist eine Open-Source-Container-Orchestrierungssoftware, die die Verwaltung von Containern in großem Maßstab vereinfacht. Sie kann Container planen, ausführen, starten und herunterfahren und Verwaltungsfunktionen automatisieren. Entwickler profitieren von den Vorteilen der Containerisierung in großem Maßstab ohne den Verwaltungsaufwand.
Schauen wir uns als Nächstes einige Kernkonzepte von Kubernetes an.
Pod
Ein Pod ist die bereitstellbare Standardeinheit unter Kubernetes. Pods enthalten einen oder mehrere Container, und innerhalb des Pods teilen sich Container dieselben Systemressourcen wie Speicher und Netzwerk. Jeder Pod erhält eine eindeutige IP-Adresse.
Container innerhalb eines Pods sind nicht isoliert. Stellen Sie sich einen Pod als eine virtuelle Maschine (VM) vor, mit Containern, die Anwendungen ähneln, die auf der VM ausgeführt werden. Pods und Gruppen von Pods können organisiert werden, indem ihnen Attributbezeichnungen zugewiesen werden, z. B. die Bezeichnung „dev“ oder „prod“ für den Umgebungstyp.
Knoten
Ein Knoten ist eine Maschine, auf der Pods ausgeführt werden. Es kann ein physischer oder virtueller Server sein, z. B. eine Amazon-EC2-Instance. Zu den Komponenten eines Knotens gehören:
- Kubelet für Knoten- und Containermanagement
- Kube-Proxy für einen Netzwerk-Proxy
- Container-Laufzeit
Eine kompatible Container-Laufzeit muss auf dem Knoten installiert sein, um Container ausführen zu können. Kubernetes unterstützt mehrere Container-Laufzeiten, z. B. das Kubernetes Container Runtime Interface und den Container.
Replikatsatz und Bereitstellung
Ein Pod ist ein eigenständiges Artefakt, und wenn sein Knoten ausfällt, wird er nicht automatisch neu gestartet. Wenn ein oder mehrere Pods in einem Replikatsatz gruppiert sind, können Sie in Kubernetes Replikatgruppen festlegen, die immer knotenübergreifend ausgeführt werden. Dies ist entscheidend, um hoch- und herunterzuskalieren und die Kontinuität von Apps und Diensten sicherzustellen.
Eine Bereitstellung ist das Kubernetes-Management-Objekt für die Bereitstellung einer Anwendung sowie für die Aktualisierung oder das Zurücksetzen der App, ohne sie offline zu nehmen.
Dienst und Eingang
Verwenden Sie einen Kubernetes-Dienst, um einen Pod oder eine Gruppe von Pods im Netzwerk über einen Endpunkt für Interaktivität bereitzustellen, die den Standard-Netzwerkkommunikationsregeln entspricht. Für den Zugriff auf den öffentlichen Internetverkehr wird ein Kubernetes-Eingang an einen Dienst angehängt, der dann eine Verbindung zu einem oder mehreren Pods herstellt.
Was sind die Kubernetes-Cluster-Komponenten?
Ein Kubernetes-Cluster ist eine Gruppe von einem oder mehreren Knoten mit laufenden Pods. Innerhalb des Clusters verwaltet die Kubernetes-Steuerebene Knoten und Pods.
Zu den Komponenten der Steuerebene gehören:
- Kubernetes-API-Server (kube-apiserver), der die Kommunikation innerhalb und mit dem Cluster verwaltet
- Speicher (etcd) zum Aufzeichnen des persistenten Zustands des Clusters
Scheduler (Kube-Scheduler) zur Verwaltung von Knoten- und nachfolgenden Pod-Kubernetes-Ressourcen
Zu den weiteren Komponenten gehören ein Controller-Manager für die Knoten- und Jobsteuerung (Kube-Controller-Manager) und ein Cloud-Controller-Manager für die Integration in die anbieterspezifische Public-Cloud-Infrastruktur (Cloud-Controller-Manager).
Da Container keinen persistenten Speicher haben, müssen Anwendungen persistente Daten speichern. Pods benötigen möglicherweise auch Zugriff auf gemeinsam genutzte Daten. Persistente Volumes können einem Cluster als Speicher hinzugefügt werden, auf die innerhalb des Clusters ähnlich wie auf einem Knoten verwiesen wird.
Wie arbeiten Entwickler mit dem Kubernetes-Cluster?
Entwickler müssen Kubernetes zuerst herunterladen und auf einem Hauptknoten und seinen Worker-Knoten installieren. Anschließend können sie den Cluster auf physischen oder virtuellen Maschinen, lokal, in einem Rechenzentrum oder in der Cloud bereitstellen.
Installation
Für einen einfachen Start mit virtuellen Linux-Maschinen installieren Sie zunächst auf dem von Ihnen ausgewählten Hauptknoten (virtuelle Maschine):
- Docker oder eine andere Containerisierungssoftware.
- Repository-Schlüssel und Code-Repository von Kubernetes.
- kubeadm-Paket für Cluster-Bootstrapping.
- kubelet-Paket für die Knotenkoordination.
- kubectl-Paket für die Cluster-Befehlszeile.
Führen Sie den Vorgang auf jedem der anderen designierten Worker-Knoten durch.
Cluster-Initialisierung
Um einen Cluster zu initialisieren, führen Sie den Befehl kubeadm init auf dem Hauptknoten aus. Sie müssen eine Kube-Konfigurationsdatei hinzufügen und das Pod-Netzwerk bereitstellen, normalerweise mit einer YAML-Datei, bevor der Cluster betriebsbereit ist. Der Befehl kubeadm init gibt einen Join-Befehl aus, der kopiert und in die Befehlszeilen der anderen Worker-Knoten der virtuellen Maschine eingefügt werden kann. Dadurch kann jeder Worker-Knoten dem Cluster beitreten.
Mit Kubernetes arbeiten
Mit dem Kubernetes-UI-Dashboard können Bereitsteller Anwendungen im Cluster erstellen und bereitstellen. Führen Sie für ein Kubernetes-UI-Dashboard den Befehl kubectl proxy auf dem Mastercomputer aus. Die Benutzeroberfläche wird dann unter http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ verfügbar sein.
Was ist Kubernetes-Clustermanagement?
Kubernetes-Clustermanagement ist der Begriff für die Verwaltung mehrerer Kubernetes-Cluster in großem Maßstab. Stellen Sie sich als Beispiel eine Entwicklungsumgebung vor – das Team benötigt möglicherweise Test-, Entwicklungs- und Produktionscluster, die jeweils auf mehreren verteilten lokalen und cloudbasierten physischen und virtuellen Maschinen ausgeführt werden.
Um mehrere verschiedene Clustertypen zusammen zu verwalten, müssen Sie in der Lage sein, Clustervorgänge wie Erstellung und Zerstörung, In-Situ-Updates, Wartung, Neukonfiguration, Sicherheit, Cluster-Datenberichterstattung usw. durchzuführen. Multi-Cluster-Management kann durch eine Kombination aus Kubernetes-Diensten, speziellen Tools, Konfigurationen und Best Practices erreicht werden.
Wie kann AWS Ihnen bei Ihren Kubernetes-Cluster-Anforderungen helfen?
AWS bietet Cloud-Dienste zur Konfiguration, Ausführung und Verwaltung Ihrer Kubernetes-Cluster:
- Amazon Elastic Compute Cloud (EC2) hilft Ihnen bei der Bereitstellung und Ausführung von Kubernetes auf Instance-Typen Ihrer Wahl.
- Amazon Elastic Kubernetes Service (EKS) hilft Ihnen beim Starten, Ausführen und Skalieren von Kubernetes – ohne dass Sie Master-Instances mit einer Steuerebene usw. bereitstellen oder verwalten müssen. EKS enthält Cluster-Management-Tools und nützliche Integrationen mit AWS-Netzwerk- und Sicherheitsdiensten.
Beginnen Sie mit Kubernetes-Clustern in AWS, indem Sie noch heute ein kostenloses Konto erstellen.
Nächste Schritte in AWS
Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.
Starten Sie mit der Entwicklung in der AWS-Managementkonsole.